ImageSwitcher是用于切换图片的控件,在安卓的图片浏览功能中会用到这样的控件。下面我们来介绍一下这个控件的使用。
这个例子实现的是点击向前和向后按钮,使图片切换到前一个和后一个。
整体思路:在xml文件中,添加一个ImageSwitcher控件和两个Button控件,在活动中首先实现OnClickListener和ViewFactory,定义一个整型变量,初始化为0,作为图片的开始索引,定义一个动态数组,存放所有的图片信息,图片默认的位置落在第一张,makeView是实现ViewFactory涉及的方法,在里面返回一个ImageView对象,为ImageSwitcher控件设置工厂;在Button的onClick事件中,如果是第一个按钮的话,索引值减一,如果索引值小于1的话设置为最大索引值,把动态数组中相应索引的图片绑定到ImageSwitcher控件上显示,如果是第二个按钮的话,索引值加一,如果索引值大于图片最大索引值的话设置为最小索引值,把动态数组中相应索引的图片绑定到ImageSwitcher控件上显示。这样就完成了图片根据按钮的前后点击进行浏览的功能。
activity_main.xml文件:
<ImageSwitcher
android:id="@+id/imageSwitcher1"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
</ImageSwitcher>
<Button
android:id="@+id/button1"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/imageSwitcher1"
android:text="forward" />
<Button
android:id="@+id/button2"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/imageSwitcher1"
android:text="next" />
MainActivity.java文件:
public class MainActivity extends Activity implements OnClickListener,ViewFactory{
private ImageSwitcher imageSwitcher;
private Button button1,button2;
private int index=0;//定义变量,表示浏览图片的次序
private List<Drawable> list=new ArrayList<Drawable>();//定义一个list,用于存放用户的图片信息
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwitcher1);
button1=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
imageSwitcher.setFactory(this);
//往list集合里装载图片信息
list.add(getResources().getDrawable(R.drawable.new1));
list.add(getResources().getDrawable(R.drawable.new2));
list.add(getResources().getDrawable(R.drawable.new3));
list.add(getResources().getDrawable(R.drawable.new4));
list.add(getResources().getDrawable(R.drawable.new5));
list.add(getResources().getDrawable(R.drawable.new6));
list.add(getResources().getDrawable(R.drawable.new7));
list.add(getResources().getDrawable(R.drawable.new8));
list.add(getResources().getDrawable(R.drawable.new9));
list.add(getResources().getDrawable(R.drawable.new10));
// 初始化加载图片的信息
if(list.size()>0){
imageSwitcher.setImageDrawable(list.get(0));
}
}
@Override
public View makeView() {//实现ViewFactory涉及的方法
// TODO Auto-generated method stub
return new ImageView(MainActivity.this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
index--;
if(index<0){
index=list.size()-1;//可以实现循环浏览(当减到负数的时候,将其置为最大的索引值)
}
imageSwitcher.setImageDrawable(list.get(index));//设置图片
break;
case R.id.button2:
index++;
if(index>=list.size()){
index=0;//可以实现循环浏览(当加到图像数量以上的时候,将其置为最小的索引值)
}
imageSwitcher.setImageDrawable(list.get(index));
break;
}
}
}