在 UI 线程上获取延迟
Get delay on UI thread
我正在使用以下代码 parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#FF9494"));
设置 listview
项的颜色
这段代码我写在OnItemClickListener
.
设置颜色后,我想将此颜色保留 4 秒,然后将项目的颜色恢复为之前的颜色(比如白色)。
我尝试让 UI 线程休眠,但我知道这不是正确的方法。
任何人都可以建议我如何实现这一目标吗?
也许您可以尝试实现一个 asyncTask,然后可以从 onItemClickListener 调用它。这个 asyncTask 的 doInBackground 方法可以包含一个 sleep 方法来避免调用 onPostExecute 一段时间。在 onPostExecute 中,您可以根据需要重新设置颜色。
如果 sleep 方法不能像我期望的那样写在 doInBackground 方法中,那么在更改文本颜色之前将 sleep 方法也放在 onPostExecute 方法中。
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();
主线程中有一个循环程序 运行。为此,可以安排 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);
}
我正在使用以下代码 parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#FF9494"));
listview
项的颜色
这段代码我写在OnItemClickListener
.
设置颜色后,我想将此颜色保留 4 秒,然后将项目的颜色恢复为之前的颜色(比如白色)。
我尝试让 UI 线程休眠,但我知道这不是正确的方法。
任何人都可以建议我如何实现这一目标吗?
也许您可以尝试实现一个 asyncTask,然后可以从 onItemClickListener 调用它。这个 asyncTask 的 doInBackground 方法可以包含一个 sleep 方法来避免调用 onPostExecute 一段时间。在 onPostExecute 中,您可以根据需要重新设置颜色。
如果 sleep 方法不能像我期望的那样写在 doInBackground 方法中,那么在更改文本颜色之前将 sleep 方法也放在 onPostExecute 方法中。
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();
主线程中有一个循环程序 运行。为此,可以安排 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);
}