首先,我是Xamarin Android编程以及Android编程的新手。我成功运行了具有预期效果的以下代码:
//in the context of the main Activity
StartActivity(someIntent);
OverridePendingTransition(Android.Resource.Animation.SlideInLeft,
Android.Resource.Animation.SlideOutRight);
现在我想创建自己的动画,用于从左侧滑动并使用XML声明从右侧滑出。我将XML文件分别放在名为slideInLeft.xml
和slideOutRight.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的人。
非常感谢你的帮助!
答案 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>