android-auto-scroll-view-pager-master的使用

简介

自动循环播放的轮播条

github地址:android-auto-scroll-view-pager

使用方法

  • 1.在build.gradle中添加

    compile ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') {
        exclude module: 'support-v4'
    }
    
  • 2.在布局文件中定义

    <cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="180dp" />
    
  • 3.代码中初始化

    private AutoScrollViewPager auto_view_pager;
    auto_view_pager = (AutoScrollViewPager)findViewById(R.id.auto_view_pager);
    
  • 4.初始化数据

    //添加图片的集合
    images = new ArrayList<>();
    ImageView imageView = new ImageView(this);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setImageResource(R.drawable.pic11);
    images.add(imageView);
    imageView = new ImageView(this);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setImageResource(R.drawable.pic22);
    images.add(imageView);
    imageView = new ImageView(this);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setImageResource(R.drawable.pic33);
    images.add(imageView);
    imageView = new ImageView(this);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setImageResource(R.drawable.pic44);
    images.add(imageView);
    
  • 5.设置auto_view_pager的adapter

    auto_view_pager.setAdapter(new MyAdapter());
    //解决最后一个跳转到第一个闪动问题
    auto_view_pager.setCurrentItem((Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2 % images.size()));
    
    class MyAdapter extends PagerAdapter {
    
        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(images.get(position % images.size()));
            return images.get(position % images.size());
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
    }
    
  • 6.设置auto_view_pager的参数

    //设置延时时间
    auto_view_pager.setInterval(2000);
    //设置轮播的方向 AutoScrollViewPager.RIGHT/AutoScrollViewPager.LEFT
    auto_view_pager.setDirection(AutoScrollViewPager.RIGHT);
    //设置是否自动循环轮播,默认为true
    //注意:一旦设为true,则不能和ViewPagerIndicator一起使用
    auto_view_pager.setCycle(true);
    //设置切换动画的时长
    auto_view_pager.setScrollDurationFactor(10);
    //设置当滑动到最后一个或者第一个时,如何切换下一张
    /**
     * SLIDE_BORDER_MODE_NONE:不能再滑动
     * SLIDE_BORDER_MODE_TO_PARENT:移动父视图的Pager
     * SLIDE_BORDER_MODE_CYCLE:循环
     * 默认为SLIDE_BORDER_MODE_NONE
     */
    auto_view_pager.setSlideBorderMode(AutoScrollViewPager.SLIDE_BORDER_MODE_CYCLE);
    //当滑动到最后一张或第一张时是否开启动画,默认为true
    auto_view_pager.setBorderAnimation(false);
    //当触摸的时候,停止轮播
    auto_view_pager.setStopScrollWhenTouch(true);
    
  • 7.开启/停止轮播

    @Override
    protected void onResume() {
        super.onResume();
        //开启自动轮播,延时时间为getInterval()
        auto_view_pager.startAutoScroll();
        //开启自动轮播,并设置延时
        //auto_view_pager.startAutoScroll(delayTime);
    }
    
    @Override
    protected void onPause() {
        super.onPause();
        //停止轮播
        auto_view_pager.stopAutoScroll();
    }
    

你可能感兴趣的:(自动轮播条)