我目前正在製作我的第一個Android應用程序,我需要一些幫助。我正在製作的應用程序是記憶遊戲Simon。延遲切換圖像
所以我有點有2個問題:
1)當用戶按壓的顏色按鈕中的一個,所述按鈕開關的背景圖像以一個發光的版本。但是,如何在稍微延遲後再次獲得原始背景圖像的按鈕?我使用計時器任務(僅適用於紅色按鈕)嘗試了它,但是當我嘗試這樣做時,應用程序崩潰。
2)當計算機經歷顏色組合時,這也應該自動發生。有沒有辦法把它放在一個可以調用的獨立函數中?
這裏是代碼: package android.Simon;
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.SystemClock; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; 導入android.widget.Chronometer; import android.widget.TextView; import java.util.Random; import java.util.Timer; import java.util.TimerTask;
public class Simon extends活動時間表計時錶m計時錶; int [] ComArray = new int [100]; int gebruikergetal; int i = 0; int j = 0; int aantalcomgetallen = 1; //變量來確定計算機必須顯示的顏色數量 int gebruikerteller; //變量來確定是否用戶輪到 int startstop = 1; int delay = 1000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button;
final TextView textView = (TextView) findViewById(R.id.textView1);
final Button button1;
final Button button2;
final Button button3;
final Button button4;
for(i=0;i<100;i++){
for(j=0;j<4;j++){
ComArray[i] = RandomCreator.getRandomInt(1, 4);
}
}
i=0;
mChronometer = (Chronometer) findViewById(R.id.chronometer1);
button = (Button) findViewById(R.id.button5);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
button4 = (Button) findViewById(R.id.button4);
final View.OnClickListener Blauw = new OnClickListener() {
public void onClick(View v){
//int GebruikerArray[] = new int[i];
gebruikergetal = 2;
button1.setBackgroundDrawable(getResources().getDrawable(0x7f020001));
//here i'm switching the background image of the button
textView.setText(String.valueOf(gebruikergetal));
if(gebruikergetal!=ComArray[i]){
textView.setText("Game Over");
}
i++;
}
};
final View.OnClickListener Groen = new OnClickListener() {
public void onClick(View v){
//int GebruikerArray[] = new int[i];
gebruikergetal = 3;
button2.setBackgroundDrawable(getResources().getDrawable(0x7f020003));
textView.setText(String.valueOf(gebruikergetal));
if(gebruikergetal!=ComArray[i]){
textView.setText("Game Over");
}
i++;
}
};
final View.OnClickListener Rood = new OnClickListener() {
public void onClick(View v){
//int GebruikerArray[] = new int[i];
Timer timer = new Timer();
gebruikergetal = 1;
button3.setBackgroundDrawable(getResources().getDrawable(0x7f020006));
//this is where I try out the timer task, but the app crashes
TimerTask task = new TimerTask(){
public void run(){
button3.setBackgroundDrawable(getResources().getDrawable(0x7f020005));
}
};
timer.scheduleAtFixedRate(task, 0, 1000);
textView.setText(String.valueOf(gebruikergetal));
if(gebruikergetal!=ComArray[i]){
textView.setText("Game Over");
}
i++;
}
};
final View.OnClickListener Geel = new OnClickListener() {
public void onClick(View v){
//int GebruikerArray[] = new int[i];
gebruikergetal = 4;
button4.setBackgroundDrawable(getResources().getDrawable(0x7f020009));
textView.setText(String.valueOf(gebruikergetal));
if(gebruikergetal!=ComArray[i]){
textView.setText("Game Over");
}
i++;
}
};
View.OnClickListener mStartListener = new OnClickListener() {
public void onClick(View v) {
if(startstop == 1){
mChronometer.start();
textView.setText("Com Turn!");
button1.setOnClickListener(Blauw);
button2.setOnClickListener(Groen);
button3.setOnClickListener(Rood);
button4.setOnClickListener(Geel);
startstop = 0;
}
else{
startstop = 1;
mChronometer.stop();
textView.setText("");
}
}
};
button.setOnClickListener(mStartListener);
}
}
如果有人能幫忙,我會很感激。 Thx