Banner
简介
轮播图控件,支持:标题、标题+指示器、标题+数字、标题+指示器垂直显示。
github地址:youth5201314/banner
效果图:
步骤
github中readme.md写的比较详细,参数很多,支持多种属性设置,这里只介绍简单的使用。
- gradle添加依赖
- AndroidManifest.xml配置网络权限
- 布局中引用banner
- 代码中使用
1 创建图片加载类
2 设置图片加载器
3 设置图片集合
4 开启轮播
Step1 gradle添加依赖
dependencies {
...
//最新版本
compile 'com.youth.banner:banner:1.4.2'
...
}
Step2 设置图片加载器
public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//Glide 加载图片简单用法,别忘了在gradle中配置
Glide.with(context).load(path).into(imageView);
}
}
Step3/4/5 设置图片加载器+图片集合+开启轮播
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置图片集合
banner.setImages(urlList);
//开启轮播
banner.start();
混淆代码
# glide 的混淆代码
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# banner 的混淆代码
-keep class com.youth.banner.** {
*;
}
源码
Kanner
效果图
简介
github地址:Kanner
作者没上传到jcenter,需要下载module作为library使用。
记得添加网络权限
一:加载网络图片
kanner = (Kanner) findViewById(R.id.kanner);
String[] imageUrls = {"http://imgsrc.baidu.com/forum/pic/item/694e5f6034a85edf099d89df49540923dc5475bc.jpg",
"http://c.hiphotos.baidu.com/baike/s=220/sign=875c273b43166d223c77129676220945/b3119313b07eca80b79f9917912397dda04483ac.jpg",
"http://img02.muzhiwan.com/2015/06/11/upload_557903dc0f165.jpg",
"http://im1.tongbu.com/appicon/app/585/85/10004585_78E15BC6.jpg",
"http://i8.qhmsg.com/t01a4c0ad3d964c898b.png"};
kanner.setImagesUrl(imageUrls);
二:加载资源图片
kanner2 = (Kanner) findViewById(R.id.kanner2);
int[] imagerIds = {R.mipmap.a,R.mipmap.b,R.mipmap.c,R.mipmap.d,R.mipmap.d};
kanner2.setImagesRes(imagerIds);
防止内存泄漏
@Override
protected void onDestroy() {
kanner.removeCallbacksAndMessages();
kanner2.removeCallbacksAndMessages();
super.onDestroy();
}
UltraViewPager
github:https://github.com/alibaba/UltraViewPager
gradle
compile ('com.alibaba.android:ultraviewpager:1.0.6@aar') {
transitive = true
}
xml
<com.tmall.ultraviewpager.UltraViewPager
android:id="@+id/ultraViewPager"
android:layout_width="match_parent"
android:layout_height="300dp"/>
Java
显示indicator
UltraViewPager ultraViewPager = (UltraViewPager)findViewById(R.id.ultra_viewpager);
ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL);
//initialize UltraPagerAdapter,and add child view to UltraViewPager
PagerAdapter adapter = new UltraPagerAdapter();
ultraViewPager.setAdapter(adapter);
//initialize built-in indicator
ultraViewPager.initIndicator();
//set style of indicators
ultraViewPager.getIndicator()
.setOrientation(UltraViewPager.Orientation.HORIZONTAL)
.setFocusColor(Color.GREEN)
.setNormalColor(Color.WHITE)
.setRadius((int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics()));
//set the alignment
ultraViewPager.getIndicator().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
//construct built-in indicator, and add it to UltraViewPager
ultraViewPager.getIndicator().build();
//set an infinite loop
ultraViewPager.setInfiniteLoop(true);
//enable auto-scroll mode
ultraViewPager.setAutoScroll(2000);
可以自定义indicator
UltraViewPager ultraViewPager = (UltraViewPager) findViewById(R.id.ultraViewPager);
ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL);
UltraViewPagerAdapter adapter = new UltraViewPagerAdapter();
ultraViewPager.setAdapter(adapter);
ultraViewPager.initIndicator();
ultraViewPager.getIndicator()
.setOrientation(UltraViewPager.Orientation.HORIZONTAL)
.setFocusResId(0)
.setNormalResId(0)
.setFocusColor(Color.GREEN)
.setNormalColor(Color.WHITE)
//.setFocusResId(R.mipmap.tm_biz_lifemaster_indicator_selected)
//.setNormalResId(R.mipmap.tm_biz_lifemaster_indicator_normal)
.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM)//设置indicator的外边距
.setMargin(0, 0, 0, 30)
.setRadius((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics()))
.build();
ultraViewPager.setInfiniteLoop(true);
ultraViewPager.setAutoScroll(1000);