与其他动画一起使用时,淡化动画不能正常工作

时间:2016-05-22 06:34:00

标签: codenameone

我将组件滑动组件与其他组件淡入淡出动画组合在一起。但是组件在淡入之前会出现一秒钟。这里的表单是分层布局。由于还有其他组件彼此重叠。一切正常但我申请淡入的问题也有同样的问题。我附上了下面的GIF图片。

enter image description here

beforeSplash(表格f):

f.setLayout(new LayeredLayout());
Container bottomContainer = new Container(new BoxLayout(BoxLayout.X_AXIS));
f.add(FlowLayout.encloseBottom(bottomContainer));

Container appleContainer = new Container(new FlowLayout(Component.CENTER, Component.BOTTOM));
appleLabel = new Label(apple);
appleLabel.setVisible(false);
appleContainer.add(appleLabel);

bottleLabel = new Label(bottle);

bottomContainer.add(appleContainer);
bottomContainer.add(bottleLabel);
bottleLabel.setVisible(false);

postSplash(表格f):

bottleLabel.setVisible(true);
arrangeForSlide(bottleLabel);
bottleLabel.getParent().animateLayoutAndWait(2000);

appleLabel.setVisible(false);
appleLabel.setVisible(true);
appleLabel.getParent().animateLayoutFadeAndWait(2500, 0);
f.revalidate();

幻灯片动画:

private void arrangeForSlide(Label c) {
    c.setX(-c.getWidth());
}

更新

    bottleLabel.setVisible(true);
    arrangeForSlide(bottleLabel);
    bottleLabel.getParent().animateLayoutAndWait(2000);
    new Thread() {
        public void run() {
            Display.getInstance().callSerially(new Runnable() {
                public void run() {
                    appleContainer.setVisible(true);
                    appleContainer.animateLayoutFadeAndWait(2000, 0);
                }
            });
        }
    }.start();

现在我需要在上面的applecontainer动画完成之后添加其他组件动画等等。例如:

  questionBg.setVisible(true);
  questionBg.getParent().animateLayoutFadeAndWait(3000, 20);

更新2:

我只添加了一个组件appleLabel并应用了淡入淡出效果,结果是一样的。所以可能不是EDT问题。我也在准系统模板中尝试过它。

  Container appleContainer = new Container(new FlowLayout(Component.CENTER, Component.BOTTOM));
  appleLabel = new Label(apple);
  appleContainer.add(appleLabel);
  appleLabel.setVisible(false);
  f.add(appleContainer);
  f.show();
  appleLabel.setVisible(true);
  appleLabel.getParent().animateLayoutFadeAndWait(5000, 0);

它没有用,所以我尝试了callSerially,但它同样也提出了问题

  Display.getInstance().callSerially(new Runnable() {

        @Override
        public void run() {
          appleLabel.setVisible(true);
          appleLabel.getParent().animateLayoutFadeAndWait(5000, 0);
        }

1 个答案:

答案 0 :(得分:0)

尝试将appleContainer设置为可见false,看看是否有帮助。