zoukankan      html  css  js  c++  java
  • 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; 
                } 
                  
                      
            } 
              
         };
  • 相关阅读:
    SHELL脚本扩展
    Linux服务器核心参数配置
    JavaIO系统
    SHELL脚本进阶
    计算机是怎么跑起来的?
    3年,从双非到百度的学习经验总结
    桥接模式:探索JDBC底层实现
    并发编程(三):从AQS到CountDownLatch与ReentrantLock
    并发编程(四):ThreadLocal从源码分析总结到内存泄漏
    Zookeeper:分布式程序的基石
  • 原文地址:https://www.cnblogs.com/java-g/p/4431870.html
Copyright © 2011-2022 走看看