实现"猜猜宝石放在哪个箱子"的小游戏:主界面中有三个箱子,单击其中任意一个箱子,将打开箱子,显示里面是否有宝石,并且将没有被单击的箱子设为半透明显示,被单击的箱子正常显示,同时根据单击的箱子是否有宝石显示对应的结果。如果单击的箱子没有宝石,将显示"很抱歉,猜错了,要不要再来一次?"的提示文字,如果猜对了,就会将所有箱子透明化,并显示"恭喜您,猜对了,祝您幸福!"
效果图:
用户未选择箱子的时候:
用户选中带宝石的箱子的效果:
用户没有选中带宝石的箱子的效果:
强制横屏方法:
在AndroidManifest.xml的配置文件里面的<activity
里面加入:
android:screenOrientation="landscape" //横屏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"//去掉状态栏及标题栏
具体实现方法:
res/layout/main.xml:
表格布局:共分上下中三层,分别放置游戏信息,游戏的三个箱子,"再来一次"的按钮
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tableLayout1"
android:background="@drawable/background">
<TableRow android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="2">
<TextView android:text="@string/title"
android:padding="10px"
android:gravity="center"
android:textSize="35px"
android:textColor="#FFFFFF"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</TableRow>
<TableRow android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1">
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="@+id/imageview1"
android:src="@drawable/box_default"
android:paddingLeft="30px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView android:id="@+id/imageview2"
android:src="@drawable/box_default"
android:paddingLeft="30px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView android:id="@+id/imageview3"
android:src="@drawable/box_default"
android:paddingLeft="20px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</TableRow>
<LinearLayout android:orientation="horizontal"
android:layout_weight="1"
android:gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button android:text="再玩一次"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</TableLayout>
MainActivity:
package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
//定义一个保存全部图片id的数组
int[] imageIds=new int[]{R.drawable.box_default,R.drawable.box_default,R.drawable.box_ok};
private ImageView image1;
private ImageView image2;
private ImageView image3;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
image1=(ImageView)findViewById(R.id.imageview1);//获取ImageView1组件
image2=(ImageView)findViewById(R.id.imageview2);//获取ImageView2组件
image3=(ImageView)findViewById(R.id.imageview3);//获取ImageView3组件
result=(TextView)findViewById(R.id.textView1);获取TextView1组件
reset();//将箱子的顺序打乱
//为第一个箱子添加单击事件监听
image1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isRight(v,0);//判断结果
}
});
//为第二个箱子添加单击事件监听
image2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isRight(v,1);//判断结果
}
});
//为第三个箱子添加单击事件监听
image3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isRight(v,2);//判断结果
}
});
//获取“再玩一次”按钮
Button button=(Button)findViewById(R.id.button1);
//为“再玩一次”按钮添加事件监听器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
reset();
result.setText(R.string.title);//将标题恢复为默认值
//图片透明度回复
image1.setAlpha(255);
image2.setAlpha(255);
image3.setAlpha(255);
//设置图片能够点击
image1.setClickable(true);
image2.setClickable(true);
image3.setClickable(true);
image1.setImageDrawable(getResources().getDrawable(R.drawable.box_default));
image2.setImageDrawable(getResources().getDrawable(R.drawable.box_default));
image3.setImageDrawable(getResources().getDrawable(R.drawable.box_default));
}
});
}
/*
* 判断猜出的结果
* param v
* param index
* */
private void isRight(View v, int index) {
//使用随机数组中图片资源ID设置每个ImageView
image1.setImageDrawable(getResources().getDrawable(imageIds[0]));
image2.setImageDrawable(getResources().getDrawable(imageIds[1]));
image3.setImageDrawable(getResources().getDrawable(imageIds[2]));
//为每个imageView设置半透明效果
/*Alpha通道是一个8位的灰度通道,该通道用256级灰度
* 来记录图像中的透明度信息,定义透明、不透明和半透明区域*/
image1.setAlpha(100);
image2.setAlpha(100);
image3.setAlpha(100);
ImageView v1=(ImageView)v;
v1.setAlpha(255);
//设置图片不再能够点击
image1.setClickable(false);
image2.setClickable(false);
image3.setClickable(false);
if(imageIds[index]==R.drawable.box_ok){
result.setText("恭喜您,猜对了,祝您幸福!");
}else{
result.setText("很抱歉,猜错了,要不要再来一次?");
}
}
//使用随机数指定宝石所在的箱子
private void reset(){
for (int i = 0; i <3; i++) {
int temp=imageIds[i];
int index=(int)(Math.random()*2);
imageIds[i]=imageIds[index];
imageIds[index]=temp;
}
}
}
标签:范例,箱子,layout,猜猜,id,content,wrap,Android,android From: https://blog.51cto.com/u_16012040/6131078