文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android PraiseTextView实现朋友圈点赞功能

2022-06-06 04:32

关注

PraiseTextView

说明

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

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

CommentListTextView

Lu_PingLunLayout

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

PraiseTextView

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

MultiImageViewLayout

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

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

示例


主要方法


 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");
  }
 });
 }
}
您可能感兴趣的文章:简单实用的Android UI微博动态点赞效果Android 仿微信朋友圈点赞和评论弹出框功能Android项目开发 教你实现Periscope点赞效果Android中Listview点赞功能的实现Android实现点赞动画(27)Android中使用PopupWindow 仿微信点赞和评论弹出Android Listview点赞问题关于图片重复问题Android实现朋友圈点赞列表Android高级UI特效仿直播点赞动画效果Android控件FlowLikeView实现点赞动画


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯