Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绘制一系列Android对象,时间间隔为_Android_Imageview_Delay_Sleep - Fatal编程技术网

绘制一系列Android对象,时间间隔为

绘制一系列Android对象,时间间隔为,android,imageview,delay,sleep,Android,Imageview,Delay,Sleep,我有一个程序,可以自动在屏幕上移动对象,在ImageView上绘制它们。在某些情况下,两个或多个对象将连续移动。目前,用户只看到最终配置。我想在它们之间插入一个停顿,以便看到中间配置。 下面的代码旨在通过设置忙碌标志并在单独的线程上休眠来实现这一点。但是,它不会在两者之间更新屏幕。效果是长时间暂停,然后是最终视图。 欢迎您的建议 private boolean busy = false; private void slowMoveObject(<args>) { Thread

我有一个程序,可以自动在屏幕上移动对象,在ImageView上绘制它们。在某些情况下,两个或多个对象将连续移动。目前,用户只看到最终配置。我想在它们之间插入一个停顿,以便看到中间配置。 下面的代码旨在通过设置忙碌标志并在单独的线程上休眠来实现这一点。但是,它不会在两者之间更新屏幕。效果是长时间暂停,然后是最终视图。 欢迎您的建议

private boolean busy = false;
private void slowMoveObject(<args>) {
    Thread th = new Thread() {
        public void run() {
            int waitCount = 0;
            while (busy) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                waitCount++;
                if (waitCount > 50) break;
            }
            busy = true;
            moveObject(<args>);

            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            busy = false;
        };
    };
    th.run(); // delay

}

无法在后台线程上更新UI。您必须找到一种方法,使用某种处理程序将moveObject调用发布到UI线程。另外,在线程上调用run会同步运行它,这将阻止UI线程,直到它完成。感谢这些提示-它们解释了为什么它不工作。我将从这些方面再看一次。罗杰