android的popuwindow的使用
16lz
2021-01-23
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 三种解析,构建xml方法
- Android 文件管理方法
- android中自定义Toast方法详解(一)
- Android在网络中与JavaWeb的项目进行交互的方法
- Android加载Gif图片的一般方法:Movie实现
- EventBus 《四》 事件的优先级及其EventBus Demo
- Android、iPhone和Java三个平台一致的加密方法