【问题标题】:How to reset view to original state after using animators to animates its some properties?使用动画师对其某些属性进行动画处理后,如何将视图重置为原始状态?
【发布时间】:2015-08-31 19:10:25
【问题描述】:

我正在使用 animators (ObjectAnimator) 对视图的几个属性 (缩放、旋转) 进行动画处理.

目标视图在设置了 ObjectAnimators 时可以正确设置动画。

但是有一个额外的要求是在一段时间后才能看到原始位置 (重置)

我尝试 cancel() 动画师,但它只会取消动画并且不会重置视图。

可能的解决方案:创建另一个与初始动画师正好相反的动画师。

还有其他方法可以重置吗?

【问题讨论】:

  • 是否需要在同一个动画中重置?像淡入淡出?
  • 我已经为它设置了持续时间。完成后,我想将其重置为原始的非动画状态,就像动画之前一样。当我们有 fillEnabled = false 时,我需要与视图动画相同的实现。
  • 然后尝试自定义插值器,例如 CycleInterpolator
  • @pskink CycleInterpolator 将适用于我的情况,我需要通过周期和持续时间调整进行一些更改。谢谢。
  • 这就是为什么我建议使用自定义插值器...

标签: android animation objectanimator viewpropertyanimator


【解决方案1】:

请参阅我想出的解决方案,因为我在回收站视图中的视图中存在类似的动画问题,因此我必须找到一种方法来重置它们:

Trying to reset values from Property Animator to be used in recycler view

好消息在 Android O 中这些将得到更好的支持

【讨论】:

    【解决方案2】:

    我的观点也有同样的问题。所以我用这个技巧解决了这个问题。 所以我们假设我们有一个视图,点击它后应用动画。

    
              viewLayout.arrow_back.setOnClickListener {arrow ->
                arrow.animate().rotationXBy(50F) // this is a just simple anim not so usefull
                    .start()
                arrow.isEnabled = false
            }
    
    

    我希望它会帮助某人。

    【讨论】:

      【解决方案3】:

      你的意思是停止正在运行的动画吗?如果是这样,请调用 clearAnimation() 从您调用 startAnimation(); 的视图中删除动画 如果您的意思是在动画结束后将视图重置为其原始外观,请始终将setFillAfter(false); 设置为动画。

      【讨论】:

      • 我的意思是将视图重置为未设置动画的位置,就像在应用动画师之前一样。 clearAnimation() 不起作用。它也是 PropertyAnimation 不是通常的视图动画。
      • 这是重置动画的正确解决方案。 setFillAfter(false); 完美地做到了。
      【解决方案4】:

      我遇到了同样的问题,因为我一次又一次地使用ViewPropertyAnimatoraddView()removeView() 为视图设置动画以不创建新视图,但是视图可以显示一次,当您删除视图时,您再次调用addview(),它没有显示,但是你看到属性可见性是可见的并且animationListener 也被调用了。很奇怪。

      【讨论】:

        猜你喜欢
        • 2019-04-12
        • 1970-01-01
        • 2021-09-05
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        • 2011-09-18
        相关资源
        最近更新 更多