下面的代码在Codename One模拟器上可以正常工作,即:
因此过渡时间总计应为三秒。
但是在实际设备上,第三个表格几乎立即显示出来。我的代码有什么问题?
// Transition from startForm to loginForm
startForm.show();
startForm.setTransitionOutAnimator(CommonTransitions.createFade(2000));
emptyForm.show();
emptyForm.setTransitionOutAnimator(CommonTransitions.createFade(1000));
UITimer.timer(2000, false, emptyForm, new Runnable() {
@Override
public void run() {
loginForm.show();
}
});
最佳答案
show()
是非阻塞的,因此按这样的顺序调用它不是一个好主意。它可能会减少过渡时间效果,甚至发生冲突。
实现此目的的方法是:
startForm.addShowListener(e -> {
emptyForm.addShowListener(ee -> loginForm.show());
emptyForm.show();
});