ImageSwitcher 繼承自ViewSwitcher。ImageSwitcher繼承自ViewSwitcher,并重寫了showNext,showPrevious方法,ViewFactory傳回的元件必須是ImageView,使用更簡單。隻需要兩步:
1. 為ImageSwitcher提供一個ViewFactory,ViewFactory傳回的隻能是ImageView
2. 切換圖檔時隻需要調用ImageSwitcher的
public void setImageDrawable(Drawable drawable)
public void setImageResource(int resid)
public void setImageURI(Uri uri)
// -----------ImageSwitcher--------------
final ImageSwitcher imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
Button IButton1 = (Button) findViewById(R.id.IButton1);
Button IButton2 = (Button) findViewById(R.id.IButton2);
final int currentPig[] = { -1 };// 資料源設為上面的那個數組。
// int[] images = {};
imageSwitcher.setInAnimation(ViewAnimatorDemo.this,
android.R.anim.fade_in);
imageSwitcher.setOutAnimation(ViewAnimatorDemo.this,
android.R.anim.fade_out);
imageSwitcher.setFactory(new ViewFactory() {
@Override
public View makeView() {
// TODO Auto-generated method stub
ImageView image = new ImageView(ViewAnimatorDemo.this);
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
image.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
return image;
}
});
OnClickListener IListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.IButton1) {
if (--currentPig[0] < 0)
currentPig[0] = images.length - 1;
} else {
if (++currentPig[0] >= images.length)
currentPig[0] = 0;
}
imageSwitcher.setImageResource(images[currentPig[0]]);
}
};
IButton1.setOnClickListener(IListener);
IButton2.setOnClickListener(IListener);
// 初始化一下
currentPig[0] = 0;
imageSwitcher.setImageResource(images[currentPig[0]]);