我有一个自定义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_deltaX
和custom_anim_deltaY
为纵向和横向定义了不同的值。