Android ImageSwitcher

分享到:

ImageSwitcher控件用于实现一组图片的幻灯片效果,一张一张的显示。所以ImageSwitcher经常用于Android相册的相关开发。通过一个实例来了解ImageSwitcher的基本使用方法。

在本例中首先准备了4张图片分别命名为img0.jpg,img1.jpg,img2.jpg,img3.jpg,并且统一存放在项目的/res/drawable目录下,之后在源码中定义了一个数组imagelist用于存放这几张图片对应的资源ID(具体实现方法请参考下面的java源码部分)。
最后利用ImageSwitcher的setImageResource方法设置imageSwitcher当前显示的图片,在本文最后介绍了setImageResource

先看效果图:

ImageSwitcher实例

XML布局代码:

<?xml version="1.0" encoding="utf-8"?>
          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/RelativeLayout1"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical" >
         <ImageSwitcher
          android:id="@+id/imageswitch"
          android:layout_width="wrap_content"
          android:layout_height="150dp"
          android:layout_centerHorizontal="true" >
         </ImageSwitcher>
         <Button
          android:id="@+id/button_next"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_below="@+id/imageswitch"
          android:text="上一张" />
         <Button
          android:id="@+id/button_pre"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBaseline="@+id/button_next"
          android:layout_alignBottom="@+id/button_next"
          android:layout_alignParentRight="true"
          android:text="下一张" />
         <TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBaseline="@+id/button_next"
          android:layout_alignBottom="@+id/button_next"
          android:layout_centerHorizontal="true"
          android:text="" />
</RelativeLayout>

java源码如下:

package com.my.androidtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity implements OnClickListener, ViewFactory{

ImageSwitcher imageswitcher;
Button button_pre;
Button button_next;
TextView textView;

static final Integer[] imagelist =
{
R.drawable.img0,
R.drawable.img1,
R.drawable.img2,
R.drawable.img3
};
private static int index = 0;



@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

imageswitcher = (ImageSwitcher)findViewById(R.id.imageswitch);
imageswitcher.setFactory(this);
imageswitcher.setImageResource(imagelist[index]);

textView=(TextView)this.findViewById(R.id.textView1);

button_pre = (Button)findViewById(R.id.button_pre);
button_next = (Button)findViewById(R.id.button_next);

button_pre.setOnClickListener(this);
button_next.setOnClickListener(this);
}
@Override
public View makeView() {
// TODO Auto-generated method stub
return new ImageView(this);
}
@Override
public void onClick(View v) { //实现button的onClick方法
// TODO Auto-generated method stub

switch(v.getId())
{
case R.id.button_next:
index++;
if(index == imagelist.length)
{
index = 0;
}
imageswitcher.setImageResource(imagelist[index]);
textView.setText(&quot;图片&quot;+index);
break;
case R.id.button_pre:
index--;
if(index &lt; 0)
{
index = imagelist.length - 1;
}
imageswitcher.setImageResource(imagelist[index]);
textView.setText(&quot;图片&quot;+index);
break;
default:
break;
}

}
}

大致可以把实现imageSwitcher的步骤分解为以下内容:
(1)要有一个ImageSwitcher控件,可通过XML进行布局,也可在java源码中创建
(2)准备几张用于显示的图片素材,并且把对应的图片资源存放到一个变量中,例如本例放在一个数组中。
(3)通过setImageResource方法设置每次要显示的图片
下面重点分析setImageResource这个方法:
格式是这样的,setImageResource(int resid),方法中有一个int类型的参数,这个参数可以理解为图片的资源ID。当我们把图片存放到drawable目录时,系统就已经自动给每张图片定义了一个ID(ID虽然是int类型的,但我们可以通过R.drawable.img0这样的方式来调用,并不需要知道具体的id数值是多少)。这样 imageSwitcher就能显示对应id的图片了。
如本例中的代码imageswitcher.setImageResource(imagelist[index]); 其中index变量是imagelist数组对应的下标,假设当index=1 那么对应imagelist的元素就是R.drawable.img1这张图片的ID。
本例只是实现了最基础的ImageSwitcher,实际应用中通常需要配合手势滑动来完成图片切换(可配合Gallery),讲到这里大家其实能看出来实现一个好用的imageSwitcher效果关键就是在逻辑中控制setImageResource这个方法。

昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例