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

随机推荐

  1. MySQL插入emoji表情失败问题的解决方法
  2. CentOS7 64位安装mysql图文教程
  3. Win 8或以上系统下MySQL最新版5.7.17(64bi
  4. MySQL 5.7.18 免安装版配置教程
  5. Linux下MySQL 5.5/5.6的修改字符集编码为
  6. mysql5.7.18解压版启动mysql服务
  7. MySql在Mac上的安装与配置详解
  8. mysql允许所有host访问的方法
  9. MySQL分页分析原理及提高效率
  10. 解决mysql创建数据库后出现:Access denied