(2)在主活动中创建并实例化一个OnCheckedChangeListener对象,在实例化该对象时,重写onCheckedChanged()方法,当复选框被选中时,输出一条日志信息,显示被选中的复选框,具体代码如下:
//创建一个状态改变监听对象
private OnCheckedChangeListener checkBox_listener=new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){ //判断复选框是否被选中
Log.i("复选框","选中了["+buttonView.getText().toString()+"]");
}
}
};
(3)在主活动的onCreate()方法中获取添加的3个复选框,并为每个复选框添加状态改变事件监听器,关键代码如下:
final CheckBox like1=(CheckBox)findViewById(R.id.like1); //获取第1个复选框
final CheckBox like2=(CheckBox)findViewById(R.id.like2); //获取第2个复选框
final CheckBox like3=(CheckBox)findViewById(R.id.like3); //获取第3个复选框
like1.setOnCheckedChangeListener(checkBox_listener); //为like1添加状态改变监听器
like2.setOnCheckedChangeListener(checkBox_listener); //为like2添加状态改变监听器
like3.setOnCheckedChangeListener(checkBox_listener); //为like3添加状态改变监听器
(4)获取“提交”按钮,并为“提交”按钮添加单击事件监听器,在该事件监听器的onClick()方法中通过if语句获取被选中的复选框的值,并通过一个提示信息框显示,具体代码如下:
//为“提交”按钮添加单击事件监听器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String like=""; //保存选中的值
if(like1.isChecked()) //当第1个复选框被选中
like+=like1.getText().toString()+" ";
if(like2.isChecked()) //当第2个复选框被选中
like+=like2.getText().toString()+" ";
if(like3.isChecked()) //当第3个复选框被选中
like+=like3.getText().toString()+" ";
Toast.makeText(MainActivity.this, like, Toast.LENGTH_SHORT).show(); //显示被选中的复选框
}
});
运行本实例,将显示3个用于选择爱好的复选框,选取其中的“体育”和“美术”复选框,如图3.21所示,单击“提交”按钮,将显示如图3.22所示的提示信息框。
图3.21 添加选择爱好的复选框 图3.22 显示的提示信息框
3.3.4 图像视图
图像视图(ImageView),用于在屏幕中显示任何Drawable对象,通常用来显示图片。在Android中,可以使用两种方法向屏幕中添加图像视图:一种是通过在XML布局文件中使用
在使用ImageView组件显示图像时,通常可以将要显示的图片放置在res/drawable目录中,然后应用下面的代码将其显示在布局管理器中。
属性列表
>
ImageView支持的常用XML属性如表3.6所示。
表3.6 ImageView支持的XML属性
XML属性 描 述
android:adjustViewBounds 用于设置ImageView是否调整自己的边界来保持所显示图片的长宽比
android:maxHeight 设置ImageView的最大高度,需要设置android:adjustViewBounds属性值为true,否则不起作用
android:maxWidth 设置ImageView的最大宽度,需要设置android:adjustViewBounds属性值为true,否则不起作用
android:scaleType 用于设置所显示的图片如何缩放或移动以适应ImageView的大小,其属性值可以是matrix(使用matrix方式进行缩放)、fitXY(对图片横向、纵向独立缩放,使得该图片完全适应于该ImageView,图片的纵横比可能会改变)、fitStart(保持纵横比缩放图片,直到该图片能完全显示在ImageView中,缩放完成后该图片放在ImageView的左上角)、fitCenter(保持纵横比缩放图片,直到该图片能完全显示在ImageView中,缩放完成后该图片放在ImageView的中央)、fitEnd(保持纵横比缩放图片,直到该图片能完全显示在ImageView中,缩放完成后该图片放在ImageView的右下角)、center(把图像放在ImageView的中间,但不进行任何缩放)、centerCrop(保持纵横比缩放图片,以使得图片能完全覆盖ImageView)或centerInside(保持纵横比缩放图片,以使得ImageView能完全显示该图片)
android:src 用于设置ImageView所显示的Drawable对象的ID,例如,设置显示保存在res/drawable目录下的名称为flower.jpg的图片,可以将属性值设置为android:src="@drawable/flower"
android:tint 用于为图片着色,其属性值可以是#rgb、#argb、#rrggbb或 #aarrggbb表示的颜色值
说明: 在表3.6中,只给出了ImageView组件常用的部分属性,关于该组件的其他属性,可以参阅Android官方提供的API文档。
下面给出一个关于ImageView组件的实例。
例3.16 在Eclipse中创建Android项目,名称为3.16,应用ImageView组件显示图像。(实例位置:光盘\TM\sl\3\3.16)
(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的垂直线性布局管理器修改为水平线性布局管理器,并将默认添加的TextView组件删除,然后在该线性布局管理器中添加一个ImageView组件,用于按图片的原始尺寸显示图像,修改后的代码如下: