2013-02-25 123 views
11

どのようにしてDialogFragmentにアニメーションを追加できますか?私のアニメーションは、次のとおりです。DialogFragmentにアニメーションを追加するには?

アウトのアニメーション:アニメーションで

<scale 
    android:duration="200" 
    android:fillAfter="false" 
    android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:pivotX="50%" 
    android:pivotY="-90%" 
    android:startOffset="200" 
    android:toXScale="0.5" 
    android:toYScale="0.5" /> 

<translate 
    android:duration="300" 
    android:fromXDelta="0" 
    android:fromYDelta="0" 
    android:toXDelta="-200" 
    android:toYDelta="-200" /> 

<scale 
    android:duration="200" 
    android:fillAfter="false" 
    android:fromXScale="0.5" 
    android:fromYScale="0.5" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:pivotX="50%" 
    android:pivotY="-90%" 
    android:toXScale="1.0" 
    android:toYScale="1.0" /> 

<translate 
    android:duration="300" 
    android:fromXDelta="-200" 
    android:fromYDelta="-200" 
    android:toXDelta="0" 
    android:toYDelta="0" /> 

と私のコード:

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
       ft.setCustomAnimations(R.anim.jump_in, R.anim.jump_out, R.anim.jump_in, R.anim.jump_out); 
       ft.add(layer_frag, "layer frag"); 
       ft.show(layer_frag).commit();//layer_frag is a class whitch extends DialogFragment 

それが前に表示されることが表示されますので、私は何かを欠場しなければなりません。

+0

あなたの答えはこちら:http://stackoverflow.com/a/13537234/969325一言で言えば、ビルドされていないので、あなたの周りにあなたの道をハックする必要があります。 – Warpzit

+0

おそらくそうではありませんでした。それは私にとってもうまくいきませんでした:(それはレイアウトを少し変えましたが、アニメーションはapearではありません) – Csabi

+0

次に、ダイアログとして表示される独自のFragmentを残していると思います。 – Warpzit

答えて

15
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) 
{ 
    final Dialog dialog = super.onCreateDialog(savedInstanceState); 
    dialog.getWindow().getAttributes().windowAnimations = R.style.detailDialogAnimation; 
    return dialog; 
} 

答えはstackoverflow.com/a/13537234/969325からだったが、あなたはonCreateDialog機能にスタイルを設定する必要があります。

+0

これらのアニメーションが完了したときにコールバックを取得する方法があるかどうかを知っていますか?2部構成のアニメーションを作成したいのですが、ダイアログをスライドさせてから、 。 どうすればいいですか? windowAnimationsのリスナー? –

+0

setAnimationListener(新しいAnimationListener(){ \t \t \t \t \t \t \t \t \t \t \t \t公共ボイドonAnimationStart(アニメーションアニメーション){ \t \t \t \t \t // TODO自動生成方法スタブ \t \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t \t \t \t \t \t公共ボイドonAnimationRepeat(アニメーションアニメーション){ \t \t \t \t \t // TODO自動生成方法スタブ \t \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t \t \t \t \t公共ボイドonAnimationEnd(アニメーションアニメーション){ \t \t \t \t \t ladder.startAnimation(toRight)。 \t \t \t \t \t \t \t \t \t} \t \t \t})。 – Csabi

+0

'onCreateDialog'でスタイルを設定する必要はありません。なぜなら、' onCreateDialog'が呼び出された後でいつでも 'getDialog'を使ってダイアログを得ることができるからです。私は 'onViewCreated'のように呼び出しています。 – sotrh

関連する問題