我想在您点击按钮时更改背景,但只是在很短的时间内。我使用的是处理程序
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
relativeLayout = new RelativeLayout(MainActivity.this);
relativeLayout.setBackgroundResource(R.drawable.ic_launcher);
setContentView(relativeLayout);
}
};
handler.postDelayed(r,2000);
}
});
}}
但是,现在需要两秒钟才能更改背景而不是将其更改为两秒钟。有人有想法吗?
谢谢!
答案 0 :(得分:2)
您已使用handler.postDelayed
。因此,runnable中的代码将在2秒后运行。为了使它按你想要的方式工作,一种方法是在runnable之外带你设置背景的代码。然后在runnable中你可以再次使用setContentView
将它设置为前一个。
答案 1 :(得分:2)
不要这样做。
改为使用StateListDrawable。 正是出于此目的。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/color_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/color_normal" />
</selector>
将此设置为Button的背景。
答案 2 :(得分:0)
你可以这样做:
private boolean mState;
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mState) {
return;
}
mstate = true;
relativeLayout.setBackgroundResource(R.drawable.newcolor); //this color will last for 2sec
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
mState=false;
relativeLayout.setBackgroundResource(R.drawable.oldcolor);
}
};
handler.postDelayed(r,2000);
}
});