我将不得不用Java SWT实现弹出窗口。这些弹出窗口将在100ms动画中弹出。100ms是一个界限,在这个界限下,用户会感觉到动作是立即发生的。
问题是:我应该为这个动画使用自己的线程吗?有人知道本地弹出窗口是如何实现的吗?
例如:我可以在UI线程上的动画步骤之间调用睡眠,或者我可以在额外的线程上提取睡眠。
for(int i=0; i<height; i+=10){
//change height here
Thread.sleep(10); //makes UI unresposible for 10 ms
}问题是-在这么短的时间内让UI变得不负责任是可以的,还是应该在一个额外的线程上完成?
发布于 2013-02-13 19:05:43
回答你的问题..我真的依赖于你的应用程序的需求。这是一个非常好的建议,不要在UI线程中执行任何长时间运行的进程(总是取决于“long”是什么)。
无论如何,它不会让你的图形用户界面停滞10毫秒,而是总共100毫秒。SWT中的GUI是由readAndDispatch()方法驱动的,所以在进行新的调用之前,GUI处于冻结状态(这就是为什么首先必须使用display.syncExec()和displayAsyncExec()方法)。
发布于 2013-02-14 00:13:35
您可以使用三叉树或任何其他计时框架。我看到trident api同时支持SWT和Swing。基本上,它在UI线程上异步运行你的动画逻辑。
http://kenai.com/projects/trident/pages/Home
https://stackoverflow.com/questions/14810836
复制相似问题