【问题标题】:AnimatedVectorDrawable - reset() is not working properly on some Huawei devicesAnimatedVectorDrawable - reset() 在某些华为设备上无法正常工作
【发布时间】:2020-03-20 08:52:33
【问题描述】:

我们使用AnimatedVectorDrawable.reset() 将动画重置为其初始状态。这适用于大多数设备。在测试过程中,我们注意到在某些华为设备上,当调用reset() 时,动画开始运行。

在这些华为设备上复制:

  • ANE-LX1 - 安卓 8.0.0、EMIU 8.0.0
  • LYA-L29 - 安卓 10,EMIU 10.0.0

有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: android animation android-vectordrawable huawei-mobile-services animatedvectordrawable


    【解决方案1】:

    为了解决这个问题,我更新了动画以在它开始的状态下结束。这让我可以停止使用AnimatedVectorDrawable.reset()

    this article 的“陈旧状态”部分帮助我解决了问题。这是该部分的重要部分:

    在旧设备上,我发现它们的“状态”在每个循环中都没有被重置(按照 VectorDrawable 中的定义方式)。 ... 为了解决这个问题,我添加了一个零长度动画,以便在每个循环开始时将属性设置为它们的预期值,以便它们准备好进行动画处理,例如:

    <set>
        <objectAnimator
            android:propertyName="fillAlpha"
            android:valueFrom="0"
            android:valueTo="0"
            android:duration="0" />
        <objectAnimator
            android:propertyName="fillAlpha"
            android:valueFrom="0"
            android:valueTo="1"
            android:startOffset="1900"
            android:duration="60"
            android:interpolator="@android:interpolator/linear" />
    </set>
    

    这是将动画重置为其初始状态的部分:

        <objectAnimator
            android:propertyName="fillAlpha"
            android:valueFrom="0"
            android:valueTo="0"
            android:duration="0" />
    

    valueFromvalueTo 在第二个 objectAnimator 中等于 valueFrom

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      相关资源
      最近更新 更多