自定义DialogFragment具有不同方向的不同动画

时间:2014-06-12 11:25:58

标签: android android-animation android-dialogfragment

我有一个自定义DialogFragment,其中包含通过Theme设置的自定义输入/输出动画。它具有不同的纵向和横向动画。问题是在显示对话框时更改方向。它会播放与创建对话框时设备的方向相对应的动画。有没有办法重新加载动画,以便从资源中获取适当的动画?

我已经尝试在onConfigurationChanged中再次设置动画,但没有效果。

CustomDialogFragment.java

public class CustomDialogFragment extends DialogFragment {
    @Override
    public int getTheme() {
        return R.style.CustomKeypadTheme;
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        getDialog().getWindow().setWindowAnimations(R.style.CustomAnimation_Window);
    }
}

styles.xml

<style name="CustomKeypadTheme" parent="@android:style/Theme.Panel">
    <item name="android:windowAnimationStyle">@style/CustomAnimation.Window</item>
</style>

<style name="CustomAnimation.Window" parent="@android:style/Animation.Activity">
    <item name="android:windowEnterAnimation">@anim/custom_animation_in</item>
    <item name="android:windowExitAnimation">@anim/custom_animation_out</item>
</style>

custom_animation_in.xml

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

    <translate
        android:fromXDelta="@dimen/custom_anim_deltaX"
        android:fromYDelta="@dimen/custom_anim_deltaY"
        android:toXDelta="0"
        android:toYDelta="0"
        android:duration="400" />

</set>

custom_animation_out.xml

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

    <translate
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="@dimen/custom_anim_deltaX"
        android:toYDelta="@dimen/custom_anim_deltaY"
        android:duration="400" />

</set>

custom_anim_deltaXcustom_anim_deltaY为纵向和横向定义了不同的值。

0 个答案:

没有答案