歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android UI進階之彈窗的使用

Android UI進階之彈窗的使用

日期:2017/3/1 10:38:01   编辑:Linux編程
講下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. @Override
  3. public void onClick(View v) {
  4. initPopWindow();
  5. mPop.showAsDropDown(v);//以這個Button為anchor(可以理解為錨,基准),在下方彈出
  6. }});
  7. bt2.setOnClickListener(new OnClickListener(){
  8. @Override
  9. public void onClick(View v) {
  10. initPopWindow();
  11. mPop.showAsDropDown(v,20,-20);//橫軸偏移20,縱軸-20,一個狀態欄的長度
  12. }});
  13. bt3.setOnClickListener(new OnClickListener(){
  14. @Override
  15. public void onClick(View v) {
  16. initPopWindow();
  17. mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),
  18. Gravity.CENTER, 0, 0);//在屏幕居中,無偏移
  19. }});
  20. bt4.setOnClickListener(new OnClickListener(){
  21. @Override
  22. public void onClick(View v) {
  23. initPopWindow();
  24. mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),
  25. Gravity.TOP | Gravity.LEFT, 20, 20);//在屏幕頂部|居右,帶偏移
  26. }});
  27. bt5.setOnClickListener(new OnClickListener(){
  28. @Override
  29. public void onClick(View v) {
  30. if (mPop != null) {
  31. mPop.dismiss();
  32. }
  33. }});
  34. }

其中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