首页 > 其他分享 >【Android开发】范例4-猜猜宝石放在哪个箱子里

【Android开发】范例4-猜猜宝石放在哪个箱子里

时间:2023-03-19 12:07:45浏览次数:52  
标签:范例 箱子 layout 猜猜 id content wrap Android android


实现"猜猜宝石放在哪个箱子"的小游戏:主界面中有三个箱子,单击其中任意一个箱子,将打开箱子,显示里面是否有宝石,并且将没有被单击的箱子设为半透明显示,被单击的箱子正常显示,同时根据单击的箱子是否有宝石显示对应的结果。如果单击的箱子没有宝石,将显示"很抱歉,猜错了,要不要再来一次?"的提示文字,如果猜对了,就会将所有箱子透明化,并显示"恭喜您,猜对了,祝您幸福!"

效果图:

用户未选择箱子的时候:

【Android开发】范例4-猜猜宝石放在哪个箱子里_textview

用户选中带宝石的箱子的效果:

【Android开发】范例4-猜猜宝石放在哪个箱子里_screenOrientation_02

用户没有选中带宝石的箱子的效果:

【Android开发】范例4-猜猜宝石放在哪个箱子里_android开发_03

强制横屏方法:


在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

相关文章