加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 教程 > 正文

Android UI进阶之弹窗的实施

发布时间:2021-12-18 14:18:50 所属栏目:教程 来源:互联网
导读:讲下Android中的PopupWindow。姑且就叫做弹窗吧,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点。 下面就看看使用方法。首先初始化一个PopupWindow [java] PopupWindow mPop = new PopupWindow(getLayoutInflater().inflate(R.layo
讲下Android中的PopupWindow。姑且就叫做弹窗吧,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点。
下面就看看使用方法。首先初始化一个PopupWindow
 
[java]
PopupWindow  mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.window, null), LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
实现PopupWindow的构造函数,第一个参数导入布局,后面两个指定宽和高。
 
弹窗一般有两种展示方法,用showAsDropDown()和showAtLocation()两种方法实现。一般参数有两种,有偏移和无偏移。
 
[java]
bt1.setOnClickListener(new OnClickListener(){  
  
    @Override  
    public void onClick(View v) {  
        initPopWindow();  
        mPop.showAsDropDown(v);//以这个Button为anchor(可以理解为锚,基准),在下方弹出   
          
    }});  
        
      bt2.setOnClickListener(new OnClickListener(){  
  
    @Override  
    public void onClick(View v) {  
        initPopWindow();  
        mPop.showAsDropDown(v,20,-20);//横轴偏移20,纵轴-20,一个状态栏的长度   
          
    }});  
        
      bt3.setOnClickListener(new OnClickListener(){  
  
    @Override  
    public void onClick(View v) {  
        initPopWindow();  
        mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),   
                Gravity.CENTER, 0, 0);//在屏幕居中,无偏移   
          
    }});  
        
        
      bt4.setOnClickListener(new OnClickListener(){  
  
    @Override  
    public void onClick(View v) {  
        initPopWindow();  
        mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),   
                Gravity.TOP | Gravity.LEFT, 20, 20);//在屏幕顶部|居右,带偏移   
          
    }});  
        
      bt5.setOnClickListener(new OnClickListener(){  
  
    @Override  
    public void onClick(View v) {  
        if (mPop != null) {  
            mPop.dismiss();  
        }  
          
    }});  
        
  }  
其中initPopWindow()方法来初始化一个弹窗
 
[java]
private void initPopWindow() {  
    if (mPop == null) {  
        mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.pop, null),  
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
    }  
    if (mPop.isShowing()) {  
        mPop.dismiss();  
    }  
}  
这里定义了4个按钮来呈现展示效果,一个按钮用来关闭,来看下第三个按钮点击效果,就不一一截图了,大家可以自己试下。
 
 
 
看过我以前这系列博客的朋友就会发现,PopupWindow里面的布局就是抽屉里面用的布局,���面的背景就是上篇博客讲的可延伸图像。为什么用这个呢,我们来看下UC的menu效果

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读