亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android PopupWindow增加半透明蒙層

2019-10-21 21:36:50
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android PopupWindow增加半透明蒙層的具體代碼,供大家參考,具體內容如下

先看效果圖:

Android,PopupWindow,半透明蒙層

實現代碼:

BasePopupWindowWithMask.class

package com.example.popupwindowwithmask; import android.content.Context;import android.graphics.PixelFormat;import android.graphics.drawable.ColorDrawable;import android.os.IBinder;import android.view.KeyEvent;import android.view.View;import android.view.WindowManager;import android.widget.PopupWindow; /** * Created by kk on 2017/7/22. */ public abstract class BasePopupWindowWithMask extends PopupWindow { protected Context context; private WindowManager windowManager; private View maskView;  public BasePopupWindowWithMask(Context context) {  super(context);  this.context = context;  windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);  setContentView(initContentView());  setHeight(initHeight());  setWidth(initWidth());  setOutsideTouchable(true);  setFocusable(true);  setTouchable(true);  setBackgroundDrawable(new ColorDrawable()); }  protected abstract View initContentView();  protected abstract int initHeight();  protected abstract int initWidth();  @Override public void showAsDropDown(View anchor) {  addMask(anchor.getWindowToken());  super.showAsDropDown(anchor); }  private void addMask(IBinder token) {  WindowManager.LayoutParams wl = new WindowManager.LayoutParams();  wl.width = WindowManager.LayoutParams.MATCH_PARENT;  wl.height = WindowManager.LayoutParams.MATCH_PARENT;  wl.format = PixelFormat.TRANSLUCENT;//不設置這個彈出框的透明遮罩顯示為黑色  wl.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;//該Type描述的是形成的窗口的層級關系  wl.token = token;//獲取當前Activity中的View中的token,來依附Activity  maskView = new View(context);  maskView.setBackgroundColor(0x7f000000);  maskView.setFitsSystemWindows(false);  maskView.setOnKeyListener(new View.OnKeyListener() {   @Override   public boolean onKey(View v, int keyCode, KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_BACK) {     removeMask();     return true;    }    return false;   }  });  /**   * 通過WindowManager的addView方法創建View,產生出來的View根據WindowManager.LayoutParams屬性不同,效果也就不同了。   * 比如創建系統頂級窗口,實現懸浮窗口效果!   */  windowManager.addView(maskView, wl); }  private void removeMask() {  if (null != maskView) {   windowManager.removeViewImmediate(maskView);   maskView = null;  } }  @Override public void dismiss() {  removeMask();  super.dismiss(); }}

TestPopupWindow.class

package com.example.popupwindowwithmask; import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager; /** * Created by kk on 2017/7/22. */ public class TestPopupWindow extends BasePopupWindowWithMask { private int[] mIds; private View contentView; private OnItemClickListener listener;  public interface OnItemClickListener {  void OnItemClick(View v); }  public void setOnItemClickListener(OnItemClickListener listener) {  this.listener = listener; }  public TestPopupWindow(Context context, int[] mIds) {  super(context);  this.mIds = mIds;   initListener(); }  @Override protected View initContentView() {  contentView = LayoutInflater.from(context).inflate(R.layout.pop_layout, null, false);  return contentView; }  private void initListener() {  for (int i = 0; i < mIds.length; i++) {   contentView.findViewById(mIds[i]).setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {     if (null != listener) {      listener.OnItemClick(v);     }     dismiss();    }   });  } } @Override protected int initHeight() {  return WindowManager.LayoutParams.WRAP_CONTENT; } @Override protected int initWidth() {  return (int) (0.5 * UIUtils.getScreenWidth(context)); }}

MainActivity.class

package com.example.popupwindowwithmask; import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;import android.widget.Toast; public class MainActivity extends AppCompatActivity { private TextView textView;  @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  textView = (TextView) findViewById(R.id.tv_popup);    final TestPopupWindow testPopupWindow = new TestPopupWindow(this, new int[]{R.id.pop_location, R.id.pop_group, R.id.pop_list});   textView.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    testPopupWindow.showAsDropDown(textView);   }  });   testPopupWindow.setOnItemClickListener(new TestPopupWindow.OnItemClickListener() {   @Override   public void OnItemClick(View v) {    switch (v.getId()) {     case R.id.pop_location:      Toast.makeText(MainActivity.this, "地址", Toast.LENGTH_SHORT).show();      break;     case R.id.pop_group:      Toast.makeText(MainActivity.this, "分組", Toast.LENGTH_SHORT).show();      break;     case R.id.pop_list:      Toast.makeText(MainActivity.this, "清單", Toast.LENGTH_SHORT).show();      break;    }   }  }); }}

pop_layout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">  <RelativeLayout  android:layout_width="wrap_content"  android:layout_height="wrap_content">   <RelativeLayout   android:id="@+id/rl_indicator"   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:gravity="center_horizontal">    <ImageView    android:layout_width="wrap_content"    android:layout_height="12dp"    android:scaleType="fitCenter"    android:src="@drawable/filter_arrow_up" />  </RelativeLayout>   <LinearLayout   android:layout_width="wrap_content"   android:layout_height="150dp"   android:layout_below="@+id/rl_indicator"   android:background="@drawable/pop_background"   android:gravity="center_horizontal"   android:orientation="vertical"   android:paddingLeft="15dp"   android:paddingRight="15dp">    <TextView    android:id="@+id/pop_location"    android:layout_width="match_parent"    android:layout_height="0dp"    android:layout_weight="1"    android:drawableLeft="@mipmap/fault_equipment_location_icon"    android:drawablePadding="12dp"    android:gravity="center_vertical"    android:text="地址"    android:textColor="#000"    android:textSize="16sp" />    <View    android:layout_width="match_parent"    android:layout_height="0.3dp"    android:background="#D2D2D2" />    <TextView    android:id="@+id/pop_group"    android:layout_width="match_parent"    android:layout_height="0dp"     android:layout_weight="1"    android:drawableLeft="@mipmap/fault_equipment_grouping_icon"    android:drawablePadding="12dp"    android:gravity="center_vertical"    android:text="分組"    android:textColor="#000"    android:textSize="16sp" />    <View    android:layout_width="match_parent"    android:layout_height="0.3dp"    android:background="#D2D2D2" />    <TextView    android:id="@+id/pop_list"    android:layout_width="match_parent"    android:layout_height="0dp"    android:layout_weight="1"    android:drawableLeft="@mipmap/fault_equipment_list_icon"    android:drawablePadding="12dp"    android:gravity="center_vertical"    android:text="清單"    android:textColor="#000"    android:textSize="16sp" />   </LinearLayout> </RelativeLayout></RelativeLayout>

pop_background.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffff" /> <corners  android:radius="5dp" /></shape>

UIUtils.class

package com.example.popupwindowwithmask; import android.content.Context; /** * Created by kk on 2017/7/22. */ public class UIUtils { /**  * 獲得屏幕寬度  *  * @param context  * @return  */ public static int getScreenWidth(Context context) {  return context.getResources().getDisplayMetrics().widthPixels; }  /**  * 獲得屏幕高度  *  * @param context  * @return  */ public static int getScreenHeight(Context context) {  return context.getResources().getDisplayMetrics().heightPixels; } }

源碼:下載地址

參考資料:

鏈接1

鏈接2

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩裸体免费视频| 欧美性猛交xxxx免费看漫画| 欧美最猛性xxxxx亚洲精品| 欧美黑人国产人伦爽爽爽| 色婷婷av一区二区三区久久| 日本亚洲精品在线观看| 成人在线视频网站| 国产一区二区三区视频免费| 久久69精品久久久久久国产越南| 日韩成人av在线| 欧美激情一区二区久久久| 亲爱的老师9免费观看全集电视剧| 在线a欧美视频| 亚洲图中文字幕| 蜜臀久久99精品久久久无需会员| 亚洲自拍小视频| 欧美午夜片在线免费观看| 色久欧美在线视频观看| 日韩欧美极品在线观看| 亚洲国产精品视频在线观看| 91精品国产91久久久久久不卡| 精品视频在线播放免| 91日韩在线播放| 日韩国产欧美精品一区二区三区| 亚洲国产成人精品电影| 久久免费成人精品视频| 国产精品96久久久久久又黄又硬| 日韩av一区二区在线| 日韩在线播放一区| 国产婷婷色综合av蜜臀av| 欧美日韩第一视频| 亚洲男人天堂久| 中文字幕日韩精品在线| 亚洲精品国产欧美| 伦伦影院午夜日韩欧美限制| 欧美国产极速在线| xxxxx91麻豆| 亚洲高清福利视频| 欧美日韩爱爱视频| 国产精品永久免费| 日韩欧美国产成人| 亚洲欧美激情另类校园| 欧美超级免费视 在线| 欧美成人手机在线| 韩国19禁主播vip福利视频| 欧美韩国理论所午夜片917电影| 国产成人avxxxxx在线看| 亚洲精品美女久久久| 欧美另类极品videosbestfree| 69国产精品成人在线播放| 亚洲第一福利视频| 欧美日韩亚洲网| 国产福利精品av综合导导航| 国产成+人+综合+亚洲欧洲| 国产成人激情视频| 日韩欧美精品在线观看| 国产日韩欧美在线播放| 国产精品91在线| 91日韩在线视频| 日本精品免费观看| 57pao成人永久免费视频| 欧美激情精品久久久久| 久久久久久国产三级电影| 欧美国产欧美亚洲国产日韩mv天天看完整| 九九热精品在线| 精品久久中文字幕| 色多多国产成人永久免费网站| 日韩一区二区在线视频| 国产精品欧美日韩一区二区| 日韩精品日韩在线观看| 2019中文字幕在线免费观看| 日韩欧美在线第一页| 97视频在线观看网址| 亚洲图片在线综合| 91亚洲国产成人久久精品网站| 国产精品自在线| 美女性感视频久久久| 亚洲欧美日韩成人| 久久久久久久一| 国产视频丨精品|在线观看| 欧美在线视频观看免费网站| 亚洲男人天天操| 一本大道亚洲视频| 亚洲欧美激情在线视频| 亚洲精品综合精品自拍| 亚洲人成网站在线播| 久久精品中文字幕| 日韩av一区二区在线观看| 成人免费视频在线观看超级碰| 久久精品视频一| 久久精品国产v日韩v亚洲| 狠狠爱在线视频一区| 日韩电影网在线| 成人久久18免费网站图片| 九九热精品视频| 精品久久久久久国产| 精品视频久久久久久| 亚洲精品成人av| 精品一区二区三区四区在线| 精品国产91久久久久久老师| 国产精品久久视频| 欧美亚洲午夜视频在线观看| 国产精品午夜一区二区欲梦| 97精品视频在线| 欧美床上激情在线观看| 91国产精品视频在线| 欧美精品一二区| 亚洲男人天堂手机在线| 亚洲色图美腿丝袜| 日韩国产欧美精品在线| 青青青国产精品一区二区| 成人性生交大片免费看视频直播| 精品一区二区三区三区| 一二美女精品欧洲| 欧美色道久久88综合亚洲精品| 亚洲加勒比久久88色综合| 国内精品免费午夜毛片| 国产精品海角社区在线观看| 欧美性xxxx在线播放| 精品国产鲁一鲁一区二区张丽| 亚洲国产精品久久久久秋霞不卡| 2024亚洲男人天堂| 国产精品久久久久久久久粉嫩av| 91高清视频免费观看| 国产精品v日韩精品| 色无极影院亚洲| 色与欲影视天天看综合网| 亚洲国产欧美自拍| 国产精品久久久久久av| 亚洲性视频网址| 国产视频久久久久| 日韩在线观看免费高清| 久久久日本电影| www.久久久久久.com| 久久久久久网站| 日本高清不卡的在线| 欧美高清无遮挡| 色狠狠久久aa北条麻妃| 热久久这里只有精品| 美女视频黄免费的亚洲男人天堂| 中日韩美女免费视频网站在线观看| 久久久久久国产| 亲爱的老师9免费观看全集电视剧| 色yeye香蕉凹凸一区二区av| 亚洲视频在线观看| 欧美—级高清免费播放| 日韩综合中文字幕| 欧美黑人国产人伦爽爽爽| 91在线视频一区| 91精品视频网站| 国产精品稀缺呦系列在线| 欧美人成在线视频| 91色精品视频在线| 国产精品久久久久久久久久ktv| 欧美一级高清免费播放| 日韩专区在线观看| 久久久久久久一| 欧美日韩加勒比精品一区| 国产视频久久久| 亚洲码在线观看| 国产精品18久久久久久麻辣| 欧美日本精品在线| 午夜精品福利在线观看| 91国内在线视频|