美文网首页
android Banner广告栏循环自动播放

android Banner广告栏循环自动播放

作者: 水煮大冬瓜 | 来源:发表于2016-11-24 18:11 被阅读0次

安卓广告栏循环播放时很多app都会有的功能,实现方法也有很多,常见的有gallery和viewpager,今天使用github上一个广告栏框架实现这一功能。

  • Step 1:
    在你的工程gradle下添加依赖

    compile'com.bigkoo:convenientbanner:2.0.5'

  • Step 2:
    创建banner布局

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <com.bigkoo.convenientbanner.ConvenientBanner
            android:id="@+id/banner"
            android:layout_width="match_parent"
            app:canLoop="true"
            android:layout_height="160dp">
    
        </com.bigkoo.convenientbanner.ConvenientBanner>
    </RelativeLayout>
    
  • Step 3 :
    创建banner中的item布局

      <?xml version="1.0" encoding="utf-8"?>
     <RelativeLayout 
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent">
    
         <ImageView
             android:id="@id/bannerImage"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:scaleType="centerCrop"
              />
    
         <TextView
             android:id="@id/bannerFlag"
             android:layout_width="wrap_content"
             android:layout_height="22.0dip"
             android:layout_alignBottom="@id/bannerImage"
             android:layout_alignRight="@id/bannerImage"
             android:layout_marginBottom="3.0dip"
             android:background="@drawable/index_banner_tag_blue"
             android:gravity="center"
             android:text="推荐"
             android:paddingLeft="12.669983dip"
             android:paddingRight="10.0dip"
             android:shadowColor="#33000000"
             android:textColor="#ffffffff"
             android:textSize="10.669983sp" />
     </RelativeLayout>
    
  • Step 4:
    构造BannerItemViewHolder处理Item布局的呈现效果

    public class BannerHolderView implements Holder<BannerBean> {
        @BindView(R.id.bannerImage)
        ImageView bannerImage;
        @BindView(R.id.bannerFlag)
        TextView bannerFlag;
    
        @Override
        public View createView(Context context) {
            View view = LayoutInflater.from(context).inflate(R.layout.banner_item, null);
            ButterKnife.bind(this,view);
            return view;
        }
    
        @Override
        public void UpdateUI(Context context, int position, BannerBean data) {
            Glide.with(getContext()).load(data.getImgUrl()).into(bannerImage);
            bannerFlag.setText(data.getTag());
    
        }
    }
    
  • Step 5:
    在activity或者fragment中对banner进行初始化并加载布局

     //对应banner中需要填充的数据模型,可根据所需自定义属性 一般包括对应图片和你点击所需要跳转的链接或者标识你广告类型的Type等;
    final List<BannerBean> bannerList = BannerBean.getBanners();
    //在这里我使用banner作为listview的头部所以需要另外载入
    banner = LayoutInflater.from(getContext()).inflate(R.layout.banner_layout, null);
    //从对应父布局加载你的banner
    convenientBanner = (ConvenientBanner<BannerBean>) banner.findViewById(R.id.banner);
        convenientBanner.setPages(new CBViewHolderCreator() {
            @Override
            public Object createHolder() {
                return new BannerHolderView();//导入对应的banneritem进行数据呈现
            }
        }, bannerList);
    //这里设置底部小点的样式,若不设置则不显示
    convenientBanner.setPageIndicator(new int[]{R.drawable.dot_normal,R.drawable.dot_focused});
    
  • Step 6:
    设置自动切换
    需要在activity的onresume和onPause里加入以下代码。

     // 开始自动翻页
       @Override
       public void onResume() {
           super.onResume();
           if(convenientBanner != null){
               convenientBanner.startTurning(DELAY_TIME);
           }
       }
    
       // 停止自动翻页
       @Override
       public void onPause() {
           super.onPause();
           if(convenientBanner != null){
               convenientBanner.stopTurning();
           }
       }
    
  • PS
    如果需要添加切换动画效果可引入这个库,因为本项目是基于viewpager实现的,所以只需要对viewpager设置切换动画效果即可

    compile 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:1.2.32@aar'

      convenientBanner.getViewPager().setPageTransformer(true, transforemer);
    

    具体的动画效果实现请参考
    https://github.com/ToxicBakery/ViewPagerTransforms

最后

感谢该项目的作者
希望大家在使用中可以互相交流
附上我写的demo 点击查看

相关文章

网友评论

      本文标题:android Banner广告栏循环自动播放

      本文链接:https://www.haomeiwen.com/subject/eteeettx.html