android的popuwindow的使用
16lz
2021-12-17
private void showPopupWindow() { View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.popuplayout, null); PopupWindow mPopWindow = new PopupWindow(contentView);//充满全屏 mPopWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT); mPopWindow.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);//另一种使布局充满全屏的方法// mPopWindow.setHeight(getWindowManager().getDefaultDisplay().getHeight());// mPopWindow.setWidth(getWindowManager().getDefaultDisplay().getWidth()); //是否响应touch事件 mPopWindow.setTouchable(true); //是否具有获取焦点的能力 mPopWindow.setFocusable(true); //外部是否可以点击 mPopWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); mPopWindow.setOutsideTouchable(true); mPopWindow.setAnimationStyle(R.style.contextMenuAnim); mPopWindow.showAsDropDown(mMenuTv);//展示在哪个view下面 }
以上是popuwindow在android6.0以下,屏蔽返回键起作用;但在android6.0以上,仍然可以按返回键使得popuwindow消失;
下面是适配6.0以下的:
private void initPopuwindow() { popupWindowView = View.inflate(VideoLiveActivity.this, R.layout.video_live, null); viewHolder = new ViewHolder(popupWindowView); popupWindow = setPopupwindow(popupWindowView); } private PopupWindow setPopupwindow(View view) { PopupWindow mPopWindow = new PopupWindow(view); final DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); mPopWindow.setWidth(metrics.widthPixels); mPopWindow.setHeight(metrics.heightPixels); //是否响应touch事件 mPopWindow.setTouchable(true); //是否具有获取焦点的能力 mPopWindow.getContentView().setFocusable(true); mPopWindow.getContentView().setFocusableInTouchMode(true); //在Android 6.0以下使用 mPopWindow.setOutsideTouchable(false); //在Android 6.0以上 ,只能通过拦截事件来解决 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mPopWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); if ((event.getAction() == MotionEvent.ACTION_DOWN) && ((x < 0) || (x >= metrics.widthPixels) || (y < 0) || (y >= metrics.heightPixels))) { return true; } else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { return true; } return false; } }); } return mPopWindow; }
第一个方法是初始化popuwindow,第二个是构建popuwindow对象。
更多相关文章
- Android-WebView集成iScroll4之input框无法获取焦点
- 获取Android自己写好了的apk以及反编译
- Android(安卓)onTouchEvent, onClick及onLongClick的调用机制
- Cordova + vue 打包安卓(Android) apk 及 Apk版本自动升级及安装
- android获取通知权限
- Android系统信息获取 之十二:获取屏幕分辨率及密度
- 【转】获取android设备 id
- Android(安卓)onTouchEvent, onClick及onLongClick的调用机制
- 转!Android(安卓)onTouchEvent,onClick和onLongClick的调用机制