一、ImageSwitcher
FrameLayout
---->(间接继承)ImageSwitcher
有三个方法:1、setImageDrawable(Drawable);2、setImageResource(int);3、setImageURL(URL);
在XML中设定:
@android:anim/AnimName
常用效果
android:inAnimation:切入图片时的效果。
android:outAnimation:切出图片时的效果。
设置视图工厂:
ImageSwitcher直接继承自ViewSwitcher类。
ImageSwitcher通过setFactory()方法为它设置一个ViewSwitcher.ViewFactory接口。
设置这个ViewFactory接口时需要实现makeView()方法,该方法通常会返回一个ImageView。
makeView()为ImageSwitcher生成ImageView,为ViewSwitcher生成View。
public class Test1 extends AppCompatActivity {
private Button btnAdd, btnSub;
private ImageSwitcher imageSwitcher;
private int index = 0;
private List<Drawable> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test1);
putData();
imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1);
btnAdd = (Button) findViewById(R.id.btnadd);
btnSub = (Button) findViewById(R.id.btnSub);
btnAdd.setOnClickListener(myClick);
btnSub.setOnClickListener(myClick);
//通过代码设定从左缓进,从右换出的效果。
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(Test1.this, android.R.anim.slide_in_left));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(Test1.this, android.R.anim.slide_out_right));
imageSwitcher.setFactory(new ViewFactory() {
@Override
public View makeView() {
return new ImageView(Test1.this);
}
});
imageSwitcher.setImageDrawable(list.get(0));
}
private View.OnClickListener myClick = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnadd:
index--;
if (index < 0) {
index = list.size() - 1;
}
imageSwitcher.setImageDrawable(list.get(index));
break;
case R.id.btnSub:
index++;
if (index >= list.size()) {
index = 0;
}
imageSwitcher.setImageDrawable(list.get(index));
break;
}
}
};
private void putData() {
//填充图片的Drawable资源数组
list = new ArrayList<>();
list.add(getResources().getDrawable(R.drawable.bmp1));
list.add(getResources().getDrawable(R.drawable.bmp2));
list.add(getResources().getDrawable(R.drawable.bmp3));
list.add(getResources().getDrawable(R.drawable.bmp4));
list.add(getResources().getDrawable(R.drawable.bmp5));
}
}