歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android UI進階之彈窗的使用

講下Android中的PopupWindow。姑且就叫做彈窗吧,其實和AlertDialog一樣,也是一種對話框,兩者也經常混用,但是也各有特點。

下面就看看使用方法。首先初始化一個PopupWindow 

[java]

  1. PopupWindow  mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.window, null), LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  

實現PopupWindow的構造函數,第一個參數導入布局,後面兩個指定寬和高。

彈窗一般有兩種展示方法,用showAsDropDown()和showAtLocation()兩種方法實現。一般參數有兩種,有偏移和無偏移。

[java]

  1. bt1.setOnClickListener(new OnClickListener(){  
  2.   
  3.     @Override  
  4.     public void onClick(View v) {  
  5.         initPopWindow();  
  6.         mPop.showAsDropDown(v);//以這個Button為anchor(可以理解為錨,基准),在下方彈出   
  7.           
  8.     }});  
  9.         
  10.       bt2.setOnClickListener(new OnClickListener(){  
  11.   
  12.     @Override  
  13.     public void onClick(View v) {  
  14.         initPopWindow();  
  15.         mPop.showAsDropDown(v,20,-20);//橫軸偏移20,縱軸-20,一個狀態欄的長度   
  16.           
  17.     }});  
  18.         
  19.       bt3.setOnClickListener(new OnClickListener(){  
  20.   
  21.     @Override  
  22.     public void onClick(View v) {  
  23.         initPopWindow();  
  24.         mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),   
  25.                 Gravity.CENTER, 00);//在屏幕居中,無偏移   
  26.           
  27.     }});  
  28.         
  29.         
  30.       bt4.setOnClickListener(new OnClickListener(){  
  31.   
  32.     @Override  
  33.     public void onClick(View v) {  
  34.         initPopWindow();  
  35.         mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),   
  36.                 Gravity.TOP | Gravity.LEFT, 2020);//在屏幕頂部|居右,帶偏移   
  37.           
  38.     }});  
  39.         
  40.       bt5.setOnClickListener(new OnClickListener(){  
  41.   
  42.     @Override  
  43.     public void onClick(View v) {  
  44.         if (mPop != null) {  
  45.             mPop.dismiss();  
  46.         }  
  47.           
  48.     }});  
  49.         
  50.   }  

其中initPopWindow()方法來初始化一個彈窗

[java]

  1. private void initPopWindow() {  
  2.     if (mPop == null) {  
  3.         mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.pop, null),  
  4.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
  5.     }  
  6.     if (mPop.isShowing()) {  
  7.         mPop.dismiss();  
  8.     }  
  9. }  

這裡定義了4個按鈕來呈現展示效果,一個按鈕用來關閉,來看下第三個按鈕點擊效果,就不一一截圖了,大家可以自己試下。

看過我以前這系列博客的朋友就會發現,PopupWindow裡面的布局就是抽屜裡面用的布局,���面的背景就是上篇博客講的可延伸圖像。為什麼用這個呢,我們來看下UC的menu效果

Copyright © Linux教程網 All Rights Reserved