第三方开源库:轮播图:Banner/Kanner

简介

轮播图控件,支持:标题、标题+指示器、标题+数字、标题+指示器垂直显示。
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.** {
    *;
 }

源码

BannerDemo01

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);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值