我目前正在创建一个显示随机颜色序列的记忆游戏,你必须将它们转发回来。它开始显示2然后在你正确的时候增加。我使用改变颜色的按钮,但我的问题是它们变化很快。我尝试过事件处理程序,但它并没有减慢屏幕上闪烁的颜色。我需要某种延迟。以下是点亮按钮的代码,具体取决于我的数组中放置了随机按钮ID。
public void PlaySequence()
{
for(int i = 0; i< yourList.size();i++)
{
switch(Integer.parseInt(yourList.get(i).toString())) {
case 0:
redButton.setBackgroundColor(Color.RED);
revertButtonColour(0);
break;
case 1:
blueButton.setBackgroundColor(Color.BLUE);
revertButtonColour(1);
break;
case 2:
greenButton.setBackgroundColor(Color.GREEN);
revertButtonColour(2);
break;
case 3:
yellowButton.setBackgroundColor(Color.YELLOW);
revertButtonColour(3);
break;
}
}
编辑:
我尝试添加事件处理程序,但它们似乎无法正常工作
public void revertButtonColour(int number)
{
int slowThisDown = 0;
while(slowThisDown < 5000)
slowThisDown++;
switch(number)
{
case 0:
Handler redHandler = new Handler();
redHandler.postDelayed(new Runnable() {
public void run() {
redButton.setBackgroundResource(android.R.drawable.btn_default);
}
}, sequenceSpeed);
break;
case 1:
Handler blueHandler = new Handler();
blueHandler.postDelayed(new Runnable() { public void run() {
blueButton.setBackgroundResource(android.R.drawable.btn_default);}}, sequenceSpeed);
break;
case 2:
Handler greenHandler = new Handler();
greenHandler.postDelayed(new Runnable() { public void run() {
greenButton.setBackgroundResource(android.R.drawable.btn_default);}}, sequenceSpeed);
break;
case 3:
Handler yellowHandler = new Handler();
yellowHandler.postDelayed(new Runnable() { public void run() {
yellowButton.setBackgroundResource(android.R.drawable.btn_default);}}, sequenceSpeed);
break;
}
}
答案 0 :(得分:0)
您可以添加对
的调用 Thread.Sleep (time_between_changes)
但是这会弄乱UI线程。具有计时器的事件处理程序可能是要走的路。
编辑:
查找Timer类并在回调中,向UI线程发送消息,告诉它要更改哪个按钮。以下是如何让UI显示您想要的内容。
public void PlaySequence()
{
for(int i = 0; i< yourList.size();i++)
{
switch(Integer.parseInt(yourList.get(i).toString())) {
case 0:
redButton.setBackgroundColor(Color.RED);
Thread.Sleep (2000);
redButton.setBackgroundResource(android.R.drawable.btn_default);
break;
case 1:
blueButton.setBackgroundColor(Color.BLUE);
Thread.Sleep (2000);
blueButton.setBackgroundResource(android.R.drawable.btn_default);
break;
case 2:
greenButton.setBackgroundColor(Color.GREEN);
Thread.Sleep (2000);
greenButton.setBackgroundResource(android.R.drawable.btn_default);
break;
case 3:
yellowButton.setBackgroundColor(Color.YELLOW);
Thread.Sleep (2000);
yellowButton.setBackgroundResource(android.R.drawable.btn_default);
break;
}
Thread.Sleep (500);
}
}