packagecom.example.myhighuiii;importandroidx.appcompat.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.MotionEvent;importandroid.view.View;importandroid.view.animation.AnimationUtils;importandroid.widget.ImageSwitcher;importandroid.widget.ImageView;importandroid.widget.ViewSwitcher;public class MainActivity extendsAppCompatActivity {private int[] arrayPicture = new int[]{
R.mipmap.a, R.mipmap.b, R.mipmap.c
};private ImageSwitcher imageSwitcher = null;private int index = 0;private float touchDownX;//手指按下的X坐标
private float touchUpX;//手指抬起的X坐标
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwitcher);
imageSwitcher.setFactory(newViewSwitcher.ViewFactory() {
@OverridepublicView makeView() {
ImageView imageView= new ImageView(MainActivity.this);
imageView.setImageResource(arrayPicture[index]);//当前要显示的图片
returnimageView;
}
});//设置事件监听器
imageSwitcher.setOnTouchListener(newView.OnTouchListener(){
@Overridepublic booleanonTouch(View v, MotionEvent event) {//如果触发了按下事件
if(event.getAction()==MotionEvent.ACTION_DOWN){
touchDownX=event.getX();return true;
}else if(event.getAction()==MotionEvent.ACTION_UP){//触发了抬起事件
touchUpX=event.getX();if(touchUpX-touchDownX>100){//认为是从左向右滑动的,往前走一步
index= index==0 ? arrayPicture.length-1 : index-1;//设置淡入淡出
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(
MainActivity.this,android.R.anim.fade_in
));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(
MainActivity.this,android.R.anim.fade_out
));//设置切换的图片资源
imageSwitcher.setImageResource(arrayPicture[index]);
}else if(touchUpX-touchDownX
index = index==arrayPicture.length-1 ? 0 : index+1;//设置淡入淡出
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(
MainActivity.this,android.R.anim.fade_in
));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(
MainActivity.this,android.R.anim.fade_out
));//设置切换的图片资源
imageSwitcher.setImageResource(arrayPicture[index]);
}return true;
}return false;
}
});
}
}