popup window

时间:2014-06-28 09:32:54   收藏:0   阅读:404

本人小菜一个。目前只见过两种弹出框的实现方式,第一种是最常见的PopupWindow,第二种也就是Activity的方式是前几天才见识过。感觉很霸气哦。没想到,activity也可以做伪窗口。

先贴上最常见的方法,主要讲activity的方法。

一、弹出PopupWindow

bubuko.com,布布扣

          /**
           * 弹出menu菜单
           */
           public void menu_press(){
               if(!menu_display){
                   //获取LayoutInflater实例
                   inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
                   //这里的main布局是在inflate中加入的哦,以前都是直接this.setContentView()的吧?呵呵
                   //该方法返回的是一个View的对象,是布局中的根
                  layout = inflater.inflate(R.layout.main_menu, null);
                  
                  //下面我们要考虑了,我怎样将我的layout加入到PopupWindow中呢???很简单
                  menuWindow = new PopupWindow(layout,LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); //后两个参数是width和height
                  //menuWindow.showAsDropDown(layout); //设置弹出效果
                  //menuWindow.showAsDropDown(null, 0, layout.getHeight());
                  
                  //设置如下四条信息,当点击其他区域使其隐藏,要在show之前配置
                  menuWindow.setFocusable(true);
                  menuWindow.setOutsideTouchable(true);
                  menuWindow.update();
                  menuWindow.setBackgroundDrawable(new BitmapDrawable());
                                   
                  mClose = (LinearLayout)layout.findViewById(R.id.menu_close);
                  menuWindow.showAtLocation(this.findViewById(R.id.schoolmain), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0,50); //设置layout在PopupWindow中显示的位置
                  //如何获取我们main中的控件呢?也很简单
                  mMainbtn = (LinearLayout)layout.findViewById(R.id.menu_main_btn);
                  mHistorybtn = (LinearLayout) layout.findViewById(R.id.menu_history_btn);
                  mHelpbtn = (LinearLayout) layout.findViewById(R.id.menu_help_btn);
 
                  
                  
                  //下面对每一个Layout进行单击事件的注册吧。。。
                  //比如单击某个MenuItem的时候,他的背景色改变
                  //事先准备好一些背景图片或者颜色
                  mMainbtn.setOnClickListener (new View.OnClickListener() {
                      @Override
                      public void onClick(View arg0) {
                          mywebView.loadUrl(URL);
                          menuWindow.dismiss(); //响应点击事件之后关闭Menu
                      }
                  });
                  mHelpbtn.setOnClickListener (new View.OnClickListener() {
                      @Override
                      public void onClick(View arg0) {
                          mywebView.loadUrl(URL);
                          menuWindow.dismiss(); //响应点击事件
                      }
                  });
                  mHistorybtn.setOnClickListener (new View.OnClickListener() {
                      @Override
                      public void onClick(View arg0) {
                          mywebView.loadUrl(URL);
                          menuWindow.dismiss(); //响应点击事件
                      }
                  });    
                  menu_display = true;                
              }else{
                  //如果当前已经为显示状态,则隐藏起来
                  menuWindow.dismiss();
                  menu_display = false;
              }
             
          }
          
          public void back_press(){
 
              if(menu_display){         //如果 Menu已经打开 ,先关闭Menu
                  menuWindow.dismiss();
                  menu_display = false;
                  }
              else {
                  Intent intent = new Intent();
                  intent.setClass(MainActivity.this,Exit.class);
                  startActivity(intent);
              }
          }

这种方法很简单,要注意的是如果要想点击其他地方使其隐藏,要在show设置四条属性如下:

                                // 使其聚焦 
                                mPopupWindow.setFocusable(true); 
                                // 设置允许在外点击消失 
                                mPopupWindow.setOutsideTouchable(true); 
                                //刷新状态  
                                mPopupWindow.update(); 
                                  
                                //点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener ,设置其他控件变化等操作
                                mPopupWindow.setBackgroundDrawable(new BitmapDrawable());

以上文字摘自:http://www.cnblogs.com/winxiang/archive/2012/11/20/2778729.html

popup window,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!