为什么我的亲密行为动画没有在Android 4.0下运行(ICS)(Why my close act

2019-06-26 05:31发布

我做了一个主题,用自定义动画(向上滑动和向下滑动)。 动画作品在较旧的Android版本精细。但是,当我尝试它在Android 4.0(ICS)的上关闭动画不起作用。 只有滑动画作品在ICS罚款。

这是我的主题我使用的动画:

<style name="myTheme" parent="android:Theme.Black">
    <item name="android:windowTitleSize">45dip</item>
    <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
    <item name="android:windowAnimationStyle">@style/myTheme.Window</item>
</style>

<style name="myTheme.Window" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/push_up_in_no_alpha</item>
    <item name="android:activityOpenExitAnimation">@anim/no_anim</item>
    <item name="android:activityCloseEnterAnimation">@anim/no_anim</item>
    <item name="android:activityCloseExitAnimation">@anim/push_down_out_no_alpha</item>
</style>

这里是push_down_out_no_alpha.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromYDelta="0" android:toYDelta="100%p"
        android:duration="@android:integer/config_longAnimTime"/>
</set>

当我设置了动画代码也能正常工作在ICS,但为什么不作为主题?

 this.overridePendingTransition(R.anim.no_anim,R.anim.push_down_out_no_alpha);

有谁知道为什么它不工作在Android 4.0(ICS)?

Answer 1:

从清单中指定的动画出现在ICS被打破:-(的覆盖动画解决方案的工作很好,但你可能不希望硬编码的动画。这将是很好,从清单让他们,你会为其他该平台的版本..所以....

添加几个成员字段到你的活动举行连接到你的活动动画的ID ..

protected int activityCloseEnterAnimation;
protected int activityCloseExitAnimation;

并在某处你的onCreate ...

// Retrieve the animations set in the theme applied to this activity in the
// manifest..
TypedArray activityStyle = getTheme().obtainStyledAttributes(new int[] {android.R.attr.windowAnimationStyle});
int windowAnimationStyleResId = activityStyle.getResourceId(0, 0);      
activityStyle.recycle();

// Now retrieve the resource ids of the actual animations used in the animation style pointed to by 
// the window animation resource id.
activityStyle = getTheme().obtainStyledAttributes(windowAnimationStyleResId, new int[] {android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation});
activityCloseEnterAnimation = activityStyle.getResourceId(0, 0);
activityCloseExitAnimation = activityStyle.getResourceId(1, 0);
activityStyle.recycle();

那么无论你的活动结束/应适用的动画包括...

overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);

和你的活动应该正确履行您在连接到活动中您的清单主题/样式设置动画。



Answer 2:

我也试过,但它不是在这里工作。 不知道是什么问题,但this.overridePendingTransition(R.anim.no_anim,R.anim.push_down_out_no_alpha); 此代码工作正常



文章来源: Why my close activity animation doesn't work on Android 4.0 (ICS)