2012-04-12 57 views
1

我無法設法讓動畫的fillAfter屬性工作。 我在xml的動畫中使用了它,但它總是跳到最後的標準對話框位置。這甚至有可能嗎?對話框動畫填充後不起作用

目前在動畫滑動以xml:

<set 
android:fillAfter="true" 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<translate 
    android:fromXDelta="100%" 
    android:toXDelta="70%" 
    android:fromYDelta="100%" 
    android:toYDelta="70%" 
    android:duration="2000" /> 

</set> 

的的themes.xml正被施加到對話框:

<style name="theme_dialog" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowAnimationStyle">@style/style_slide_in_dialog</item> 
</style> 

<style name="style_slide_in_dialog"> 
    <item name="android:windowEnterAnimation">@anim/animation_slide_in_dialog</item> 
    <item name="android:windowExitAnimation">@anim/animation_slide_out_dialog</item> 
</style> 
+0

您是否找到基於XML的解決方案?如果是這樣,請考慮更新這篇文章。 – RichieHH 2014-07-20 20:47:47

回答

0

動畫像TranslateAnimation是暫時的。如果要在動畫完成時保持效果,則需要註冊一個AnimationListener並執行一些操作以使更改在onAnimationEnd()中保持永久。例如,對於TranslateAnimation,您需要調整您的LayoutParams以使其位於您的最終位置。

+0

這是不正確的。如果使用Animation:setFillAfter方法或XML android:fillAfter屬性,動畫應該保持不變。 – RichieHH 2014-07-20 20:47:14

+0

@RichieHH:首先,這是指一種相當過時的技術,除非你仍然支持小於11的'minSdkVersion'。其次,'fillAfter'只會使動畫*出現在最終位置。它僅控制繪製像素的位置,而不控制觸摸輸入的來源。在大多數情況下這相當無用;因此,您需要做一些動作才能使動畫完成。 – CommonsWare 2014-07-21 01:36:13