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

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

效果图:

用户未选择箱子的时候:

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


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


强制横屏方法:
在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;
		}
	}
}

转载请注明出处:http://blog.csdn.net/acmman/article/details/44851479

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android SDK开发范例大全是为了帮助开发人员更好地学习和使用Android SDK所提供的示例代码集合。 首先,Android SDK开发范例大全涵盖了各种不同的开发领域,包括UI设计、数据存储、网络通信、多媒体处理等等。每个范例都提供了详细的代码和说明文档,帮助开发人员理解并运用相应的功能。 例如,在UI设计方面,开发人员可以通过范例学习如何使用Android SDK提供的各种布局和控件来创建用户界面,以及如何处理用户输入和事件响应。 在数据存储方面,开发人员可以学习如何使用SQLite数据库来创建和管理数据表,以及如何进行数据的增删改查操作。 在网络通信方面,开发人员可以学习如何使用HTTP协议进行数据的传输,如何进行异步网络请求以及如何解析服务器返回的数据。 在多媒体处理方面,开发人员可以学习如何使用Android SDK提供的API进行图像处理、音频播放、视频播放等操作。 通过Android SDK开发范例大全,开发人员可以迅速上手Android开发并提高开发效率。范例中的代码经过精心设计和优化,可以作为开发过程中的参考和借鉴。同时,范例中的说明文档也提供了详细的解释和用法,方便开发人员理解和运用。 总之,Android SDK开发范例大全是一个非常实用的资源,对于想要学习和精通Android开发开发人员来说,是一个宝贵的学习资料和工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值