【问题标题】:OverridePendingTransition is not working strangelyOverridePendingTransition 工作不正常
【发布时间】:2016-08-04 11:42:10
【问题描述】:

我是 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。以下是文件内容:

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);

但是动画不起作用,新的 Activity 只是在短暂的延迟后显示(看起来等于滑动的持续时间,即 300ms)。

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

【问题讨论】:

    标签: java c# android animation xamarin


    【解决方案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>
    

    这应该可行。

    【讨论】:

    • 好吧,也许您自己已经尝试过了,并确保它有效。但是,我的代码也应该可以工作 if 我更正了一个非常小的错字,即 schemes 而它应该是 模式。不管怎样,谢谢你的帮助,至少我从你的回答中看到了那个错字:)
    • 太棒了!祝你有美好的一天!
    【解决方案2】:

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

    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>
    

    【讨论】:

    • 谢谢,不过时长不是问题,500甚至300就可以看到效果了。
    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 2014-08-19
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2023-04-10
    相关资源
    最近更新 更多