popupwindow的基本使用以及基本動畫效果


1.創建一個popupwindow

view的布局文件自己寫一個就好了,這里就不說了

 1 View view= LayoutInflater.from(context).inflate(R.layout.view, null);
 2   //背景顏色
 3   view.setBackgroundColor(Color.WHITE);
 4   PopupWinow popupWindow = new PopupWindow(view,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
 5   //顯示(自定義位置)
 6   popupWindow .showAtLocation(button, Gravity.CENTER_HORIZONTAL  | Gravity.CENTER_VERTICAL, 0, 0);
 7   //popupWindow .showAsDropDown();//顯示在控件下面
 8   //關閉
 9   popupWindow.dismiss();
10   popupWindow.isShowing();//判斷當前popupwindow是否打開

2.經常用到的,點擊窗體外消失

1 // 需要設置一下此參數,點擊外邊可消失
2   popupWindow.setBackgroundDrawable(new BitmapDrawable(getResources(),
3     (Bitmap) null));
4   // 點擊窗外可取消
5   popupWindow.setTouchable(true);
6   popupWindow.setOutsideTouchable(true);

3.關於窗體會被軟件盤遮擋

1 // 設置pop被鍵盤頂上去,而不是遮擋
2   popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
3   popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

4.關於給popupwindow添加各種動畫效果(旋轉,漸現,平移...),至於動畫效果自己選

(1).給pop設置屬性 

1 popupWindow.setAnimationStyle(R.style.popwindow_anim_style); // 設置動畫

(2).然后就是在style樣式里面寫樣式了

1 <style name="popwindow_anim_style">
2         <item name="android:windowEnterAnimation">@anim/popup_show</item>
3         <!-- 指定顯示時的動畫xml -->
4         <item name="android:windowExitAnimation">@anim/popup_gone</item>
5         <!-- 指定消失時的動畫xml -->
6 </style>

(3).最后就是在anim里面配置動畫效果了

popup_show:

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android" >
3  <translate    
4         android:fromXDelta="-100%"    
5         android:toXDelta="0"    
6         android:fromYDelta="0"    
7         android:toYDelta="0"    
8         android:duration="500" />
9 </set>

popup_gone:

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android" >
3 <translate    
4         android:fromXDelta="0"    
5         android:toXDelta="-100%"    
6         android:fromYDelta="0"    
7         android:toYDelta="0"    
8         android:duration="300" />
9 </set>

5.pop的彈窗效果可以通過在AndroidManifest.xml里面設置成Theme.Dialog,

1 android:theme="@android:style/Theme.Dialog"

個人感覺如果頁面的內容稍復雜點不喜歡用pop容易出現各種問題。一提的是,使用activity回調時如果startActivityForResult()剛剛執行完就調用了onActivityResult()而沒有將相應的值傳回來,在AndroidManifest.xml里將當前activity的launchMode去掉

1 android:launchMode="singleTask"

6.遇到show后不顯示,設置寬高

etWidth(LayoutParams.WRAP_CONTENT);

setHeight(LayoutParams.WRAP_CONTENT);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM