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 | 指示器居右 |