ImageSwitcher组件的主要功能是进行图片的切换,要实现图片的切换关键要实现ViewFactory。下面先附上效果图
首先配置main.xml布局用于显示界面
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageSwitcher
android:id="@+id/imgswithcer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
<LinearLayout
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<Button
android:id="@+id/buttonPre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一张" />
<Button
android:id="@+id/buttonNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一张" />
</LinearLayout>
</LinearLayout>
在activity中实现工厂类
package com.example.imgswitcherdemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity {
private int foot = 0;
private Button buttonPre = null;
private Button buttonNext = null;
private ImageSwitcher imgswitcher = null;
private int imgRes[] = { R.drawable.pic_head_01, R.drawable.pic_head_01,
R.drawable.pic_head_02, R.drawable.pic_head_03,
R.drawable.pic_head_04, R.drawable.pic_head_05,
R.drawable.pic_head_06, R.drawable.pic_head_07,
R.drawable.pic_head_08, R.drawable.pic_head_09,
R.drawable.pic_head_10, R.drawable.pic_head_11,
R.drawable.pic_head_12, R.drawable.pic_head_13,
R.drawable.pic_head_14, R.drawable.pic_head_15,
R.drawable.pic_head_16, R.drawable.pic_head_17 };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.buttonPre = (Button) this.findViewById(R.id.buttonPre);
this.buttonNext = (Button) this.findViewById(R.id.buttonNext);
this.imgswitcher = (ImageSwitcher) this.findViewById(R.id.imgswithcer);
this.buttonPre.setOnClickListener(new butPreOnClickListener());
this.buttonNext.setOnClickListener(new butNextOnClickListener());
this.imgswitcher.setFactory(new imgFactory());//设置工厂类
this.imgswitcher.setImageResource(MainActivity.this.imgRes[foot]);// 一定要先设置工厂后在设置资源,不然会报空指针异常
}
private class butPreOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
if (v == buttonPre) {
if (MainActivity.this.foot == 0) {
// MainActivity.this.buttonPre.setEnabled(false);
Toast.makeText(MainActivity.this, "当前已经是第一张了",
Toast.LENGTH_LONG).show();
} else
MainActivity.this.foot--;
MainActivity.this.imgswitcher
.setImageResource(MainActivity.this.imgRes[foot]);
// MainActivity.this.buttonPre.setEnabled(true);
}
}
}
private class butNextOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
if (MainActivity.this.foot == MainActivity.this.imgRes.length - 1) {
//MainActivity.this.buttonNext.setEnabled(false);
Toast.makeText(MainActivity.this, "当前已经是最后一张了",
Toast.LENGTH_LONG).show();
} else
MainActivity.this.foot++;
MainActivity.this.imgswitcher
.setImageResource(MainActivity.this.imgRes[foot]);
//MainActivity.this.buttonNext.setEnabled(true);
}
}
/*public boolean isCheckButton() {
if (MainActivity.this.foot == 0) {
MainActivity.this.buttonPre.setEnabled(false);
Toast.makeText(MainActivity.this, "当前已经是第一页", Toast.LENGTH_SHORT)
.show();
} else
MainActivity.this.buttonPre.setEnabled(true);
if (MainActivity.this.foot == MainActivity.this.imgRes.length - 1) {
MainActivity.this.buttonNext.setEnabled(false);
Toast.makeText(MainActivity.this, "当前已经是最后一页", Toast.LENGTH_SHORT)
.show();
} else
MainActivity.this.buttonNext.setEnabled(true);
return false;
}*/ 也可以把按钮检测的功能独立出来
private class imgFactory implements ViewFactory { //通过ViewFactory接口实现工厂类
@Override
public View makeView() {
ImageView img = new ImageView(MainActivity.this);
img.setBackgroundColor(0xFFFFFFFF); // 设置背景
img.setScaleType(ImageView.ScaleType.CENTER);
img.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); // 定义组件
return img;
}
}
}