Litho animation examples全部在用户触发事件时开始。但是我需要立即开始并无限期继续的动画。换句话说,我的问题与How to run a Litho animation automatically?相同,但是我需要一种针对Litho动画的解决方案,而不是基本的Android动画。
请注意,当我尝试修改Litho的示例之一以在没有用户事件的情况下启动动画时,我问了一个相关的问题How to run a Litho animation automatically?。但是我现在要问的问题是动画一旦开始如何重复播放?
答案 0 :(得分:0)
要自动启动Litho动画并无限期重复,我通过启动RTAnimationComponentSpec来修改TimerTask
:
@OnCreateInitialState
static void createInitialState(
ComponentContext c) {
startRepeatingAnimation(c);
}
static void startRepeatingAnimation(final ComponentContext c) {
Log.e(TAG, "Repeat animation handler: about to scheduleAtFixedRate");
TimerTask animateRepeat = new java.util.TimerTask() {
public void run() {
try {
Log.e(TAG, "Repeat animation handler: about to updateStateAsync");
RTAnimationComponent.updateStateAsync(c);
} catch (Exception e) {
Log.e(TAG, "Repeat animation handler: exception while animating: [" + e + "]");
}
}
};
new java.util.Timer().scheduleAtFixedRate(animateRepeat, 0, FADE_IN_OUT_DURATION + FADE_IN_DELAY + FADE_IN_STAGGER_DELAY);
}
private static final String TAG = "RTComponentSpec";
我不确定这是否是createInitialState()
的有效用法。根据文档,它是“为状态设置初始值”。按照状态,Litho的意思是variables marked @State。非正式地,动画是状态的一部分,TimerTask
确实需要启动。从语义上来说,初始化TimerTask
似乎属于创建初始状态。
根据经验,日志显示了我想要的内容。最初的日志消息“重复动画处理程序:即将到scheduleAtFixedRate”出现一次,然后定期出现“重复动画处理程序:即将到updateStateAsync”。
我想该解决方案也可以与其他Android机制配合使用,以定期安排工作