下面的代码在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()是非阻塞的,因此按这样的顺序调用它不是一个好主意。它可能会减少过渡时间效果,甚至发生冲突。

    实现此目的的方法是:

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

    10-07 19:21
    查看更多