popupwindow 顯示和消失的動畫
前段時間搞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="http://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="http://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 ! 趕快試試吧!*~*