欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android PraiseTextView实现朋友圈点赞功能

程序员文章站 2024-02-16 19:51:40
praisetextview 说明 我是将朋友圈分成了几个独立模块单独自定义的view,通过回调完成交互,耦合性算是非常低了,主要有以下及部分: 1.评论布局(自定义...

praisetextview

说明

我是将朋友圈分成了几个独立模块单独自定义的view,通过回调完成交互,耦合性算是非常低了,主要有以下及部分:

1.评论布局(自定义textview)

commentlisttextview

lu_pinglunlayout

2.点赞布局(原理和评论的自定义textview一样,都是用的spannablestring)

praisetextview

3.图片列表(出门右转,理论上没有数量限制,和listview配合使用也很好,缓存也自己处理了)

multiimageviewlayout

我也是找第三方例子不好找,于是自己写了一个,我和同事还打算做一套im系统,app和后台都要做,我们自己定义sdk,我们还要封装h5,类似hbuilder如果有什么问题,可以联系我。

全是跳转到github上的链接,源码也在github上

示例

Android PraiseTextView实现朋友圈点赞功能
Android PraiseTextView实现朋友圈点赞功能

主要方法

 mpraisetextview.setdata (mpraiseinfos);//设置数据
 mpraisetextview.setnametextcolor (color.blue);//设置名字字体颜色
 mpraisetextview.seticon (r.drawable.emoji_1f0cf);//设置图标
 mpraisetextview.setmiddlestr (",");//设置分割文本
 mpraisetextview.seticonsize (new rect (0,0,100,100));//设置图标大小,默认与字号匹配
 mpraisetextview.setonpraiselistener()//设置监听

onclick (int position, praisetextview.praiseinfo mpraiseinfo)

position是第几个点赞的人,minfo是这条点赞的信息

onotherclick

内部处理了点击文字会触发两个回调的问题,这个是点击非文字或者没有单独定义点击事件的回调

布局

<?xml version="1.0" encoding="utf-8"?>
<linearlayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:paddingbottom="@dimen/activity_vertical_margin"
 android:paddingleft="@dimen/activity_horizontal_margin"
 android:paddingright="@dimen/activity_horizontal_margin"
 android:paddingtop="@dimen/activity_vertical_margin"
 tools:context="com.lujianchao.praisetextview.mainactivity">

 <com.lujianchao.praisetextview.praisetextview
 android:layout_width="match_parent"
 android:id="@+id/praisetextview"
 android:layout_height="wrap_content"
 />

 <textview
 android:id="@+id/log"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:scrollbars="vertical"/>
</linearlayout>

代码

public class mainactivity extends appcompatactivity {
 private praisetextview mpraisetextview;
 private textview mtextview;

 @override
 protected void oncreate (bundle savedinstancestate) {
 super.oncreate (savedinstancestate);
 setcontentview (r.layout.activity_main);
 mpraisetextview = (praisetextview) findviewbyid (r.id.praisetextview);
 mtextview = (textview) findviewbyid (r.id.log);
 mtextview.setmovementmethod (scrollingmovementmethod.getinstance ());


 list<praisetextview.praiseinfo> mpraiseinfos = new arraylist<> ();
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (111).setnickname ("张三").setlogo ("http://lujianchao.com/images/headimg/1.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (222).setnickname ("张四").setlogo ("http://lujianchao.com/images/headimg/2.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (333).setnickname ("张五").setlogo ("http://lujianchao.com/images/headimg/3.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (444).setnickname ("张六").setlogo ("http://lujianchao.com/images/headimg/4.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (555).setnickname ("赵四").setlogo ("http://lujianchao.com/images/headimg/5.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (666).setnickname ("赵三").setlogo ("http://lujianchao.com/images/headimg/6.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (777).setnickname ("李大").setlogo ("http://lujianchao.com/images/headimg/7.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (888).setnickname ("李二").setlogo ("http://lujianchao.com/images/headimg/8.jpg"));
 mpraiseinfos.add (new praisetextview.praiseinfo ().setid (999).setnickname ("李三").setlogo ("http://lujianchao.com/images/headimg/9.jpg"));
 mpraisetextview.setdata (mpraiseinfos);//设置数据
 mpraisetextview.setnametextcolor (color.blue);//设置名字字体颜色
 mpraisetextview.seticon (r.drawable.emoji_1f0cf);//设置图标
 mpraisetextview.setmiddlestr (",");//设置分割文本
 mpraisetextview.seticonsize (new rect (0,0,100,100));//设置图标大小,默认与字号匹配
 mpraisetextview.setonpraiselistener (new praisetextview.onpraiseclicklistener () {
  @override
  public void onclick (final int position, final praisetextview.praiseinfo mpraiseinfo) {
   mtextview.append ("position = [" + position + "], mpraiseinfo = [" + mpraiseinfo + "]"+"\r\n");
  }

  @override
  public void onotherclick () {
  mtextview.append ("onotherclick"+"\r\n");
  }
 });
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。