学习笔记Android轮播图框架Banner

Android轮播图简单实现

1. 添加依赖项

implementation 'com.youth.banner:banner:1.4.10'

implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'

2. 添加权限到 AndroidManifest.xml


<uses-permission android:name="android.permission.INTERNET" /> 

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

3. 布局文件

使用ConstraintLayout可以很方便的设置内部控件的长宽比例,感兴趣的可以了解一下

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.youth.banner.Banner
         android:id="@+id/banner_home"
         android:layout_width="0dp"
         android:layout_height="0dp"
         app:layout_constraintDimensionRatio="16:7"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent" />
android.support.constraint.ConstraintLayout>

4. Activity

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Banner banner=findViewById(R.id.banner_home);
    //创建图片集合
    List<String>images = new ArrayList<>();
    images.add("我是图片外链");
    images.add("我是图片外链");
    images.add("我是图片外链");

    banner.setImages(images)//设置图集
          .setDelayTime(3000)//轮播间隔时间
          .setImageLoader(new GlideImageLoader())//设置图片加载器
          .start();

}
//图片加载器
public class GlideImageLoader extends ImageLoader {
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        Glide.with(context).load(path).into(imageView);
    }
}

------更多详细设置------

//设置banner样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置图片集合
banner.setImages(images);
//设置banner动画效果
banner.setBannerAnimation(Transformer.DepthPage);
//设置标题集合(当banner样式有显示title时)
banner.setBannerTitles(titles);
//设置自动轮播,默认为true
banner.isAutoPlay(true);
//设置轮播时间
banner.setDelayTime(1500);
//设置指示器位置(当banner模式中有指示器时)
banner.setIndicatorGravity(BannerConfig.CENTER);
//banner设置方法全部调用完毕时最后调用
banner.start();

其他图片资源加载

//资源文件
Integer[] images={R.mipmap.a,R.mipmap.b,R.mipmap.c};
//Uri
Uri uri = resourceIdToUri(context, R.mipmap.ic_launcher);
Uri[] images={uri};
//文件对象
File[] images={"文件对象","文件对象"};
//raw 两种方式
String[] images={"Android.resource://com.frank.glide/raw/raw_1"};
String[] images={"android.resource://com.frank.glide/raw/"+R.raw.raw_1"};
//ContentProvider
String[] images={"content://media/external/images/media/139469"};
//assets
String[] images={"file:///android_asset/f003.gif"};
//sd卡资源
String[] images={"file://"+ Environment.getExternalStorageDirectory().getPath()+"/test.jpg"};

banner.setImages(images);//这里接收集合

常量

方法 常量名 描述
setBannerStyle BannerConfig.NOT_INDICATOR 不显示指示器和标题
setBannerStyle BannerConfig.CIRCLE_INDICATOR 显示圆形指示器
setBannerStyle BannerConfig.NUM_INDICATOR 显示数字指示器
setBannerStyle BannerConfig.NUM_INDICATOR_TITLE 显示数字指示器和标题
setBannerStyle BannerConfig.CIRCLE_INDICATOR_TITLE 显示圆形指示器和标题(垂直显示)
setBannerStyle BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE 显示圆形指示器和标题(水平显示)
setIndicatorGravity BannerConfig.LEFT 指示器居左
setIndicatorGravity BannerConfig.CENTER 指示器居中
setIndicatorGravity BannerConfig.RIGHT 指示器居右

你可能感兴趣的:(学习笔记)