support-v4:27.1.0片段自定义动画无法按预期工作

时间:2018-03-08 18:43:51

标签: android support-v4

片段动画无法与support-v4:27.1.0

一起正常使用
getSupportFragmentManager()
       .beginTransaction()
       .setCustomAnimations(ENTER_ANIM , LEAVE_ANIM)
       .replace(R.id.main_activity_fragment_place_holder, fragment)
       .addToBackStack(tag)
       .commitAllowingStateLoss();

输入动画

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />

留下动画

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="500" />

3 个答案:

答案 0 :(得分:15)

我刚刚遇到同样的问题。支持库27.1.0似乎与使用alpha属性的动画转换有问题。

我的印象是转换引擎没有正确实现“填充后”,因此片段alpha在删除片段之前会快速反弹回1。这会导致闪烁效果,其中被替换的片段会短暂可见,然后消失。

我解决了问题切换到 animator 过渡。

即。替换了我的 /res/anim/fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0"
    android:toAlpha="1"
    android:duration="500"
    />

使用类似的 /res/animator/fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="alpha"
    android:valueFrom="0"
    android:valueTo="1"
    android:duration="500"
    />

我为 fade_out 过渡做了同样的事。

答案 1 :(得分:5)

闪烁效果已在最新的支持库版本27.1.1中修复。 (见问题74051124

答案 2 :(得分:3)

将支持库从27.0.2升级到27.1.0后,我遇到了完全相同的问题。碎片没有平滑地褪色,而是闪烁了几次。

似乎所有动画师都按预期工作,除了alpha动画师。

但是,我找到了此错误的解决方法:如果禁用输入动画,则转换仍会消失。它并没有像以前那样褪色,但在我看来它看起来很好(甚至更好)。

新的输入动画(我名为nothing.xml)是:

<?xml version="1.0" encoding="utf-8"?>
<set/>