第36页
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); //获取TextView组件
reset(); //将鞋子的顺序打乱
(5)为3个显示鞋子的ImageView组件添加单击事件监听器,用于将鞋子打开,并显示猜猜看的结果,关键代码如下:
//为第1只鞋子添加单击事件监听器
image1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isRight(v, 0); //判断结果
}
});
//为第2只鞋子添加单击事件监听器
image2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isRight(v, 1); //判断结果
}
});
//为第3只鞋子添加单击事件监听器
image3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isRight(v, 2); //判断结果
}
});
(6)编写isRight()方法,用于显示打开的鞋子,并显示判断结果,具体代码如下:
/**
* 判断猜出的结果
*
* @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设置半透明效果
image1.setAlpha(100);
image2.setAlpha(100);
image3.setAlpha(100);
ImageView v1 = (ImageView) v; //获取被单击的图像视图
v1.setAlpha(255); //设置图像视图的透明度
if (imageIds[index] == R.drawable.shoe_ok) { //判断是否猜对
result.setText("恭喜您,猜对了,祝你幸福!");
} else {
result.setText("很抱歉,猜错了,要不要再试一次?");
}
}
(7)获取“再玩一次”按钮,并为该按钮添加单击事件监听器,在其单击事件中,首先将标题恢复为默认值,然后设置3个ImageView的透明度为完全不透明,最后设置这3个ImageView的图像内容为默认显示图片,具体代码如下:
Button button = (Button) findViewById(R.id.button1); //获取“再玩一次”按钮
//为“再玩一次”按钮添加事件监听器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
reset();
result.setText(R.string.title); //将标题恢复为默认值
image1.setAlpha(255);
image2.setAlpha(255);
image3.setAlpha(255);
image1.setImageDrawable(getResources().getDrawable( R.drawable.shoe_default));
image2.setImageDrawable(getResources().getDrawable(R.drawable.shoe_default));
image3.setImageDrawable(getResources().getDrawable(R.drawable.shoe_default));
}
});
运行本实例,将显示如图3.33所示的运行结果,单击其中的任意一只鞋子,将打开鞋子,显示里面是否有鸡蛋,并且将没有被单击的鞋子设置为半透明显示,被单击的鞋子正常显示,同时根据单击的鞋子里是否有鸡蛋显示对应的结果。例如,单击中间的鞋子,如果鸡蛋在这只鞋子里,将显示如图3.34所示的运行结果;否则,将显示“很抱歉,猜错了,要不要再试一次?”的提示文字。
图3.33 默认的运行结果 图3.34 单击中间鞋子显示的运行结果
3.5 小 结
本章介绍了进行用户界面设计的基础内容,主要包括Android中控制UI界面的4种方法、常用的4种布局管理器和一些常用的基本组件。首先介绍的是控制UI界面的4种方法,这4种方法各有优缺点,应根据实际需要选择最为合适的方法,然后介绍线性布局、表格布局、帧布局和相对布局4种布局方式,需要读者重点掌握,在实际编程中经常使用,接下来又介绍了常用的基本组件,最后结合前面介绍的内容给出了两个经典范例,用于巩固所学的知识。
3.6 实践与练习
1. 编写Android程序,实现通过ImageView显示带边框的图片。(答案位置:光盘\TM\sl\3\3.27)
2. 编写Android程序,实现选中复选框后,“开始”按钮才可用,否则为不可用状态。(答案位置:光盘\TM\sl\3\3.28)
3. 编写Android程序,实现图标在上、文字在下的ListView。(答案位置:光盘\TM\sl\3\3.29)
第4章 高级用户界面设计
( 教学录像:2小时46分钟)
第3章介绍了用户界面设计中如何控制UI界面,以及布局管理器和基本组件的应用。经过前面的学习,已经可以设计出一些常用的Android界面,本章将继续学习Android开发中的用户界面设计,主要涉及一些常用的高级组件、消息提示框和对话框等,通过这些组件,可以开发出更加优秀的用户界面。