最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中使用PopupWindow 仿微信點贊和評論彈出

 更新時間:2017年04月24日 11:16:17   作者:ganchuanpu  
微信朋友圈的點贊和評論功能,有2個組成部分:左下角的“更多”按鈕;點擊該按鈕后彈出的對話框。這篇文章主要介紹了Android中使用PopupWindow 仿微信點贊和評論彈出,需要的朋友可以參考下

微信朋友圈的點贊和評論功能,有2個組成部分:左下角的“更多”按鈕;點擊該按鈕后彈出的對話框;

PopupWindow,彈出框使用PopupWindow實現(xiàn),這是點贊和評論的載體,具體要涉及 PopupWindow 點擊非窗口位置和再次點擊消失以及顯示位置的問題(根據(jù)相應更多按鈕的位置確定 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);
   // 帶賦值區(qū)域
   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);
    // 點贊的監(jiān)聽器
    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();
     }
    });
    // 評論的監(jiān)聽器
    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; // 發(fā)布時間
  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 仿微信點贊和評論彈出,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • Flutter異步操作實現(xiàn)流程詳解

    Flutter異步操作實現(xiàn)流程詳解

    在Flutter中,借助 FutureBuilder 組件和 StreamBuilder 組件,可以非常方便地完成異步操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-09-09
  • Android實現(xiàn)為ListView同時設置點擊時的背景和點擊松手之后的背景

    Android實現(xiàn)為ListView同時設置點擊時的背景和點擊松手之后的背景

    這篇文章主要介紹了Android實現(xiàn)為ListView同時設置點擊時的背景和點擊松手之后的背景,以實例形式較為詳細的分析了界面元素與功能的實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-02-02
  • Android識別預裝的第三方App方法實例

    Android識別預裝的第三方App方法實例

    這篇文章主要給大家介紹了關于Android如何識別預裝的第三方App的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2019-01-01
  • 5步教你快速寫一個android Router路由框架

    5步教你快速寫一個android Router路由框架

    本篇文章主要介紹了5步教你快速寫一個Router路由框架(詳細步驟),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Android 控件(button)對齊方法實現(xiàn)詳解

    Android 控件(button)對齊方法實現(xiàn)詳解

    horizontal是讓所有的子元素按水平方向從左到右排列,vertical是讓所有的子元素按豎直方向從上到下排列,下面為大家介紹下控件(button)的對齊方法
    2013-06-06
  • Android 多渠道(友盟)打包教程分享

    Android 多渠道(友盟)打包教程分享

    這篇文章主要介紹了Android 多渠道(友盟)打包教程分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android界面一鍵變灰開發(fā)深色適配模式編程示例

    Android界面一鍵變灰開發(fā)深色適配模式編程示例

    這篇文章主要為大家介紹了Android界面一鍵變灰開發(fā)深色適配模式編程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Android實現(xiàn)廣告圖片輪播效果

    Android實現(xiàn)廣告圖片輪播效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)廣告圖片輪播效果的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android編程之菜單的實現(xiàn)方法實例詳解

    Android編程之菜單的實現(xiàn)方法實例詳解

    這篇文章主要介紹了Android編程之菜單的實現(xiàn)方法,結合實例形式較為詳細的分析了上下文菜單、選項菜單和子菜單的實現(xiàn)技巧,需要的朋友可以參考下
    2015-11-11
  • Android存儲權限兼容問題解析

    Android存儲權限兼容問題解析

    在?Android?開發(fā)中,存儲權限是一個常見且重要的權限,不同版本的?Android?系統(tǒng)對于存儲權限的管理和處理方式存在差異,這就導致了開發(fā)者在處理存儲權限時會遇到各種兼容問題,本文將詳細介紹?Android?各版本存儲權限的變化,以及如何進行兼容處理,并給出具體的代碼示例
    2025-02-02

最新評論

平阴县| 荔浦县| 湖口县| 城口县| 凤翔县| 犍为县| 伊川县| 南通市| 清河县| 千阳县| 方城县| 辽中县| 富平县| 丰顺县| 涟水县| 蒲城县| 仙桃市| 海丰县| 静乐县| 普格县| 海盐县| 迭部县| 定远县| 科尔| 平乐县| 中阳县| 铜梁县| 永清县| 图木舒克市| 荣成市| 太仓市| 舞钢市| 澄江县| 兴安盟| 枣庄市| 永平县| 杭锦后旗| 钦州市| 新和县| 太谷县| 闽清县|