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对象。

更多相关文章

  1. Android-WebView集成iScroll4之input框无法获取焦点
  2. 获取Android自己写好了的apk以及反编译
  3. Android(安卓)onTouchEvent, onClick及onLongClick的调用机制
  4. Cordova + vue 打包安卓(Android) apk 及 Apk版本自动升级及安装
  5. android获取通知权限
  6. Android系统信息获取 之十二:获取屏幕分辨率及密度
  7. 【转】获取android设备 id
  8. Android(安卓)onTouchEvent, onClick及onLongClick的调用机制
  9. 转!Android(安卓)onTouchEvent,onClick和onLongClick的调用机制

随机推荐

  1. Simulate android behaviors on win32
  2. Android录音下————AudioRecord源码分
  3. 在Android上编译OSG[3.0.2 ]
  4. 在Android中使用ExecutorService、Execut
  5. dumpsys cpuinfo
  6. Android Studio 之 View组件常用属性及其
  7. In FontFamilyFont, unable to find attr
  8. 新浪微博Oauth2.0授权认证及SDK、API的使
  9. 【Android】Activity知识点
  10. android GridView 去掉自带点击边框效果