Animation 设置图像动画(即同时放大和淡入)

Animation 设置图像动画(即同时放大和淡入),animation,fadein,codenameone,Animation,Fadein,Codenameone,我正在创建一个启动屏幕。到目前为止,我可以实现增长效果或衰退效果。当试图同时获得两个动画时,它不起作用 //zooms or grows the image findImageViewerSplash(f).growShrink(1000); //for fade in effect findContainerImageViewer(f).animateLayoutFadeAndWait(2000, 0); 使用图像查看器获得生长效果。这里,图像查看器组件位于ContainerImageVie

我正在创建一个启动屏幕。到目前为止,我可以实现增长效果或衰退效果。当试图同时获得两个动画时,它不起作用

//zooms or grows the image
findImageViewerSplash(f).growShrink(1000);
//for fade in effect
findContainerImageViewer(f).animateLayoutFadeAndWait(2000, 0);
使用图像查看器获得生长效果。这里,图像查看器组件位于ContainerImageViewer内部。如果我注释掉其中一行,它是有效的,但实现这两行都不起作用。 谢谢

将setUIID设置为scaleImageLabel时出现异常

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.codename1.impl.javase.Executor$1$1.run(Executor.java:100)
    at com.codename1.ui.Display.processSerialCalls(Display.java:1149)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:966)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Caused by: java.lang.NullPointerException
    at com.codename1.components.ScaleImageLabel.calcPreferredSize(ScaleImageLabel.java:83)
    at com.codename1.ui.Component.preferredSizeImpl(Component.java:1930)
    at com.codename1.ui.Component.preferredSize(Component.java:1965)
    at com.codename1.ui.Component.setPreferredSize(Component.java:735)
    at userclasses.StateMachine.beforeSplashScreen(StateMachine.java:178)
    at generated.StateMachineBase.beforeShow(StateMachineBase.java:883)
    at com.codename1.ui.util.UIBuilder.showForm(UIBuilder.java:2514)
    at com.codename1.ui.util.UIBuilder.showForm(UIBuilder.java:2561)
    at generated.StateMachineBase.startApp(StateMachineBase.java:60)
    at generated.StateMachineBase.<init>(StateMachineBase.java:31)
    at generated.StateMachineBase.<init>(StateMachineBase.java:106)
    at userclasses.StateMachine.<init>(StateMachine.java:78)
    at com.ruslanVodka_CapitalEye.myapp.RuslanApp.start(RuslanApp.java:23)
    ... 9 more
java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:497)
位于com.codename1.impl.javase.Executor$1$1.run(Executor.java:100)
位于com.codename1.ui.Display.processSerialCalls(Display.java:1149)
位于com.codename1.ui.Display.mainEDTLoop(Display.java:966)
位于com.codename1.ui.runnablerrapper.run(runnablerrapper.java:120)
位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
原因:java.lang.NullPointerException
位于com.codename1.components.ScaleImageLabel.calcPreferredSize(ScaleImageLabel.java:83)
位于com.codename1.ui.Component.preferredSizeImpl(Component.java:1930)
位于com.codename1.ui.Component.preferredSize(Component.java:1965)
位于com.codename1.ui.Component.setPreferredSize(Component.java:735)
在userclasses.StateMachine.beforeSplashScreen(StateMachine.java:178)中
在生成的.StateMachineBase.beforeShow(StateMachineBase.java:883)中
在com.codename1.ui.util.UIBuilder.showForm(UIBuilder.java:2514)上
在com.codename1.ui.util.UIBuilder.showForm(UIBuilder.java:2561)
在生成的.StateMachineBase.startApp处(StateMachineBase.java:60)
在生成的.StateMachineBase中。(StateMachineBase.java:31)
在生成的.StateMachineBase中。(StateMachineBase.java:106)
位于userclasses.StateMachine.(StateMachine.java:78)
在com.ruslanVodka_CapitalEye.myapp.RuslanApp.start(RuslanApp.java:23)
... 9更多

这些效果相互排斥,您可以并行运行它们

实际上,您不需要
growShrink
调用,因为
animateLayout*
调用将根据您首选的大小定义进行增长/收缩

以下是使用动画布局产生“增长”效果的示例:

Form hi = new Form("Grow", new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER));
int w = Display.getInstance().getDisplayWidth();
ScaleImageLabel dukeLabel = new ScaleImageLabel(duke);
dukeLabel.setPreferredSize(new Dimension(w / 3, w / 3));
hi.add(BorderLayout.CENTER, dukeLabel);
hi.addShowListener((e) -> {
    dukeLabel.setPreferredSize(new Dimension(w, w));
    dukeLabel.getParent().animateLayout(5000);
});

hi.show();   

这些效果相互排斥,您可以并行运行它们

实际上,您不需要
growShrink
调用,因为
animateLayout*
调用将根据您首选的大小定义进行增长/收缩

以下是使用动画布局产生“增长”效果的示例:

Form hi = new Form("Grow", new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER));
int w = Display.getInstance().getDisplayWidth();
ScaleImageLabel dukeLabel = new ScaleImageLabel(duke);
dukeLabel.setPreferredSize(new Dimension(w / 3, w / 3));
hi.add(BorderLayout.CENTER, dukeLabel);
hi.addShowListener((e) -> {
    dukeLabel.setPreferredSize(new Dimension(w, w));
    dukeLabel.getParent().animateLayout(5000);
});

hi.show();   

我不明白如何使用animateLayout进行生长/收缩?你能给我一个例子吗?动画布局将组件移动到它们的新尺寸/位置,因此如果你只是设置组件的首选尺寸,它应该增长到适合新尺寸。请注意,您还可以使用animateUnlayout,它允许您将动画设置到任意位置/大小。findImageViewerSplash(f)。setPreferredSize(新尺寸(screenWidth/3,screenWidth/3));findContainer(f).animateLayoutFadeAndWait(2000,0);findImageViewerSplash(f).setPreferredSize(新尺寸(屏幕宽度,屏幕宽度));它没有变化。在这里,容器位于borderlayout中。如果我将布局更改为flow布局,imageviewersplash组件将从左向右移动。但我希望更改大小,而不是添加一个代码示例来执行此操作。Duke只是我复制到src目录中的图标图像。非常感谢。。。还有一件事,如果我设置scaleImageLabel的uiid,它会在com.codename1.components.scaleImageLabel.calcPreferredSize(scaleImageLabel.java:83)处给出NullPointerException,我不明白如何使用animateLayout进行增长/收缩?你能给我一个例子吗?动画布局将组件移动到它们的新尺寸/位置,因此如果你只是设置组件的首选尺寸,它应该增长到适合新尺寸。请注意,您还可以使用animateUnlayout,它允许您将动画设置到任意位置/大小。findImageViewerSplash(f)。setPreferredSize(新尺寸(screenWidth/3,screenWidth/3));findContainer(f).animateLayoutFadeAndWait(2000,0);findImageViewerSplash(f).setPreferredSize(新尺寸(屏幕宽度,屏幕宽度));它没有变化。在这里,容器位于borderlayout中。如果我将布局更改为flow布局,imageviewersplash组件将从左向右移动。但我希望更改大小,而不是添加一个代码示例来执行此操作。Duke只是我复制到src目录中的图标图像。非常感谢。。。还有一件事,如果我设置scaleImageLabel的uiid,它会在com.codename1.components.scaleImageLabel.calcPreferredSize(scaleImageLabel.java:83)处给出NullPointerException