万书网 > 文学作品 > Android从入门到精通 > 第27页

第27页







(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布局文件中使用标记添加;另一种是在Java文件中,通过new关键字创建。推荐采用第一种方法。

在使用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组件,用于按图片的原始尺寸显示图像,修改后的代码如下: