2023年7月15日发(作者:)
AndroidPopupWindow增加半透明蒙层本⽂实例为⼤家分享了Android PopupWindow增加半透明蒙层的具体代码,供⼤家参考,具体内容如下先看效果图:实现代码:ackage indowwithmask;
import t;import ormat;import rawable;import r;import nt;import ;import Manager;import indow;
/** * 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); t = context; windowManager = (WindowManager) temService(_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(dowToken()); DropDown(anchor); }
private void addMask(IBinder token) { Params wl = new Params(); = _PARENT; = _PARENT; = UCENT;//不设置这个弹出框的透明遮罩显⽰为⿊⾊ = _APPLICATION_PANEL;//该Type描述的是形成的窗⼝的层级关系 = token;//获取当前Activity中的View中的token,来依附Activity maskView = new View(context); kgroundColor(0x7f000000); sSystemWindows(false); eyListener(new istener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == E_BACK) { removeMask(); return true; } return false; } }); /** * 通过WindowManager的addView⽅法创建View,产⽣出来的View根据Params属性不同,效果也就不同了。 * ⽐如创建系统顶级窗⼝,实现悬浮窗⼝效果! */ w(maskView, wl); }
private void removeMask() { if (null != maskView) { ViewImmediate(maskView); maskView = null; } }
@Override public void dismiss() { removeMask(); s(); }}ackage indowwithmask;
import t;import Inflater;import ;import Manager;
/** * 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) { er = listener; }
public TestPopupWindow(Context context, int[] mIds) { super(context); = mIds;
initListener(); }
@Override protected View initContentView() { contentView = (context).inflate(_layout, null, false); return contentView; }
private void initListener() { for (int i = 0; i < ; i++) { ewById(mIds[i]).setOnClickListener(new kListener() { @Override public void onClick(View v) { if (null != listener) { Click(v); } dismiss(); } }); } } @Override protected int initHeight() { return _CONTENT; } @Override protected int initWidth() { return (int) (0.5 * eenWidth(context)); }}ackage indowwithmask;
import ;import patActivity;import ;import ew;import ;
public class MainActivity extends AppCompatActivity { private TextView textView;
@Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_main); textView = (TextView) findViewById(_popup);
final TestPopupWindow testPopupWindow = new TestPopupWindow(this, new int[]{_location, _group, _list});
lickListener(new kListener() { @Override public void onClick(View v) { DropDown(textView); } });
temClickListener(new ClickListener() { @Override public void OnItemClick(View v) { switch (()) { case _location: xt(, "地址", _SHORT).show(); break; case _group: xt(, "分组", _SHORT).show(); break; case _list: xt(, "清单", _SHORT).show(); break; } } }); }}pop_
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" /> pop_ import t; /** * Created by kk on 2017/7/22. */ public class UIUtils { /** * 获得屏幕宽度 * * @param context * @return */ public static int getScreenWidth(Context context) { return ources().getDisplayMetrics().widthPixels; } /** * 获得屏幕⾼度 * * @param context * @return */ public static int getScreenHeight(Context context) { return ources().getDisplayMetrics().heightPixels; } }源码:参考资料:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689431106a247145.html
评论列表(0条)