0

我将不得不使用 Java SWT 实现弹出窗口。这些弹出窗口将以 100 毫秒的动画弹出。100ms 是边界,在此边界之下用户认为动作是立即发生的。

问题是:我应该为这个动画使用自己的线程吗?有人知道,原生弹出窗口是如何实现的吗?

示例:我可以在 UI 线程上的动画步骤之间调用睡眠,或者我可以在额外的线程上提取睡眠。

for(int i=0; i<height; i+=10){
   //change height here
   Thread.sleep(10); //makes UI unresposible for 10 ms
}

问题是 - 在这么短的时间内裸露 UI 是否不负责任,还是应该在额外的线程上完成?

4

2 回答 2

1

回答你的问题..我真的取决于你的应用程序的需要。这总是非常好的建议,不要在 UI 线程中执行任何长时间运行的进程(总是取决于“长”是什么)。

无论如何,它不会让你的 GUI 停止 10 毫秒,而是总共 100 毫秒。SWT 中的 GUI 是由readAndDispatch()方法驱动的,所以在进行新调用之前,GUI 处于冻结状态(这就是为什么你必须首先使用display.syncExec()displayAsyncExec()方法)..

于 2013-02-13T11:05:43.257 回答
1

您可以使用 Trident 或任何其他计时框架。我看到 trident api 同时支持 SWT 和 Swing。基本上它在 UI 线程上异步运行你的动画逻辑。

http://kenai.com/projects/trident/pages/Home

于 2013-02-13T16:13:34.973 回答