希望通过将徽标缩放到启动画面来为其设置动画。 到目前为止尝试了以下内容:
@Override
protected void postSpash1(Form f) {
findLogoLabel(f).setPreferredW(findLogoLabel(f).getPreferredW() * 5);
findAnimateContainer(f).animateLayoutAndWait(2000);
findLogoLabel(f).setPreferredSize(null);
}
图像没有动画并扩大自身。然而,它在2秒后突然改变它的大小,这不是我正在寻找的。我想要缩放效果(img应该在一定程度上慢慢变大)
我也尝试了其他方法,但标签顺利地从上到下移动而不是bg img变大
findLogoLabel(f).setPreferredH(findLogoLabel(f).getPreferredH() * 3);
findAnimateContainer(f).animateLayoutAndWait(2000);
findLogoLabel(f).setPreferredSize(null);
PS:我在logoLabel(Label)中设置了bg图像,Animatecontainer是包含logoLabel的容器。
答案 0 :(得分:0)
阻止API有些棘手,因为它们可能会与其他一些行为发生冲突,从而阻止当前调度线程的其余部分完成其工作。
您也可以在动画后设置null而不是之前...
所以在你的情况下这应该有效(使用旧的Java 5语法):
@Override
protected void postSpash1(final Form f) {
findLogoLabel(f).setPreferredW(findLogoLabel(f).getPreferredW() * 5);
Display.getInstance().callSerially(new Runnable() {
public void run() {
findLogoLabel(f).setPreferredSize(null);
findAnimateContainer(f).animateLayoutAndWait(2000);
}
});
}
使用酷的Java 8 lambdas:
@Override
protected void postSpash1(final Form f) {
findLogoLabel(f).setPreferredW(findLogoLabel(f).getPreferredW() * 5);
Display.getInstance().callSerially(() -> {
findLogoLabel(f).setPreferredSize(null);
findAnimateContainer(f).animateLayoutAndWait(2000);
});
}