全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中使用PopupWindow 仿微信点赞和评论弹出

微信朋友圈的点赞和评论功能,有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安装及配置教程  # 弹出  # 昨天  # 小编  # 这是  # 发布时间  # 给我  # 在此  # 给大家  # 里来  # 找我  # 不语  # 我笑  # 都来  # 这群  # 学过  # 天涯海角  # 所述  # 对话框  # 给我留言  # 组成部分 


相关文章: 如何正确选择百度移动适配建站域名?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  如何通过虚拟主机空间快速建站?  深圳网站制作的公司有哪些,dido官方网站?  孙琪峥织梦建站教程如何优化数据库安全?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  python的本地网站制作,如何创建本地站点?  如何用花生壳三步快速搭建专属网站?  如何选择高效稳定的ISP建站解决方案?  Bpmn 2.0的XML文件怎么画流程图  黑客如何通过漏洞一步步攻陷网站服务器?  如何快速搭建二级域名独立网站?  建站之星ASP如何实现CMS高效搭建与安全管理?  c# 在高并发场景下,委托和接口调用的性能对比  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  寿县云建站:智能SEO优化与多行业模板快速上线指南  建站之星与建站宝盒如何选择最佳方案?  如何快速登录WAP自助建站平台?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何通过FTP空间快速搭建安全高效网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  制作网站外包平台,自动化接单网站有哪些?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  建站主机如何选?性能与价格怎样平衡?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  香港服务器租用每月最低只需15元?  网站制作企业,网站的banner和导航栏是指什么?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  全景视频制作网站有哪些,全景图怎么做成网页?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  建站之星安装模板失败:服务器环境不兼容?  盘锦网站制作公司,盘锦大洼有多少5G网站?  重庆市网站制作公司,重庆招聘网站哪个好?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  Python路径拼接规范_跨平台处理说明【指导】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何在IIS管理器中快速创建并配置网站?  如何通过wdcp面板快速创建网站?  建站之星多图banner生成与模板自定义指南  如何在局域网内绑定自建网站域名?  Swift中swift中的switch 语句  建站VPS能否同时实现高效与安全翻墙?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何选择高效便捷的WAP商城建站系统?  浅析上传头像示例及其注意事项  建站之星如何实现五合一智能建站与营销推广?  广州建站公司哪家好?十大优质服务商推荐  电脑免费海报制作网站推荐,招聘海报哪个网站多? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。