2016-12-26 11 views
1

アニメーションを3つ連続して翻訳しようとしています。基本的にはダイアログのフラグメントを画面の下から上に移動し、画面の一番上に達した後少し下に移動してからもう一度上に移動します。ここで私は何をすべきかです:逐次変換アニメーションが期待通りに機能しない

slide_bottom_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:duration="300" 
     android:fromYDelta="100%p" 
     android:toYDelta="0"/> 

    <translate 
     android:startOffset="300" 
     android:duration="300" 
     android:fromYDelta="0" 
     android:toYDelta="10%p"/> 

    <translate 
     android:startOffset="600" 
     android:duration="300" 
     android:fromYDelta="10%p" 
     android:toYDelta="0"/> 
</set> 

と私は設定私のDialogFragmentのonCreateView()メソッドで:

getDialog().getWindow().getAttributes().windowAnimations = R.style.dialogAnimation; 

、ここではdialogAnimationは私のstyles.xmlファイルに

あります
<style name="dialogAnimation"> 
    <item name="android:windowEnterAnimation">@anim/slide_bottom_in</item> 
    <item name="android:windowExitAnimation">@anim/slide_top_out</item> 
</style> 

しかし、これは期待どおりに機能しません。最初にまで移動しますが、ページの先頭には到達しません。、次に上下に移動しますが、期待どおりにページの上部に到達しません。アニメーションが終了すると、フラグメントは直ちに上に移動します(アニメーションなし)。私のXMLに何が間違っているのかについての考えはありますか?

ありがとうございました。

答えて

0

解決策が見つかりました。

まず、最初の翻訳アニメーションにstartOffsetを指定しませんでした。これがトップに達しなかった理由です。第2に、3番目の翻訳アニメーションのYDeltaとXDeltaから変更する必要があります。以下の解決策は次のとおりです。

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

    <translate 
     android:startOffset="1" 
     android:duration="400" 
     android:fromYDelta="100%p" 
     android:toYDelta="0"/> 

    <translate 
     android:startOffset="401" 
     android:duration="500" 
     android:fromYDelta="0" 
     android:toYDelta="7%p"/> 

    <translate 
     android:startOffset="901" 
     android:duration="500" 
     android:fromYDelta="0" 
     android:toYDelta="-7%p"/> 

</set> 
関連する問題