微信朋友圈的点赞和评论功能,有2个组成部分:左下角的“更多”按钮;点击该按钮后弹出的对话框;
PopupWindow,弹出框使用PopupWindow实现,这是点赞和评论的载体,具体要涉及 PopupWindow 点击非窗口位置和再次点击消失以及显示位置的问题(根据相应更多按钮的位置确定 PopupWindow 的显示位置
package com.example.cmm.helloworld;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private PopupWindow mMorePopupWindow;
private int mShowMorePopupWindowWidth;
private int mShowMorePopupWindowHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.listview);
lv.setAdapter(new MyAdapter(MainActivity.this, getData()));
}
private List<Data> getData() {
List<Data> data = new ArrayList<>();
data.add(new Data(R.drawable.xiaona, "薄荷栗", "我学过跆拳道,都给我跪下唱征服", "昨天"));
data.add(new Data(R.drawable.xueyan, "欣然", "走遍天涯海角,唯有我家风景最好,啊哈哈", "昨天"));
data.add(new Data(R.drawable.leishao, "陈磊_CL", "老子以后要当行长的,都来找我借钱吧,now", "昨天"));
data.add(new Data(R.drawable.yuhong, "永恒依然", "房子车子都到碗里来", "昨天"));
data.add(new Data(R.drawable.lanshan, "蓝珊", "你们这群傻×,我笑而不语", "昨天"));
return data;
}
class MyAdapter extends BaseAdapter {
private List<Data> listdata;
private Context context;
public MyAdapter(Context context, List<Data> listdata) {
this.context = context;
this.listdata = listdata;
}
@Override
public int getCount() {
return listdata.size();
}
@Override
public Object getItem(int arg0) {
return listdata.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.listview_item, null, false);
// 带赋值区域
ImageView ivPortrait = (ImageView) convertView.findViewById(R.id.portrait);
TextView tvNickName = (TextView) convertView.findViewById(R.id.nick_name);
TextView tvContent = (TextView) convertView.findViewById(R.id.content);
TextView tvCreatedAt = (TextView) convertView.findViewById(R.id.created_at);
ImageView moreBtn = (ImageView) convertView.findViewById(R.id.more_btn);
// 赋值
Data data = listdata.get(position);
ivPortrait.setImageResource(data.getPortraitId());
tvNickName.setText(data.getNickName());
tvContent.setText(data.getContent());
tvCreatedAt.setText(data.getCreatedAt());
// 更多按钮的点击事件
moreBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showMore(v);
}
});
return convertView;
}
/**
* 弹出点赞和评论框
*
* @param moreBtnView
*/
private void showMore(View moreBtnView) {
if (mMorePopupWindow == null) {
LayoutInflater li = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View content = li.inflate(R.layout.layout_more, null, false);
mMorePopupWindow = new PopupWindow(content, ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
mMorePopupWindow.setBackgroundDrawable(new BitmapDrawable());
mMorePopupWindow.setOutsideTouchable(true);
mMorePopupWindow.setTouchable(true);
content.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
mShowMorePopupWindowWidth = content.getMeasuredWidth();
mShowMorePopupWindowHeight = content.getMeasuredHeight();
View parent = mMorePopupWindow.getContentView();
TextView like = (TextView) parent.findViewById(R.id.like);
TextView comment = (TextView) parent.findViewById(R.id.comment);
// 点赞的监听器
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle("点赞");
alert.setNegativeButton("取消", null);
alert.show();
}
});
// 评论的监听器
comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle("评论");
alert.setNegativeButton("取消", null);
alert.show();
}
});
}
if (mMorePopupWindow.isShowing()) {
mMorePopupWindow.dismiss();
} else {
int heightMoreBtnView = moreBtnView.getHeight();
mMorePopupWindow.showAsDropDown(moreBtnView, -mShowMorePopupWindowWidth,
-(mShowMorePopupWindowHeight + heightMoreBtnView) / 2);
}
}
}
class Data {
private int portraitId; // 头像
private String nickName; // 昵称
private String content; // 说说
private String createdAt; // 发布时间
public Data(int portraitId, String nickName, String content, String createdAt) {
this.portraitId = portraitId;
this.nickName = nickName;
this.content = content;
this.createdAt = createdAt;
}
public int getPortraitId() {
return portraitId;
}
public String getNickName() {
return nickName;
}
public String getContent() {
return content;
}
public String getCreatedAt() {
return createdAt;
}
}
}
以上所述是小编给大家介绍的Android中使用PopupWindow 仿微信点赞和评论弹出,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# popupwindow
# 微信点赞和评论弹出
# Android 仿微信朋友圈点赞和评论弹出框功能
# 简单实用的Android UI微博动态点赞效果
# Android高级UI特效仿直播点赞动画效果
# Android项目开发 教你实现Periscope点赞效果
# java创建线程的4种方式集合(最新整理)
# Android中Listview点赞功能的实现
# Android仿微信朋友圈点赞和评论功能
# Android自定义ViewGroup实现堆叠头像的点赞Layout
# Android控件实现直播App点赞飘心动画
# Android SDK安装及配置教程
# 弹出
# 昨天
# 小编
# 这是
# 发布时间
# 给我
# 在此
# 给大家
# 里来
# 找我
# 不语
# 我笑
# 都来
# 这群
# 学过
# 天涯海角
# 所述
# 对话框
# 给我留言
# 组成部分
相关文章:
建站为何优先选择香港服务器?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
如何在景安服务器上快速搭建个人网站?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
Bpmn 2.0的XML文件怎么画流程图
如何在橙子建站上传落地页?操作指南详解
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
太原网站制作公司有哪些,网约车营运证查询官网?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
建站主机无法访问?如何排查域名与服务器问题
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何快速生成专业多端适配建站电话?
建站主机选购指南:核心配置与性价比推荐解析
h5网站制作工具有哪些,h5页面制作工具有哪些?
如何选择建站程序?包含哪些必备功能与类型?
网站制作价目表怎么做,珍爱网婚介费用多少?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
建站上市公司网站建设方案与SEO优化服务定制指南
如何在阿里云部署织梦网站?
建站主机选购指南:核心配置优化与品牌推荐方案
建站主机SSH密钥生成步骤及常见问题解答?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
山东网站制作公司有哪些,山东大源集团官网?
h5在线制作网站电脑版下载,h5网页制作软件?
如何在云主机快速搭建网站站点?
黑客如何通过漏洞一步步攻陷网站服务器?
郑州企业网站制作公司,郑州招聘网站有哪些?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
Java解压缩zip - 解压缩多个文件或文件夹实例
建站主机选哪家性价比最高?
如何撰写建站申请书?关键要点有哪些?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何在万网自助建站中设置域名及备案?
C#如何序列化对象为XML XmlSerializer用法
如何通过WDCP绑定主域名及创建子域名站点?
,sp开头的版面叫什么?
如何规划企业建站流程的关键步骤?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
建站之星会员如何解锁更多建站功能?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
如何在香港免费服务器上快速搭建网站?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何配置WinSCP新建站点的密钥验证步骤?
如何构建满足综合性能需求的优质建站方案?
*请认真填写需求信息,我们会在24小时内与您取得联系。