android PopupWindow 動畫效果 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

前段時間搞android 動畫,在頁面中使用動畫後效果還是很不錯的,大大提升瞭用戶的體驗感。 但是,偶然的機會,要在popupwindow 中,添加一個 顯示和消失的動畫,我用之前的動畫效果,居然顯示效果不對瞭。

 

同樣是相同的代碼,在頁面上,就可以很好的顯示,但是在popupwindow 上顯示的效果,就不一樣瞭。

 

eg:

 

  //顯示動畫

 

  ScaleAnimation myanim = new ScaleAnimation

  (0.0f, 1.1f, 0.0f, 1.1f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,  0.5f);

  myanim.setDuration(duration); //設置時間間隔

 

  //隱藏動畫

 

  ScaleAnimation myanim = new ScaleAnimation

  (1.0f, 0.0f, 1.0f, 0.0f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,  0.5f);

  myanim.setDuration(duration); //設置時間間隔

 

 

  這兩個動畫,就是一個簡單的 以 視圖的中心為參照點,放大顯示,縮小隱藏 的動畫效果。 在頁面中,使用沒有任何問題。但是在彈出的popupwindow上,卻出現瞭,從左上角開始慢慢擴大的效果。

 

  起初以為是,設置 運動動畫view 的問題,但是經過反復調整還是無果。 最後,終於找到瞭答案。

 

 

 

以下是解決方法:

 

 

 

1> 首先定義好,顯示和消失的動畫xml;

 

 eg:

 

<!– 顯示動畫–>

 

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="https://schemas.android.com/apk/res/android">

<scale  android:interpolator="@android:anim/accelerate_decelerate_interpolator"

          android:fromXScale="0.0"

          android:toXScale="1.0"

          android:fromYScale="0.0"

          android:toYScale="1.0"

          android:pivotX="50%"

          android:pivotY="50%"

          android:fillAfter="false"

          android:duration="200" >

 

</scale>

</set>

 

<!– 消失動畫–>

 

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="https://schemas.android.com/apk/res/android">

 <!– 透明度漸變–>

 <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="200" />

</set>

 

 

 

2>  popupwindow 的顯示和消失動畫,是通過setAnimationStyle(int id) 的方法,來設置動畫的。 這個方法的參數是,一個style 的id ;

 

     所以需要一個 動畫style;

 

eg:

 

  <!– popwidnow 顯示消失 動畫–>

 <style name="mypopwindow_anim_style">

  <item name="android:windowEnterAnimation">@anim/popshow_anim</item>        <!– 指定顯示的動畫xml  –>

   <item name="android:windowExitAnimation">@anim/pophidden_anim</item>       <!– 指定消失的動畫xml  –>

 </style>

 

3> 在代碼中,添加popupwindow 動畫;

 

  eg:

 

  PopupWindow myimgpopupwindow = new PopupWindow( View (要顯示的view對象), LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

  myimgpopupwindow.setAnimationStyle(R.style.mypopwindow_anim_style); //設置動畫

 

  myimgpopupwindow.showAtLocation( View( 參照的view對象), Gravity.CENTER, 0, 0);     //居中來顯示

 

 

 

好瞭,1,2,3, 搞定!這下,你是不是也會給popupwindow設置顯示消失動畫瞭?  Come on  ! 趕快試試吧!*~*

 

摘自 zjl5211314的專欄

發佈留言