重用ViewPropertyAnimator对象的问题

时间:2018-09-21 23:02:52

标签: android android-animation

使用简单的View的{​​{1}}效果很好,但是当我将返回的animate()分配给变量并尝试在其上调用ViewPropertyAnimator时,似乎根本没有用。

我尝试和起作用的东西:

start()

我尝试了什么但不起作用:

view.animate()
        .alpha(0)
        .setDuration(400)
        .start();

编辑:

我确保调用了回调,这意味着确实调用了public CustomViewConstructor() { ViewPropertyAnimator animation = view.animate() .alpha(0) .setDuration(400); // problem #1: Starts immediately here ViewPropertyAnimator animation2 = view.animate() .alpha(0.5) .setDuration(100); } customViewCallback() { animation.start(); // problem #2: animation2 will be cached and used instead } ,但我完全看不到结果。

我有理由求助于这种分离,因为我想在其他时间取消动画。通过引用取消动画的任何其他方式也将受到赞赏。


编辑:

我在其构造函数中的同一视图中使用了两个不同的动画,交换了hide动画和show animation位置,最后声明了show animation的位置,并获得了不同的输出。视图停留在show动画的最后一帧,这意味着以前它也停留在hide动画的最后一帧。这仍然表明start()没有开始播放动画!


编辑:

根据文档显示,start()仅在我们要立即同步开始动画而不是在准备好时就开始播放时才使用,因此在构造函数中声明动画意味着它们都从动画开始同时。

到目前为止,我使用这种方法面临的问题是:

  1. 存储在变量中的ViewPropertyAnimator始终是使用start()构建的最后一个变量,类似于内置的“缓存”。
  2. 实际上动画是立即开始的,不需要animate()
  3. 在我手动调用start()之前,找不到真正暂停动画的方法。

0 个答案:

没有答案