前言:
纵观百度,没有发现一个好用的轮播图,于是着手自己打造一款好用的轮播图,方便下次使用,并分享给大家,欢迎大家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的动画一样