.setLayoutParams(new Gallery.LayoutParams(180, 135));
TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);
imageview.setBackgroundResource(typedArray.getResourceId(
R.styleable.Gallery_android_galleryItemBackground,
0));
imageview.setPadding(5, 0, 5, 0); //设置ImageView的内边距
} else {
imageview = (ImageView) convertView;
}
imageview.setImageResource(imageId[position]); //为ImageView设置要显示的图片
return imageview; //返回ImageView
}
/*
* 功能:获得当前选项的id
*/
@Override
public long getItemId(int position) {
return position;
}
/*
* 功能:获得当前选项
*/
@Override
public Object getItem(int position) {
return position;
}
/*
* 获得数量
*/
@Override
public int getCount() {
return imageId.length;
}
};
(6)将步骤(5)中创建的适配器与Gallery关联,并且选中中间的图片,为了将用户选择的图片显示到图像切换器中,还需要为Gallery添加OnItemSelectedListener事件监听器,在重写的onItemSelected()方法中,将选中的图片显示到图像切换器中,具体代码如下:
gallery.setAdapter(adapter); //将适配器与Gallery关联
gallery.setSelection(imageId.length / 2); //选中中间的图片
gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view,int position, long id) {
imageSwitcher.setImageResource(imageId[position]); //显示选中的图片
}
@Override
public void onNothingSelected(AdapterView> arg0) {}
});
运行本实例,将显示如图4.13示的运行结果,单击某张图片,可以选中该图片,并且让其居中显示,也可以用手指拖动图片来移动图片,并且让选中的图片在上方显示。
图4.13 幻灯片式图片浏览器
4.2 消息提示框与对话框
教学录像:光盘\TM\lx\4\消息提示框与对话框.exe
在Android项目开发中,经常需要将一些临时信息显示给用户,虽然使用前面介绍的基本组件可以达到显示信息的目的,但是这样做不仅会增加代码量,而且对于用户来说也不够友好。为此,Android提供了消息提示框与对话框来显示这些信息。下面将分别介绍消息提示框与对话框的基本应用。
4.2.1 使用Toast显示消息提示框
在前面的实例中,已经应用过Toast类来显示一个简单的消息提示框了。本节将对Toast进行详细介绍。Toast类用于在屏幕中显示一个消息提示框,该消息提示框没有任何控制按钮,并且不会获得焦点,经过一定时间后自动消失。通常用于显示一些快速提示信息,应用范围非常广泛。
使用Toast来显示消息提示框比较简单,只需要经过以下3个步骤即可实现。
(1)创建一个Toast对象。通常有两种方法:一种是使用构造方式进行创建;另一种是调用Toast类的makeText()方法创建。
使用构造方法创建一个名称为toast的Toast对象的基本代码如下:
Toast toast=new Toast(this);
调用Toast类的makeText()方法创建一个名称为toast的Toast对象的基本代码如下:
Toast toast=Toast.makeText(this, "要显示的内容", Toast.LENGTH_SHORT);
(2)调用Toast类提供的方法来设置该消息提示框的对齐方式、页边距、显示的内容等。常用的方法如表4.7所示。
表4.7 Toast类的常用方法
方 法 描 述
setDuration(int duration) 用于设置消息提示框持续的时间,参数值通常使用Toast.LENGTH_LONG或Toast.LENGTH_SHORT
setGravity(int gravity, int xOffset, int yOffset) 用于设置消息提示框的位置,参数gravity用于指定对齐方式;xOffset和yOffset用于指定具体的偏移值
setMargin(float horizontalMargin, float verticalMargin) 用于设置消息提示的页边距
setText(CharSequence s) 用于设置要显示的文本内容
setView(View view) 用于设置将要在消息提示框中显示的视图
(3)调用Toast类的show()方法显示消息提示框。需要注意的是,一定要调用该方法,否则设置的消息提示框将不显示。
下面通过一个具体的实例说明如何使用Toast类显示消息提示框。
例4.11 在Eclipse中创建Android项目,名称为4.11,通过两种方法显示消息提示框。(实例位置:光盘\TM\sl\4\4.11)
(1)修改新建项目的res\layout目录下的布局文件main.xml,为默认添加的垂直线性布局管理器设置一个android:id属性,关键代码如下:
android:id="@+id/ll"
(2)在主活动MainActivity.java的onCreate()方法中,通过makeText()方法显示一个消息提示框,关键代码如下:
Toast.makeText(this, "我是通过makeText()方法创建的消息提示框", Toast.LENGTH_LONG).show();
注意: 在最后一定不要忘记调用show()方法,否则该消息提示框将不显示。
(3)通过Toast类的构造方法创建一个消息提示框,并设置其持续时间、对齐方式以及要显示的内容等,这里设置其显示内容为带图标的消息,具体代码如下: