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.xmlslideOutRight.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(。

这让我很困惑。我不知道为什么以及如何做到这一点。

OverridePendingTransition的工作方式并不奇怪

尝试将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>