我想在按下按钮时更改文本视图的背景颜色。它应该这样做:首先是白色 10 毫秒,然后是常规颜色。是否有某种延迟功能,或者我是否需要使用循环或某种方式为此编写自己的功能?非常感谢任何提示:)
此时我只是使用
button.setBackgroundColor(Color.parseColor("#ffa500"));
每个视图都有post
和postDelayed
方法分别发布一个可运行的 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);
这将避免不必要的对象创建和垃圾收集
最简单的方法是创建一个处理程序并使用 postDelayed 执行它:http: //developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long)
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();