在这次实现中,我没有采用线程实现,而是采用了递归的方式。
话不多说,贴源码:
//MainActivity.java代码
package com.example.dell.ch4_10;
import android.content.DialogInterface;
import android.graphics.Color;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private int times = 30;
private TextView textView;
private ImageButton button1;
private ImageButton button2;
private int[] viewIds = new int[]{
R.id.button1,R.id.button2,R.id.button3,
R.id.button4,R.id.button5,R.id.button6,
R.id.button7,R.id.button8,R.id.button9
};
private int[] flag = new int[]{
0,0,0,
0,0,0,
0,0,0
};
private AlertDialog.Builder builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.text);
textView.setText(Html.fromHtml("请点击绿色按钮<font color='green'>"+times+"</font>次"));
init();
}
public void init(){
if(times == 0){
builder = new AlertDialog.Builder(this);
builder.setTitle("恭喜你,顺利过关。点一点很容易嘛!");
builder.setIcon(R.mipmap.ic_launcher);
builder.setPositiveButton("确定,再来一次!", null);
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity.this.finish();
}
});
builder.create().show();
return ;
}
int ans = (int)(Math.random()*9);
button1 = (ImageButton) findViewById(viewIds[ans]);
button1.setImageResource(R.mipmap.cat);
flag[ans] = 1;
for(int i=0;i<viewIds.length;i++){
button2 = (ImageButton) findViewById(viewIds[i]);
final int temp = i;
if(flag[temp] == 0){
button2.setImageResource(R.mipmap.ic_launcher);
}
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(flag[temp] == 1){
times--;
textView.setText(Html.fromHtml("请点击绿色按钮<font color='green'>"+times+"</font>次"));
flag[temp] = 0;
button2.setImageResource(R.mipmap.ic_launcher);
init();
}
else{
times--;
textView.setText(Html.fromHtml("请点击绿色按钮<font color='green'>"+times+"</font>次"));
builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("这么简单都输了!");
builder.setIcon(R.mipmap.ic_launcher);
builder.setPositiveButton("确定,再来一次!", null);
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity.this.finish();
}
});
builder.create().show();
}
}
});
}
}
}
//activity.main.xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:paddingTop="20dp"
android:id="@+id/view1"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_margin="20dp"
android:columnCount="3"
android:paddingLeft="30dp"
>
<ImageButton
android:id="@+id/button1"
android:layout_width="80dp"
android:layout_height="80dp"
/>
<ImageButton
android:id="@+id/button2"
android:layout_width="80dp"
android:layout_height="80dp" />
<ImageButton
android:id="@+id/button3"
android:layout_width="80dp"
android:layout_height="80dp" />
<ImageButton
android:id="@+id/button4"
android:layout_width="80dp"
android:layout_height="80dp" />
<ImageButton
android:id="@+id/button5"
android:layout_width="80dp"
android:layout_height="80dp" />
<ImageButton
android:id="@+id/button6"
android:layout_width="80dp"
android:layout_height="80dp" />
<ImageButton
android:id="@+id/button7"
android:layout_width="80dp"
android:layout_height="80dp" />
<ImageButton
android:id="@+id/button8"
android:layout_width="80dp"
android:layout_height="80dp" />
<ImageButton
android:id="@+id/button9"
android:layout_width="80dp"
android:layout_height="80dp" />
</GridLayout>
</LinearLayout>
</LinearLayout>
这张图即是cat.png,下载即可。
运行如上代码: