翻翻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) 为每 ...
随机推荐
- JVM入门——JVM内存结构
一.java代码编译执行过程 1.源码编译:通过Java源码编译器将Java代码编译成JVM字节码(.class文件) 2.类加载:通过ClassLoader及其子类来完成JVM的类加载 3.类执行: ...
- Problem G: 零起点学算法106——首字母变大写
#include<stdio.h> #include<string.h> int main(void) { ]; int i,k; while(gets(a)!=NULL) { ...
- Highcharts做统计图。
<script> $(function () { var areasplineData = [[1447916401000,3],[1447918201000,4]]; var typeR ...
- 【mysql】更新“”空字符串为NULL
mysql中NULL和“”是完全不同的概念,因此出现了“”导致NULL不可查的问题出现,那怎么能将一个字段设置为NULL呢? update goods_type gt set gt.parent_ui ...
- MFC获取纸张大小
BOOL CPrintView::GetPageSize(CSize &nRetVal) // CPrintView 是自己创建的类 { PRINTDLG FA ...
- ATL7窗口类详细剖析
前言: ATL是微软继MFC之后提供的一套C++模板类库,小巧.精妙.效率极高.它的主要作用是为我们编写COM/DOM/COM+程序提供了丰富的支持.但是ATL只能写COM么?我以前只是MFC程序员的 ...
- Android内存优化8 内存检测工具2 LeakCanary——直白的展现Android中的内存泄露
之前碰到的OOM问题,终于很直白的呈现在我的眼前:我尝试了MAT,但是发现不怎么会用.直到今天终于发现了这个新工具: 当我们的App中存在内存泄露时会在通知栏弹出通知: 当点击该通知时,会跳转到具体的 ...
- CorelDRAW和Illustrator比较, 9 CorelDRAW Graphics Alternatives
至于要不要学Illustrator,完全凭个人意愿.如果你精通Coreldraw,学不学都一样.因为二者几乎可以完全替代. CDR:是一个纯图形设计软件.排版比其他二个软件好用. 一般来讲CDR更适合 ...
- Shell学习:read的选项及用法
转摘: http://kb.cnblogs.com/a/2255702/ 1. Read的一些选项 Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项. -a : ...
- unity shader 编译时间过长
去掉opengles2.0能省一半时间 换ssd Compiled shader 'Shader Forge/Scenes_Ground_Standard_M' in 315.51s gles ...