我在xml中有一个按钮。按下按钮我希望快速更改该按钮上的背景和文本。
我通常会使用这样的代码作为最终结果:
String rndm[] = {"A","B","C","D"};
{rnd = rndm[(int) (Math.random() * rndm.length)];}
{Button btn = (Button) findViewById(R.id.button1);
btn.setText(String.valueOf(rnd));
btn.setTextColor(Color.parseColor("#000000"));}
在此之前,虽然我想要一两次“洗牌”效果,但我希望这样做。
我尝试过像这样使用java.util.timer:
@Override
public void onClick(View v) {
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
String rndm[] = {"A","B","C","D"};
{rnd = rndm[(int) (Math.random() * rndm.length)];}
{Button btn = (Button) findViewById(R.id.button1);
btn.setText(String.valueOf(rnd));
btn.setTextColor(Color.parseColor("#000000"));}
}}}, 100 );
然后将其中一些具有不同背景的东西一个接一个地射击。我似乎无法掌握它。
我可能需要一种全新的方法来做我想做的事情,但我不确定什么是最好的目标来完成我需要的东西。
答案 0 :(得分:1)
您应该使用Handler并确保您要运行的代码采用runnable方法:-)
从您的活动中尝试这样的事情
Handler handler = new Handler();
....
@Override
public void onClick(View v) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// set your button color here, no need to use runOnUiThread()
// as this run() method is executed on Main thread
}
}, 100);
}