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

Android中使用PopupWindow 仿微信点赞和评论d出,第1张

概述微信朋友圈的点赞和评论功能,有2个组成部分:左下角的“更多”按钮;点击该按钮后d出的对话框;

微信朋友圈的点赞和评论功能,有2个组成部分:左下角的“更多”按钮;点击该按钮后d出的对话框;

PopupWindow,d出框使用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;  }  /**   * d出点赞和评论框   *   * @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,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 仿微信点赞和评论d出,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的Android中使用PopupWindow 仿微信点赞和评论d出全部内容,希望文章能够帮你解决Android中使用PopupWindow 仿微信点赞和评论d出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1146320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存