OverridePendingTransition的工作方式并不奇怪
本文关键字:方式 工作 OverridePendingTransition | 更新日期: 2023-09-27 18:01:00
我是Xamarin Android编程以及一般Android编程的初学者。我成功运行了以下代码,达到了预期效果:
//in the context of the main Activity
StartActivity(someIntent);
OverridePendingTransition(Android.Resource.Animation.SlideInLeft,
Android.Resource.Animation.SlideOutRight);
现在,我想使用XML声明创建自己的从左滑动和从右滑动的动画。我将XML文件放在anim文件夹下,名称分别为slideInLeft.xml
和slideOutRight.xml
。以下是文件的内容:
幻灯片左xml:
<?xml version="1.0" encoding="utf-8" ?>
<translate xmlns:android="http://schemes.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="-100%"
android:toXDelta="0%">
</translate>
slideOutRight.xml:
<?xml version="1.0" encoding="utf-8" ?>
<translate xmlns:android="http://schemes.android.com/apk/res/android"
android:duration="350"
android:fromXDelta="0%"
android:toXDelta="100%">
</translate>
现在代码只是简单地更改为:
//in the context of the main Activity
StartActivity(someIntent);
OverridePendingTransition(Resource.Animation.SlideInLeft,
Resource.Animation.SlideOutRight);
但动画不起作用,新的"活动"只是在短暂的延迟后显示(看起来等于滑动的持续时间,其中为300ms
(。
这让我很困惑。我不知道为什么以及如何做到这一点。
尝试将xml文件更改为:
幻灯片左侧
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="350"/>
</set>
和
向右滑动
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
android:duration="350"/>
</set>
这应该行得通。
您尝试将持续时间设置得更长以查看转换:(
slideInLeft.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000"
android:fromXDelta="-100%"
android:toXDelta="0%"/>
<alpha android:duration="5000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
slideOutRight.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000"
android:fromXDelta="0%"
android:toXDelta="100%"/>
<alpha android:duration="5000"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>