PopupWindow 防微信弹出右 侧窗体(继承PopupWindow )

1, pop自定义

 public class SelectPicPopupWindow extends PopupWindow { 
   
   
    private Button btn_take_photo, btn_pick_photo, btn_cancel; 
    private View mMenuView; 
   
    public SelectPicPopupWindow(Activity context,OnClickListener itemsOnClick) {  //暴露出点击事件
        super(context); 
        LayoutInflater inflater = (LayoutInflater) context 
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        mMenuView = inflater.inflate(R.layout.alert_dialog, null); 
        btn_take_photo = (Button) mMenuView.findViewById(R.id.btn_take_photo); 
        btn_pick_photo = (Button) mMenuView.findViewById(R.id.btn_pick_photo); 
        btn_cancel = (Button) mMenuView.findViewById(R.id.btn_cancel); 
        //取消按钮 
        btn_cancel.setOnClickListener(new OnClickListener() { 
   
            public void onClick(View v) { 
                //销毁弹出框 
                dismiss(); 
            } 
        }); 
        //设置按钮监听 
        btn_pick_photo.setOnClickListener(itemsOnClick); 
        btn_take_photo.setOnClickListener(itemsOnClick); 
        //设置SelectPicPopupWindow的View 
        this.setContentView(mMenuView); 
        //设置SelectPicPopupWindow弹出窗体的宽 
        this.setWidth(LayoutParams.FILL_PARENT); 
        //设置SelectPicPopupWindow弹出窗体的高 
        this.setHeight(LayoutParams.WRAP_CONTENT); 
        //设置SelectPicPopupWindow弹出窗体可点击 

this.setFocusable(true); //设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.AnimBottom); //实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0xb0000000); //设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); //mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框 mMenuView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { int height = mMenuView.findViewById(R.id.pop_layout).getTop(); //高度 int y=(int) event.getY(); if(event.getAction()==MotionEvent.ACTION_UP){ if(y<height){ dismiss(); } } return true; } }); } }

2 ,使用的时候

//把文字控件添加监听,点击弹出自定义窗口 
         tv.setOnClickListener(new OnClickListener() {           
            public void onClick(View v) { 
                //实例化SelectPicPopupWindow 
                menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick); 
                //显示窗口 
                menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置 
            } 
        }); 
     } 
//其中的mian  id 必须在layout 中写出,不然,找不到id 就不会显示在屏幕中。 
     //为弹出窗口实现监听类 
     private OnClickListener  itemsOnClick = new OnClickListener(){   //pop的点击事件
   
        public void onClick(View v) { 
            menuWindow.dismiss(); 
            switch (v.getId()) { 
            case R.id.btn_take_photo: 
                break; 
            case R.id.btn_pick_photo:                
                break; 
            default: 
                break; 
            } 
              
                  
        } 
          
     };
原文地址:https://www.cnblogs.com/java-g/p/4431870.html