延迟改变颜色

时间:2012-12-27 10:34:34

标签: java android loops delay

我想在按下按钮时更改textview的背景颜色。它应该这样做:首先是白色10毫秒,然后只是常规颜色。是否有某种延迟功能或者我是否需要使用循环或某种类型编写我自己的函数?非常感谢任何提示:)

此时我只是使用

button.setBackgroundColor(Color.parseColor("#ffa500"));

3 个答案:

答案 0 :(得分:6)

每个视图都有postpostDelayed方法分别将runnable发布到UI线程或延迟发布。

    button.postDelayed(new Runnable() {

    @Override
    public void run() {
    // change color in here
    }
}, 10);

修改 如果你经常打电话,你可以用这样的东西做得更好:

int currentColor;
private Runnable changeColorRunnable = new Runnable() {

    @Override
    public void run() {
        switch(currentColor){
        case Color.RED: currentColor = Color.BLACK; break;
        case Color.BLACK: currentColor = Color.RED; break;
        }
        button.setBackgroundColor(currentColor);

    }
};

然后:

    button.postDelayed(changeColorRunnable, 10);

这将避免不必要的对象创建和垃圾收集

答案 1 :(得分:1)

最简单的方法是创建一个处理程序并使用postDelayed执行它: http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long)

答案 2 :(得分:0)

 private class ButtonColorChange extends AsyncTask<String, Void, String>
 {
    protected void onPreExecute() 
    { 
         //do
    }

    protected String doInBackground(String... params)
    {
        try 
        {
             Thread.sleep(10000);   //waiting here          
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(String result) 
    {
         button.setBackgroundColor(Color.parseColor("#ffa500"));
    }
 }

每当您点击按钮

时,请使用此方法
ButtonColorChange  btc = new ButtonColorChange();
 btc.execute();