浅谈PopupWindow

来源:互联网 发布:ant 构建java web项目 编辑:程序博客网 时间:2024/05/24 01:01
首先要了解PopupWindow是什么:PopupWindow要和AlertDialog类似的一个弹窗效果
其次既然和AlertDialog类似那么PopupWindow和AlertDialog有什么区别?
    AlertDialog是固定位置显示的,而PopupWindow是随意显示的
    AlertDialog是非线程阻塞的,而PopupWindow是线程阻塞的
然后PopupWindow的显示方式:
    在父控件的正下方:PopupWindow.showAsDropDown(View v);
    相对父控件有偏移:PopupWindow.showAsDropDown(View v,int x,int y);
    设置父控件相对位置,可设置有无偏移:PopupWindow.showAsDropDown(View v,int gravity ,int x,int y);(gravity可设置为Gravity.CENTER);
    以及自定义生成PopupWindow;
PopupWindow实例:
声明:PopupWindow mPopupWindow;

创建点击监听事件,这个我就不说了吧;
监听执行事件:
    
getInstents();
    mPopupWindow.showAsDropDown(v); (显示PopupWindow对话框)

判断当前对话框是否存在,如果存在者清除对话框,如果不存在则生成新的对话框:
public void getInstents(){
     if(null!=mPopupWindow){
     mPopupWindow.dismiss();
     return;
     }else{
     initPopup();
     }
    }
 创建PopupView的布局样式,什么样的都可以;
 初始化PopupWindow:
 public void initPopup(){
     LayoutInflater layoutInflater=LayoutInflater.from(this);
     View popupView=layoutInflater.inflate(R.layout.ae, null);
     mPopupWindow=new PopupWindow(popupView,  WindowManager.LayoutParams.WRAP_CONTENT,
     WindowManager.LayoutParams.WRAP_CONTENT);  
      设置SelectPicPopupWindow弹出窗体可点击
        mPopupWindow.setFocusable(true);
        mPopupWindow.setOutsideTouchable(true);
        实例化一个ColorDrawable颜色为半透明
      ColorDrawable dw = new ColorDrawable(0000000000);
      点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener ,设置其他控件变化等操作
      mPopupWindow.setBackgroundDrawable(dw);
    } 
到这里,简单的PopupWindow已经可以生成。这里生成的是简易的PopupWindow,主要用于认识PopupWindow。
深入PopupWindow将在接下来的博客中表述,自定义PopupWindow也将在后续文章中补充
附:Demo[http://pan.baidu.com/s/1qXKauQC]
0 0