翻翻git之---实现QQ空间点赞部分实现的自己定义控件 EasyLikeArea
转载请注明出处:王亟亟的大牛之路
昨天在家里弄鱼的事没上班,也就没写东西。决定今天早上补一篇,正好看到了
Easy like area in the circle of friends or QQ qzone (。>﹏<。)
这个标题,就下了下代码研习一下。认为不错就分享给大家。
效果图:(这熟悉的icon,大家一目了然,干妹子的作者那位,名字叫啥我还真叫不出抱歉哈。)
作者git:https://github.com/CaMnter
效果非常明显,假设你想在自己的项目中要相似的效果,EasyLikeArea是你不错的选择。
让我们来看看怎么用的,由于今天不打算把源代码扣出来又一次打包。所以就所有贴在这里了!
How to use?
Gradle:
dependencies {
compile 'com.camnter.easylikearea:easylikearea:1.3'
}
Eclipse
Copy下这2个类。然后把自己定义的XML也放进来就好
XML部分看这里
<resources>
<declare-styleable name="EasyLikeImageView">
<attr name="easyLikeImageType">
<enum name="round" value="2601" />
<enum name="circle" value="2602" />
</attr>
<attr name="easyLikeImageBorderRadius" format="dimension" />
</declare-styleable>
<declare-styleable name="EasyLikeArea">
<attr name="easyLikeAreaLikeSpacing" format="dimension" />
<attr name="easyLikeAreaOmitSpacing" format="dimension" />
<attr name="easyLikeAreaOmitCenter" format="boolean" />
</declare-styleable>
</resources>
OK,我们来看看怎样使用的
<com.camnter.easylikearea.EasyLikeArea
android:id="@+id/topic_ela"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/topic_content_bottom_v"
android:background="@color/white"
android:paddingBottom="10dp"
android:paddingLeft="12.5dp"
android:paddingRight="12.5dp"
android:paddingTop="10dp"
app:easyLikeAreaLikeSpacing="5dp"
app:easyLikeAreaOmitCenter="true"
app:easyLikeAreaOmitSpacing="8dp" />
高度啊,位置啊,颜色啊等一系列就不解释了,来说下这3个自己定义标签
一个代表每个小图片之间的间距,一个代表是否居中。一个代表最右側区域到左側那些小图的间距(非小图区域的大小。样例中“….10赞过”这一部分)
详细的实现我大致描写叙述下吧。就是一个大的ViewGroup,然后里面嵌套了各种小图。然后一排排列好,多余部分也就不显示了。里面小图是作者的一个自己定义控件EasyLikeImageView(有圆的,方的)
上面把XML引入部分说了,这里说下Activity里的操作
绑ID那一圈不说了,直接讲重要步骤
先是初始化EasyLikeImageView。然后给他Set个图片。代表赞了之后出现的头像。
//设置大小
EasyLikeImageView iv = new EasyLikeImageView(this);
iv.setLayoutParams(new ViewGroup.LayoutParams(this.dp2px(36), this.dp2px(36)));
//设置图片
this.addIv.setImageResource(R.mipmap.ic_camnter);
然后是把所有的子控件都塞到试图组里去
for (int idRes : Constant.AVATARS) {
EasyLikeImageView iv = this.createEasyLikeImageView();
GlideUtils.displayNative(iv, idRes);
this.topicEla.addView(iv);
}
再接下来绘制右側那个”…..9人赞过部分”
//获取布局内容,然后给TextView设置文字内容
View omitView = LayoutInflater.from(this).inflate(R.layout.view_omit_style_topic, null);
this.omitTv = (TextView) omitView.findViewById(R.id.topic_omit_tv);
this.omitTv.setText(this.getString(this.getOmitVieStringFormatId(), count));
//加入到视图组里去
this.topicEla.setOmitView(omitView);
然后依据用户的点击推断来决定是否载入我们前面绘制的EasyLikeImageView空间
//是否被加入
if (!added) {
//加入操作
this.topicEla.addView(this.addIv);
this.added = true;
this.likeTv.setTextColor(likeAddedColor);
this.omitTv.setText(this.getString(this.getOmitVieStringFormatId(),
Constant.AVATARS.length + 1));
} else {
//移除操作
this.topicEla.removeView(this.addIv);
this.added = false;
this.likeTv.setTextColor(likeColor);
this.omitTv.setText(this.getString(this.getOmitVieStringFormatId(),
Constant.AVATARS.length));
}
使用起来还算简单,仅仅要对你塞进去的图片加以设置就好
源代码地址:https://github.com/CaMnter/EasyLikeArea/archive/master.zip
翻翻git之---实现QQ空间点赞部分实现的自己定义控件 EasyLikeArea的更多相关文章
- iPad开发--QQ空间,处理横竖屏布局,实现子控件中的代理
一.主界面横竖屏效果图 二.主界面加载, 初始化Dock(红色框的控件),判断程序启动时的屏幕方向.调用自己- (void)transitionToLandScape:(BOOL)isLandScap ...
- 用Python登录好友QQ空间点赞
记得之前跟我女票说过,说要帮她空间点赞,点到999就不点了.刚开始还能天天记得,但是后来事情一多,就难免会忘记,前两天点赞的时候忽然觉得这样好枯燥啊,正好也在学Python,就在想能不能有什么方法能自 ...
- QQ空间点赞代码
jQuery("a.qz_like_btn_v3[data-clicklog='like']").each(function(index,item){ console.log(it ...
- C# 13行代码带你模拟登录QQ空间
最近想做一个QQ空间点赞的小工具,于是晚上下班回来就开始分析PC版的QQ空间,打开Chrome,切换到Network,然后输入账号密码,然后点击登录... 然后,我曹....一堆请求就开始了....搞 ...
- Atitit qzone qq空间博客自动点赞与评论工具的设计与实现
Atitit qzone qq空间博客自动点赞与评论工具的设计与实现 Qzone发送评论的原理 首先,有个a标签, <a class="c_tx3" href="j ...
- QQ空间动态内容,好友信息,点赞爬虫脚本
一.安装基础的软件包: 1.准备好火狐浏览器,并下载geckodriver,将geckodriver加入到环境变量:下载geckodriver的地址:https://pan.baidu.com/s/1 ...
- QQ空间自动点赞js脚本
这是很久前写的脚本了,在浏览器打开QQ空间,并在控制台输入代码就可 时间间隔最好开大点,不然容易被暂时冻结账号 function autoLike() { var list=document.getE ...
- 手机QQ空间自动点赞登录
学以致用~使用 Appium 模拟人类操控手机行为 V2.0在手机上运行,目前实现以下功能: 1.小黑屋模式,一分钟内给好友发100条消息然后进了好友的小黑屋 2.定时发消息提醒对象多喝热水~ 3.对 ...
- QQ空间自动点赞js代码
1.jQuery().each(): each() 方法为每个匹配元素规定要运行的函数. 提示:返回 false 可用于及早停止循环. 函数原型: function(index,element) 为每 ...
随机推荐
- js流程控制与函数
流程控制 1.条件语句 分支结构 单向分支 if (条件表达式){ code... } 双向分支 if (条件表达式){ code... }else{ code... } 多向分支 if (条件表达式 ...
- Ubuntu 16.04安装OpenVPN客户端GUI
说明:一般来说OpenVPN在Linux下都是基于命令行的,而Ubuntu可以通过安装扩展放在网络连接上实现GUI操作. 安装: sudo apt-get install openvpn sudo a ...
- winform listview默认第一项光标选中
if (this.lsvSortingHeadList.Items.Count > 0) { this.lsvSortingHeadList.Focus(); this.lsvSortingHe ...
- subline text 常用插件
C语言 Alignment c Improved cool format doc Blocker cTags AllAutoComplete wakatime 精确统计你再 ...
- sourceinsight常用快捷键
Alt+l 激活语法窗口 ,搜索语法(当前打开文件的函数.宏定义搜索输入区域), Alt+, Alt+. 分别表示后退工作区.前进工作区 shift+F5 标记一个单词 shift ...
- Setup JIRA Service Desk 3.9.2 on Oracle Linux 6.8
OS Oracle Linux 6.8 V138414-01.iso Database mysql5.6.30 MySQL-5.6.30-1.el6.x86_64.rpm-bundle.tar JIR ...
- IIS整合tomcat
IIS6.0+Tomcat7.0整合总结 (一) 为什么要把IIS.Tomcat整合到一起? 假如你遇到这种情况,你开发了一个javaweb项目要部署到服务器上,但是这个服务器上已经部署了asp. ...
- JavaScript 创建类/对象的几种方式
在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...
- Oracle之数据库安全
密码破解,大部分其实是通过枚举的方式,列出可能的密码,然后逐个尝试,直到找到真正的密码,有时也叫暴力破解.接下来,我们将举几个密码破解的例子. n 密码破解例1--- OrakelCrackert ...
- http://blog.csdn.net/a9529lty/article/details/6454145
http://blog.csdn.net/a9529lty/article/details/6454145