【问题标题】:Delay an entire repeating xml animation延迟整个重复的 xml 动画
【发布时间】:2014-11-18 16:52:40
【问题描述】:

如何延迟 xml 中的重复动画?

 <!-- wobbling animation -->
<translate
    android:fromXDelta="0"
    android:toXDelta="10"
    android:duration="50"
    android:repeatCount="5"
    android:repeatMode="reverse"
    android:interpolator="@android:anim/accelerate_interpolator"/>

此动画快速前后摆动视图。我想在一段时间后运行它(比如 1000 毫秒)。 在此处添加 startOffset 会延迟每次翻译,而不是整个翻译。 有没有简单的选项可以解决此问题?我也打算把其他动画放到xml里。

编辑: 为清楚起见:在此处添加 1000 毫秒的起始偏移会导致动画等待 1000 毫秒,滑过 50 毫秒,再等待 1000 毫秒,滑回,再次等待等等。我希望它只等待一次。

【问题讨论】:

    标签: android android-animation android-xml


    【解决方案1】:

    你不能使用 startOffset 因为它是同一个动画。您可以将其分解为正向/反向动画并偏移正向动画(所有 XML)或按照建议在代码块中使用 Handler。

    【讨论】:

    • 真可惜 :D 至少我现在知道了!
    • 您可以做的另一件事是扩展Animation 类并覆盖startOffset(long delay) 以实现可重用性。
    【解决方案2】:
    @Override 
    public void onClick(View v) {
    
    //sleep for x milliseconds
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
         public void run() { 
              //do your stuff here
         } 
    }, x); 
    

    }

    在这里,您的 onclick 发生的任何事情都将在暂停 x 毫秒后发生

    【讨论】:

    • 嗨 Hirak,我已经加粗了提到这不会产生所需行为的位
    • ohh .. 抱歉没看到...但是你所说的“startOffset 这里的每个翻译延迟了偏移量而不是整个事情”的确切含义是什么?我的意思是你所说的整体是什么意思?
    • 嗯,持续时间设置为 50 毫秒,所以这个动画向右滑动超过 50 毫秒,然后离开超过 50 毫秒,然后重复。添加 1000 毫秒的起始偏移会导致动画等待 1000 毫秒、滑动超过 50 毫秒、再等待 1000 毫秒、向后滑动、再次等待等等。我希望它只等待一次。
    • 我已经更新了我的答案。希望对您有所帮助...现在,如果您想在 x 毫秒的睡眠期间进行 UI 更改,请在 UI 上运行线程
    • 嗯,谢谢,如果可能的话,我只想通过 xml 来做这个,特别是如果我将它与其他动画结合起来
    猜你喜欢
    • 2017-12-04
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    • 2019-08-15
    相关资源
    最近更新 更多