轮播图bunner控件ConvenientBanner

首先添加依赖
gradle依赖:

compilecom.bigkoo:convenientbanner:2.0.5

布局xml:

<com.bigkoo.convenientbanner.ConvenientBanner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/convenientBanner"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:canLoop="true" //控制循环与否 />

Java代码:

convenientBanner.setPages(new CBViewHolderCreator<NetworkImageHolderView>() {
                @Override
                public NetworkImageHolderView createHolder() {
                    return new NetworkImageHolderView();
                }
            }, topNewsItems)    //设置需要切换的View
            .setPointViewVisible(true)    //设置指示器是否可见
            .setPageIndicator(new int[]{R.drawable.dot_unselected, R.drawable.dot_selected})   //设置指示器圆点
            .startTurning(5000)     //设置自动切换(同时设置了切换时间间隔)
            .stopTurning()    //关闭自动切换
            .setManualPageable(false)  //设置手动影响(设置了该项无法手动切换)
            .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.ALIGN_PARENT_RIGHT) //设置指示器位置(左、中、右)
            .setOnItemClickListener(this); //设置点击监听事件

作者单独把etworkImageHolderView类拿出来了,为了方便使用者改写,来实现复杂布局的切换。原etworkImageHolderView如下:

public class NetworkImageHolderView implements Holder<String> {
    private ImageView imageView;
    @Override
    public View createView(Context context) {
        //你可以通过layout文件来创建,也可以像我一样用代码创建,不一定是Image,任何控件都可以进行翻页
        imageView = new ImageView(context);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        return imageView;
    }

    @Override
    public void UpdateUI(Context context,int position, String data) {
        imageView.setImageResource(R.drawable.ic_default_adimage);
        ImageLoader.getInstance().displayImage(data,imageView);
    }
}

作者是使用universal-image-loader来加载图片的,这里仅放置了一个ImageView,然后通过UpdateUI方法的第三个参数data(图片URL)来加载图片。
在这里可以使用LayoutInflater来加载一个布局,然后通过第三个参数来更新UI。

public class NetworkImageHolderView implements Holder<BannerItem> {
    private View view;

    @Override
    public View createView(Context context) {
        view = LayoutInflater.from(context).inflate(R.layout.banner_item, null, false);
        return view;
    }

    @Override
    public void UpdateUI(Context context, int position, BannerItem data) {
        ((TextView)view.findViewById(R.id.tv_title)).setText(data.getTitle());
        ((SimpleDraweeView)view.findViewById(R.id.sdv_background)).setImageURI(Uri.parse(data.getImage()));
    }
}

其中R.layout.banner_item是需要切换的布局,BannerItem类中存放的是两个String,一个是图片上方的文字,一个是图片的URL

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/sdv_background"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="20sp"
        android:textColor="@android:color/white"
        android:layout_marginBottom="20dp"
        android:gravity="bottom"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"/>
</FrameLayout>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值