代号一 – 从FormA到FormB到FormC的转换

以下代码在Codename One模拟器上按预期工作,即:

  • 先显示表单(startForm)
  • 淡入第二个窗体(emptyForm)两秒钟
  • 淡入到第三个表单(loginForm)

所以过渡时间应该是三秒钟。

但在真实的设备上,第三个表格几乎立即显示。 我的代码有什么问题?

// 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()是非阻塞的,所以按顺序调用它不是一个好主意。 它可以减less过渡时间的影响,甚至发生碰撞。

完成这个的方法是:

 startForm.addShowListener(e -> { emptyForm.addShowListener(ee -> loginForm.show()); emptyForm.show(); });