ForeverViewPager 无限循环轮播图

前言:

纵观百度,没有发现一个好用的轮播图,于是着手自己打造一款好用的轮播图,方便下次使用,并分享给大家,欢迎大家fork和star

着急的朋友可以直接点击这里

1.添加gradle

build.gradle Project
	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}
builde.gradle module
    compile 'com.github.rhylme:ForeverViewPager:1.21'

2.layout xml

    <com.rhyme.foreverviewpager.ForeverViewPager
        android:id="@+id/forever_vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:dot_visible="true"
        app:carousel="true"
        app:dot_align="center"
        app:dot_size="12dp"
        app:image_ScaleType="fit_xy"
        app:dot_normal="@drawable/ic_fiber_black"
        app:dot_select="@drawable/ic_fiber_while"
        app:interval="5000"
        app:sliding="2000"
        />

属性说明:
    app:dot_visible(指示器,下面都以小圆点描述)小圆点是否显示,默认显示
    app:carousel 是否进行轮播 默认轮播
    app:dot_align 小圆点位置 默认 center 参数 left or center or right
    app:dot_size 小圆点大小 默认 50px
    app:dot_normal 小圆点正常形态 默认黑色点
    app:dot_select 小圆点选中形态 默认白色点
    app:interval="3000" 轮播延时/毫秒 默认2000毫秒
    app:sliding="1500"轮播滑动速度 默认1000毫秒

3.初始化控件

 forever_vp = (ForeverViewPager) findViewById(R.id.forever_vp);
1.图片使用本地资源
int[] images={R.mipmap.ic_launcher,R.mipmap.ic_launcher,R.mipmap.ic_launcher};
        forever_vp.setAdapter(images);
2.使用网络图片 String[] urlList , int resHolder ,int resError 三个参数分别是图片地址集合,加载中占位图,加载失败占位图
  String[] urlList = {"http://img2.imgtn.bdimg.com/it/u=3770102282,1750837690&fm=27&gp=0.jpg", "http://img3.imgtn.bdimg.com/it/u=4046231734,2307706671&fm=11&gp=0.jpg"};
        forever_vp.setAdapter(urlList, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round);
3.使用view,直接添加View对象数组
List<View> viewList=new ArrayList<>();
        for (int i=0;i<5;i++){
            TextView tv=new TextView(this);
            tv.setText("你好"+i);
            tv.setTextSize(50f);
            tv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            viewList.add(tv);
        }
        forever_vp.setAdapter(viewList);
4.使用混合图片源 Object[] objectList,int resHolder , int resError 三个参数分别是图片源集合,加载中占位图,加载失败占位图
现支持:url ,bitmap , drawable ,res , file
Bitmap bitmap= BitmapFactory.decodeResource(this.getResources() http://,R.mipmap.ic_launcher_round);
File file=new File(Environment.getExternalStorageDirectory().getPath()+"/sgirl/imagecache/","123.jpg");
Drawable drawable=Drawable.createFromPath(file.getPath());
Object[] imagess={"http://img2.imgtn.bdimg.com/it/u=3770102282,1750837690&fm=27&gp=0.jpg",bitmap,drawable,R.mipmap.ic_launcher,file};
forever_vp.setAdapter( imagess,R.mipmap.ic_launcher, R.mipmap.ic_launcher_round);

4.控制轮播的两个方法

forever_vp.start();//开始轮播,默认已经开启,无需重复开启
forever_vp.stop();//停止轮播

5.开启硬盘缓存

推荐Application中初始化,不初始化也没关系,只不过每次启动你的应用都要重新加载一遍图片
1.重新开缓存
ForeverCache.initCache(this, BuildConfig.VERSION_CODE);
2.使用自己的缓存(方便进行缓存清理)
ForeverCache.initCache(DiskLruCache);//需要使用Forvever里的DisLruCache

6.轮播图点击监听

 forever_vp.setOnItemClickListener(new ForeverViewPager.OnItemClickListener() {
        @Override
        public void ClickItem(View view, int position) {
            
        }
    });

7.轮播图滑动监听

forever_vp.setPageScrollListener(new ForeverViewPager.PageScrollListener() {
        @Override
        public void onPageScrollStateChanged(int state) {

        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }
    });

8.自定义轮播动画

forever_vp.setPageTransFormer(boolean reverseDrawingOrder, PageTransformer transformer);//跟自定义ViewPager的动画一样

9.demo.apk




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值