• 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; 
                } 
                  
                      
            } 
              
         };
  • 相关阅读:
    Progressbar
    winform c# 打包
    WinForm中给DataGridView添加 自动编号
    ASP.NET页面的CheckBoxList组件
    C#截取DOS命令输出流取得网卡MAC地址
    get; set ; 害的我搞了一天
    WinForm(C#) 引用app.config文件中的数据库
    WinForm编程中 Enter自动登录设置
    vs新建解决方案,添加新项目,为什么不在解决方案中显示
    使用delegate实现两窗体传参代码
  • 原文地址:https://www.cnblogs.com/java-g/p/4431870.html
Copyright © 2020-2023  润新知