我已经宣布了两个自定义动画,它们在运行Android 2.3.5 HTC Sense 3.5的HTC Desire上工作正常(自定义ROM,Endymion V3.5,所以我可以在ICS之前在OS上测试)。在打开新活动时,新屏幕从右侧滑入,在关闭当前活动时,新屏幕从左侧滑入,所以一切都很好。我的代码是:
overridePendingTransition(com.my.app.R.anim.slidein, com.my.app.R.anim.slideout);
声明动画的xmls如下:
slidein.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
slideout.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
然而,问题出现了。
相同的apk部分适用于Nexus4。打开新活动时,它可以正常工作,新屏幕从右侧滑入。关闭当前活动时,前一个屏幕只显示默认动画,忽略我的自定义动画。我的Nexus4上有Unofficial CM 10.2, with android 4.3。
我的问题是:它应该在Android 4.3上运行吗?也许在更新的API级别上,还有另一种方法,我需要调用才能实现这一目标吗?任何帮助表示赞赏!
干杯
编辑:我宣布了自定义退出动画,并且与建议的解决方案相结合,它现在按预期工作。
closeslidein.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
closeslideout.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
完成过程:
@Override
public void finish()
{
super.finish();
overridePendingTransition(com.my.app.R.anim.closeslidein, com.my.app.R.anim.closeslideout);
}
答案 0 :(得分:1)
确保正确拨打电话。如果您明确地呼叫finish()
,则需要立即致电overridePendingTransition()
。如果您未明确调用finish()
,则需要覆盖onBackPressed()
并在其中调用overridePendingTransition()
。