OverridePendingTransition不是很奇怪吗?

时间:2016-08-04 11:42:11

标签: java c# android animation xamarin

首先,我是Xamarin Android编程以及Android编程的新手。我成功运行了具有预期效果的以下代码:

//in the context of the main Activity
StartActivity(someIntent);
OverridePendingTransition(Android.Resource.Animation.SlideInLeft, 
                          Android.Resource.Animation.SlideOutRight);

现在我想创建自己的动画,用于从左侧滑动并使用XML声明从右侧滑出。我将XML文件分别放在名为slideInLeft.xmlslideOutRight.xml anim 文件夹下。以下是文件内容:

slideInLeft.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)。

这令我感到困惑。我对于为什么以及如何使其工作没有任何线索。 我相信Java开发人员编程Android也可以帮助解决这个问题,而不仅仅是使用Xamarin的人。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

尝试将您的xml文件更改为:

<强> slideInLeft

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="350"/>
</set>

<强> slideOutRight

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="350"/>
</set>

这应该有用。

答案 1 :(得分:0)

您尝试将持续时间设置得更长以查看转换:)

<强> 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>