可以在java文件中设置切换动画
设置淡出动画
setOutAnimation(AnimationUtils.loadAnimation(MainActivity.this,动画资源));
设置进入动画
setInAnimation(AnimationUtils.loadAnimation(MainActivity.this,动画资源));
设置完动画后需要指定视图工厂
setFactory()方法,以匿名内部类为参数,需要重写makeview()方法
在视图转换器中创建一个视图,为ImageSwicher设置Factory,用来为ImageSwicher制造ImageView,定义的imageView图像在这个视图工厂里运行.
设置监听器setOnClickListener
xml文件
<ImageSwitcher
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
java文件
public class MainActivity extends AppCompatActivity {
private int[]arrayPictures =new int[]{
R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04,R.drawable.img05,R.drawable.img06,R.drawable.img07,R.drawable.img08,R.drawable.img09};//声明并初始化一个保存要显示图像ID的数组
private ImageSwitcher imageSwitcher;// 声明一个图像切换器对象
private int pictutureIndex;//要显示的图片在图片数组中的Index
private float touchDownX; //左右滑动时手指按下的X坐标
private float touchUpX; //左右滑动时手指按下的X坐标
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示
imageSwitcher=findViewById(R.id.image);
//为ImageSwicher设置Factory,用来为ImageSwicher制造ImageView
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
ImageView imageView=new ImageView(MainActivity.this);// 实例化一个ImageView类的对象
imageView.setImageResource(arrayPictures[pictutureIndex]);//根据id加载默认显示图片
return imageView;
}
});
imageSwitcher.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN) {
touchDownX = event.getX(); //取得左右滑动时手指按下的X坐标
return true;
}else if(event.getAction()==MotionEvent.ACTION_UP){
touchUpX= event.getX(); //取得左右滑动时手指松开的X坐标
//手指从左往右滑动,看下一张
if(touchUpX-touchDownX>100){
pictutureIndex=pictutureIndex==0?arrayPictures.length-1:pictutureIndex-1;//如果图片是第一章图片,从左往右滑动就是最后一张图片,如果不是,索引往前减1
//设置图片切换的动画
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_in_left));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_out_right));
//设置当前要看的图片
imageSwitcher.setImageResource(arrayPictures[pictutureIndex]);
//从右往左,看上一张
}else if (touchDownX - touchUpX > 100) {
//取得当前要看的图片index
pictutureIndex = pictutureIndex == arrayPictures.length - 1 ? 0 : pictutureIndex + 1;//如果图片是最后一张,从右往左滑动就是最后一张图片,如果不是最后一张,右往左滑就是索引往后+1
//设置切换动画
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_out_left));
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_in_right));
//设置要看的图片
imageSwitcher.setImageResource(arrayPictures[pictutureIndex]);
}
return true;
}
return false;
}
});
}
}