java – 如何暂停但不冻结Android执行?

我正在尝试根据特定条件(例如string =“a”或“b”)在指定的时间内(在每次颜色切换之间暂停)设置 ImageView的背景颜色.我的问题是我似乎无法使整个应用程序等待一个更改,直到它继续下一个,所以对于用户它看起来像颜色开始然后立即是最后一个颜色.

我已经尝试过CountDownTimers(在其他计时器运行时继续执行),处理程序(postDelayed(null,5000)),Thread.Sleeps等.

这是我正在尝试做的一个例子:

将ImageView上的颜色设置为红色
睡500码

for(int i = 0; i < stringArray.length; i++){  
    if(stringCompare = "a") {  
    Set color on ImageView to blue  
    sleep for 500ms }  
else if(stringCompare = "b") {  
    Set color on ImageView to blue  
    sleep for 1000ms  
  }  
Set color on ImageView to red  
sleep for 500ms  
}

我知道这有点疯狂,但我已经尝试了所有上述方法,我认为没有成功实际让程序等待,但没有完全停止它.

谢谢.

把它放在你的活动中(把它变成一个内部类):

private class ColorChanger extends Thread
{
    final ImageView imageView;
    public ColorChanger(ImageView imageView)
    {
        this.imageView = imageView;
    }

    private void changeColor(final int color)
    {
        YourActivity.this.runOnUiThread(new Runnable() {
            public void run() {
                // Set imageView to color here
            }
        });
    }

    @Override
    public void run() {

        try {
            Thread.sleep(500);
            changeColor(0xffff0000);
            Thread.sleep(500);
            changeColor(0xff0000ff);
            // Etc.
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

然后你可以这样做:

new ColorChanger(/*Your imageview*/).start();

活动中的任何地方.

相关文章
相关标签/搜索