最近在做朋友圈的项目,所以写一个Android仿朋友圈点赞和评论功能Demo,代码就是简单实现了一下功能,没有做优化,凑合看。

图文排列是用的RecyclerView实现的,弹窗效果是用的自定义的PopupWindow,点赞应该是在本地请求数据库,设置一个flag,获取当前用户的id后,带着id向服务器post一个flag,评论就比较简单了,也是获取当前朋友id(或者昵称),带着内容,向服务器post

贴代码:

package com.example.lenovo.dianzandemo;

import android.content.Context;

import android.graphics.drawable.ColorDrawable;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import android.widget.PopupWindow;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private RecyclerView recyclerView;

private int[] pics;

private String[] descs;

public Context mContext;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mContext = getApplicationContext();

pics = new int[]{R.mipmap.test1, R.mipmap.test5, R.mipmap.test6, R.mipmap.test7, R.mipmap.test8, R.mipmap.test9, R.mipmap.test10, R.mipmap.test12, R.mipmap.test13, R.mipmap.test14, R.mipmap.test1, R.mipmap.test5, R.mipmap.test6, R.mipmap.test7, R.mipmap.test8, R.mipmap.test9, R.mipmap.test10, R.mipmap.test12, R.mipmap.test13, R.mipmap.test14};

descs = new String[]{

"诗人承陈隋风流,浮靡相矜。",

"古今诗人众矣,而杜子美为首,岂非以其流落饥寒,终身不用,而一饭未尝忘君也欤?",

"老杜诗,凡一篇皆工拙相半,古人文章类如此。",

"王介甫只知巧语之为诗,而不知拙语亦诗也;山谷只知奇语之为诗,而不知常语亦诗也",

"子美诗奄有古今。学者能识国风、骚人之旨,然后知子美用意处",

"或问王荆公云:编四家诗,以杜甫为第一,李白为第四,岂白之才格词致不逮甫也?",

"山谷云,老杜作诗,退之作文,无一字无来处,盖后人读书少,故谓韩、杜自作此语耳。",

"观杜者不唯见其律,而有见其骚者焉;不唯见其骚,而有见其雅者焉",

"盛唐一味秀丽雄浑。杜则精粗、巨细、巧拙、新陈、险易、浅深、浓淡、肥瘦靡不毕具",

"大概杜有三难:极盛难继,首创难工,遘衰难挽",

"诗人承陈隋风流,浮靡相矜。",

"古今诗人众矣,而杜子美为首,岂非以其流落饥寒,终身不用,而一饭未尝忘君也欤?",

"老杜诗,凡一篇皆工拙相半,古人文章类如此。",

"王介甫只知巧语之为诗,而不知拙语亦诗也;山谷只知奇语之为诗,而不知常语亦诗也",

"子美诗奄有古今。学者能识国风、骚人之旨,然后知子美用意处",

"或问王荆公云:编四家诗,以杜甫为第一,李白为第四,岂白之才格词致不逮甫也?",

"山谷云,老杜作诗,退之作文,无一字无来处,盖后人读书少,故谓韩、杜自作此语耳。",

"观杜者不唯见其律,而有见其骚者焉;不唯见其骚,而有见其雅者焉",

"盛唐一味秀丽雄浑。杜则精粗、巨细、巧拙、新陈、险易、浅深、浓淡、肥瘦靡不毕具",

"大概杜有三难:极盛难继,首创难工,遘衰难挽"

};

initView();

}

private void initView() {

recyclerView = (RecyclerView) findViewById(R.id.recycler_view);

recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));

RecyclerAdapter recyclerAdapter = new RecyclerAdapter(pics, descs, mContext);

recyclerView.setAdapter(recyclerAdapter);

}

}

class RecyclerAdapter extends RecyclerView.Adapter {

private Context mContext;

private String[] descs;

private int[] pics;

private PopupWindow mPop;

public RecyclerAdapter(int[] pics, String[] descs, Context context) {

this.pics = pics;

this.descs = descs;

this.mContext = context;

}

@Override

public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = View.inflate(parent.getContext(), R.layout.item_layout, null);

MyViewHolder viewHolder = new MyViewHolder(view);

return viewHolder;

}

@Override

public void onBindViewHolder(final MyViewHolder holder, final int position) {

holder.desc.setText(descs[position]);

holder.icon.setImageResource(pics[position]);

holder.zan.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// Toast.makeText(mContext, position + "被点击了", Toast.LENGTH_SHORT).show();

int zanWidth = holder.zan.getWidth();

int zanHeight = holder.zan.getHeight();

View contentView = LayoutInflater.from(mContext).inflate(R.layout.pop_layout, null);

TextView popZan = (TextView) contentView.findViewById(R.id.pop_zan);

TextView popPinlun = (TextView) contentView.findViewById(R.id.pop_pinlun);

popZan.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(mContext, "点赞", Toast.LENGTH_SHORT).show();

}

});

popPinlun.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(mContext, "评论", Toast.LENGTH_SHORT).show();

}

});

if (mPop == null) { //优化:当popwindow为空的时候才创建,不为空,直接复用

int width = zanWidth * 5; //设置PopupWindow的宽

int height = zanHeight; //设置PopupWindow的高

boolean focusable = true; //设置PopupWindow可获取焦点

mPop = new PopupWindow(contentView, width, height, focusable);

//为PopupWindow设置背景,获取焦点才能生效(谷歌官方要求)

mPop.setBackgroundDrawable(new ColorDrawable());

}

View anchor = holder.zan; //指定PopupWindow在哪个控件下面显示

int xoff = -zanWidth;//指定PopupWindow在x轴方向上的偏移量

int yoff = -zanHeight;//指定PopupWindow在Y轴方向上的偏移量

mPop.showAsDropDown(anchor, xoff, yoff);

}

});

}

@Override

public int getItemCount() {

return pics.length;

}

}

class MyViewHolder extends RecyclerView.ViewHolder {

public TextView desc;

public ImageView icon;

public ImageView zan;

public MyViewHolder(View itemView) {

super(itemView);

desc = (TextView) itemView.findViewById(R.id.desc);

icon = (ImageView) itemView.findViewById(R.id.icon);

zan = (ImageView) itemView.findViewById(R.id.zan);

}

}

具体的弹窗位置和点赞按钮,评论按钮实现效果只用了吐司弹出,可以加自己的业务逻辑进去。

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

android 微信评论功能,Android仿微信朋友圈点赞和评论功能相关推荐

  1. Android自定义弹窗模仿微信,Android 仿微信朋友圈点赞和评论弹出框功能

    本文简单模仿微信朋友圈的点赞和评论弹出框,布局等细节请忽略,着重实现弹出框.发评论,及弹出位置的控制. 1. 微信弹出框 微信朋友圈的点赞和评论功能,有2个组成部分: 点击左下角的"更多&q ...

  2. 仿微信朋友圈点赞和评论功能

    仿微信朋友圈点赞和评论功能 最近在做朋友圈的项目,所以写一个Demo,代码就是简单实现了一下功能,没有做优化,凑合看 图文排列是用的RecyclerView实现的,弹窗效果是用的自定义的PopupWi ...

  3. 微信7.0.4更新!朋友圈3天可见功能,终于变了!

    在五一假期的最后一天,微信更新了7.0.4版本,在官方显示的更新动态中,主要更新了这些功能: -发现视频动态时,可以搜一首歌设置为背景音乐 -可以在朋友的视频动态中发表私密留言   搜一首歌设置为背景 ...

  4. 基于Redis ZSet结构实现朋友圈点赞功能

    首先我们需要分析下朋友圈点赞需要有哪些功能: 支持点赞数量的查看 支持点赞和取消点赞 支持查看哪些人点过赞 支持查看点赞的顺序 那么基于以上需求,大致的结构如下: 在数据结构上,key就是这个具体的朋 ...

  5. android com.mylhyl,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. photopicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

  6. android 微信高仿,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. PhotoPicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

  7. android 表情评论功能,微信关闭朋友圈表情包评论功能,安卓还没尝鲜就已结束...

    原标题:微信关闭朋友圈表情包评论功能,安卓还没尝鲜就已结束 [钉科技消息]朋友圈又恢复了往日的平静. 12月25日,部分网友再次尝试在微信朋友圈评论表情包,结果发现已经不能使用自定义表情包了,只剩下微 ...

  8. android分享朋友圈功能,微信小程序实现分享至朋友圈的功能来啦

    微信小程序「分享至朋友圈」能力,终于来了!(之前,我相信大部分微信小程序的开发者都是用"分享卡片"的形式,手动调用wx.createCanvasContext生成一张图片,让用户生 ...

  9. android中评论的删除不了,微信朋友圈可以删评论了,但尴尬的是…

    腾讯近期发布的 适用于iOS版本的微信7.0.15 除了拍一拍撤回功能外 其实还有一个隐藏新功能 估计不少人已经发现了 这个隐藏功能 就是大家期盼许久的 删除朋友圈中好友评论 在这之前的的版本中 用户 ...

最新文章

  1. 股市币市:数据分析与交易所公告(20190227)
  2. CTFshow 爆破 web28
  3. C++、C#写的WebService相互调用
  4. 数学知识巧学JCF(Java Collections framework)
  5. win定时关机_怎么让电脑定时关机,有多种办法
  6. vue aixos请求json
  7. XML数据岛(XML Data Island)(只适用于ie)
  8. C++11并发编程:多线程std::thread
  9. qq群 voiceover_如何在iOS上使用VoiceOver为所有人构建应用程序
  10. 得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?
  11. linxu 启动过程分析
  12. guid会重复么_饿了么请你考虑一下消费者
  13. 获取输入框内容,数值类型转换问题
  14. 怎样在Windows 2016 Hyper-V上创建虚拟机
  15. VB.NET 基础入门
  16. 高德地图按行政区描边
  17. 渗透测试工程师面试题大全(164道)
  18. 微型计算机虚拟内存器件,内外存储器与缓存内存虚拟内存.ppt
  19. Can not lock the registry cache file C:\Users\username.dubbo\dubbo-registry-1*.2*.2*.1*.cache
  20. javascript汉字转换成拼音(部分)

热门文章

  1. JavaScript--对时间戳进行格式化
  2. wps文档页面左右边距大小怎么调整
  3. java动态代理底层探究
  4. HeroFi--基于区块链和NFT的aRPG游戏|Play to earn
  5. 130242014008-朱静如-实验一
  6. 获取macthine id的方法
  7. 机械键盘 程序员_适用于程序员和游戏玩家的机械键盘
  8. [THUPC2018]生生不息(???)
  9. 淘宝首页代码html代码,Web前端
  10. 自走棋手游服务器稳定,多多自走棋 2.0新版本值得“留守”吗?