天天看点

Android QQ空间说说回复功能简介 补充

转自:http://blog.csdn.net/guijiaoba/article/details/47287697

最近项目里面有很多关于textview的样式问题,比如一些字体设置了背景色,加粗,下划线,中划线等。

下面以qq空间中说说的回复进行实例讲解。

Android QQ空间说说回复功能简介 补充

由于mac上软件比较难用,没有到qq的apk里面去扣一些表情过来,暂时拿默认的图片作为一个表情。

上面图片的中实例表示,“今天去星巴克喝咖啡了”表示一条说说,下面有三条留言是对主人“流水不腐”评论,同时评论最后还加了一个表情。

下面简单说下技术要点: 

1、一般情况下,思路是这样的,一条评论是一行,可以是线性布局搞定,同时对用户名称和楼主的名称添加蓝色,如果有表情,那么则添加imageview表示,这个在这里不做实现和分析,原因是因为,假如评论的条数太大,则效率是一个很大的问题。 

2、、还有一些情况就是一条评论,单独作为一个textview,使用android 提供的spannablestring进行实现。

下面就上面的分析的思路,对方法二进行代码实现,代码如下

这是一个fragment,布局里面只有一个textview,textview没有使用findviewbyid进行初始化,使用的是开源工具butterknife。

然后就是一次赋值,每次评论玩后,进行回车。 

string text = string.format(“%s回复%s:%sicon\n”, name, host, comment); 

评论的内容是这样的,第一个参数表示用户名,第二个表示楼主,第三个表示内容,内容后面有个icon,我在这里只是对表情协议做简单的处理,实际上每个应用的对应的表情协议都是不一样的,使用特殊的字符串进行替换。

以上就是一个qq空间的回复功能的大致技术思路。

由于android对spannablestring设计的不太友好,所以本人对spannablestring进行的二次封装,叫做textstyleplus,下面是github地址,欢迎各位前来讨论,里面有个相关的代码和demo,同时还对imagespan做了扩展,一般情况下,imagespan是替换的,如上面所示,字符串icon是被一个图片替换的,但是有些情况下,需要显示一个自定义的shape背景,那么就比较难搞。 

textstyleplus

下面是对上面的qq空间回复功能,使用textstyleplus进行实现。

代码比较简单易懂,就是对回复的内容进行拼装,类似于使用stringbuffer一样,当最好拼装完成好后,直接传给textview进行显示,同时扩展了点击事件,当点击某一个用户的名字时,会弹出一个toast,如下所示。

Android QQ空间说说回复功能简介 补充

至此,本文基本技术,如需代码示例,请访问https://github.com/liushuixiaoxia/textstyleplus ,项目里面共有三个子项目,libary表示textstyleplus的库,app是对libary的demo,qqcomment是qq空间回复的功能实现。

继续阅读