翻翻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) 为每 ...
随机推荐
- 鹦鹉学舌1——C语言初学者百题大战之三
#include<stdio.h> int main() { int a; scanf("%d",&a); printf("%d",a-a+ ...
- poj 1654:Area 区域 ---- 叉积(求多边形面积)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19398 Accepted: 5311 利用叉积求多边形面 ...
- 原生js实现Ajax请求
总的来说,Ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个网页的情况下,异步请求数据并刷新页面.举一个小的例子:Goole搜索页面.当用户在输入框输入关键字的时候,JavaScript ...
- Codeforces Gym 100269F Flight Boarding Optimization 树状数组维护dp
Flight Boarding Optimization 题目连接: http://codeforces.com/gym/100269/attachments Description Peter is ...
- iOS 常用工具库LFKit功能介绍
简介:LFKit包含了平时常用的category,封装的常用组件,一些工具类. 需要LFKit中所有自定义控件的pod 'LFKit/Component' 需要LFKit中所有category的pod ...
- 解决kylin报错:java.lang.IllegalStateException
一个kylin build job执行到第三步Extract Fact Table Distinct Columns时报错: 2017-05-24 20:04:07,930 ERROR [pool-9 ...
- phaser框架制作游戏的例子,加上自己的注释
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [转]sql server transaction
本文转自: http://www.2cto.com/database/201208/146734.html sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是 ...
- [转]Working with Parameters and Return Codes in the Execute SQL Task
本文转自:http://msdn.microsoft.com/zh-cn/magazine/cc280502(en-us,SQL.100).aspx SQL statements and stored ...
- RenderMonkey 练习 第二天 【opengl 光照模型】
光照模型 3D渲染中, 物体表面的光照计算公式为: I = 环境光(Iambient) + 漫反射光(Idiffuse) + 镜面高光(Ispecular); 其中,环境光(ambient)计算公式为 ...