延迟UI线程

pri*_*nce 4 android android-ui android-activity

我正在listview使用以下代码设置项目的颜色parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#FF9494"));

我写的这段代码OnItemClickListener.

设置颜色后,我希望将此颜色保持4秒钟,然后将项目的颜色恢复为之前的颜色(比如白色).

我尝试在UI线程上进行睡眠,但我知道这不是一个正确的方法.

任何人都可以建议我如何实现这一目标?

Dav*_*ser 6

    parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#FF9494"));
    // Start new Thread that sets the color back in 4 seconds
    new Thread(new Runnable() {
        @Override
        public void run() {
            SystemClock.sleep(4000); // Sleep 4 seconds
            // Now change the color back. Needs to be done on the UI thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#000000")); // use whatever other color you want here
                }
            });
        }
    }).start();
Run Code Online (Sandbox Code Playgroud)


tyn*_*ynn 5

主线程内有一个运行的循环程序。为此,可以安排延迟Runnable。在OnItemClickListener您的代码中可以简单如下:

@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
    view.setBackgroundColor(Color.parseColor("#FF9494"));
    view.postDelayed(new Runnable() {
        @Override
        public void run() {
            view.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
    }, 4000);
}
Run Code Online (Sandbox Code Playgroud)