安卓31:AndroidStudio—ImageSwitcher 图片切换器组件

可以在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;
            }
        });
    }
}

你可能感兴趣的:(安卓,android,安卓,android,studio,移动开发)