1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android----------- Banner2 广告图片轮播ViewPager2实现

Android----------- Banner2 广告图片轮播ViewPager2实现

时间:2021-09-14 01:28:06

相关推荐

Android----------- Banner2 广告图片轮播ViewPager2实现

之前发过了Banner1 广告图片轮播了,现在使用了Banner2,非常不错,来分享一下。

Banner广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式、动画、轮播和切换时间、位置、图片加载框架等!

主要改进功能介绍

使用了ViewPager2为基础控件 支持了androidx兼容包方便了UI、Indicator自定义支持画廊效果、魅族效果兼容了水平和垂直轮播,也可以实现类似淘宝头条的效果依赖包目前只需要导入了ViewPager2

先来看看效果图:

使用你可以直接引入依赖:

implementation 'io.github.youth514:banner:2.2.2'

gradle

repositories {maven { url "https://s01./content/groups/public" }}

使用

<com.youth.banner.Bannerxmlns:app="/apk/res-auto"android:id="@+id/banner"android:layout_width="match_parent"android:layout_height="高度自己设置" />

添加权限到你的 AndroidManifest.xml

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

Banner具体方法调用,继承BannerAdapter,和RecyclerView的Adapter一样(如果你只是图片轮播也可以使用默认的,demo中有很多的Adapter,可以下载查看)

/*** 自定义布局,下面是常见的图片样式,更多实现可以看demo,可以自己随意发挥*/public class ImageAdapter extends BannerAdapter<DataBean, ImageAdapter.BannerViewHolder> {public ImageAdapter(List<DataBean> mDatas) {//设置数据,也可以调用banner提供的方法,或者自己在adapter中实现super(mDatas);}//创建ViewHolder,可以用viewType这个字段来区分不同的ViewHolder@Overridepublic BannerViewHolder onCreateHolder(ViewGroup parent, int viewType) {ImageView imageView = new ImageView(parent.getContext());//注意,必须设置为match_parent,这个是viewpager2强制要求的imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);return new BannerViewHolder(imageView);}@Overridepublic void onBindView(BannerViewHolder holder, DataBean data, int position, int size) {holder.imageView.setImageResource(data.imageRes);}class BannerViewHolder extends RecyclerView.ViewHolder {ImageView imageView;public BannerViewHolder(@NonNull ImageView view) {super(view);this.imageView = view;}}}

Banner使用中优化体验

如果你需要考虑更好的体验,可以看看下面的代码

public class BannerActivity {//方法一:自己控制banner的生命周期@Overrideprotected void onStart() {super.onStart();//开始轮播banner.start();}@Overrideprotected void onStop() {super.onStop();//停止轮播banner.stop();}@Overrideprotected void onDestroy() {super.onDestroy();//销毁banner.destroy();}//方法二:调用banner的addBannerLifecycleObserver()方法,让banner自己控制protected void onCreate(Bundle savedInstanceState) {//添加生命周期观察者banner.addBannerLifecycleObserver(this);}}

项目地址:/youth514/banner

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。