9

片段动画无法正常使用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" />
4

3 回答 3

18

我只是遇到了同样的问题。支持库 27.1.0 似乎对使用 alpha 属性的动画转换存在问题。

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

我解决了切换到动画转换的问题。

即替换了我的/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"
    />

我对淡出过渡做了同样的事情。

于 2018-03-16T08:50:12.767 回答
5

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

于 2018-04-06T20:00:32.437 回答
3

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

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

但是,我找到了解决此错误的方法:如果禁用输入动画,过渡仍然会消失。它不会以与以前完全相同的方式褪色,但在我看来它看起来不错(甚至更好)。

新的进入动画(我已经命名nothing.xml)是:

<?xml version="1.0" encoding="utf-8"?>
<set/>
于 2018-03-13T09:35:18.297 回答