banner轮播图

1、添加依赖

	//轮播图
    implementation 'com.youth.banner:banner:1.4.10'

2、创建轮播图填充类对象Ad.class

public class Ad {
    public String getBanner() {
        return banner;
    }

    public void setBanner(String banner) {
        this.banner = banner;
    }

    public Ad(String banner) {
        this.banner = banner;
    }

    private String banner;
}

3、添加布局控件fragment_discovery.xml

	<!--轮播图-->
    <com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="@dimen/banner_height" />

4、Banner显示图片实现类GlideImageLoader .class

/**
 * Banner框架显示图片的实现类
 */
public class GlideImageLoader extends ImageLoader {
    /**
     * 加载图片的方法
     *
     * @param context
     * @param path
     * @param imageView
     */
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        //将对象转为广告对象
        Ad banner = (Ad) path;

        //显示图片
        Glide.with(context)
                .load(banner.getBanner())
                .into(imageView);
    }

}

5、实现banner图绑定,数据填充,点击功能


public class BannerFragemnt extends Fragment implements OnBannerListener {

    /**
     * 轮播图数据
     */
    private List<Ad> bannerData;

    @BindView(R.id.banner)
    Banner banner;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_discovery,container,false);
        ButterKnife.bind(this,view);
        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //设置图片加载器
        banner.setImageLoader(new GlideImageLoader());

        //设置轮播图显示得数据
        bannerData=new ArrayList<>();
        bannerData.add(new Ad("https://dss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=359648438,4114288232&fm=26&gp=0.jpg"));
        bannerData.add(new Ad("https://dss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=359648438,4114288232&fm=26&gp=0.jpg"));
        bannerData.add(new Ad("https://dss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=359648438,4114288232&fm=26&gp=0.jpg"));
        showBanner(bannerData);
    }
    /**
     * 显示轮播图数据
     *
     * @param data
     */
    private void showBanner(List<Ad> data) {
        this.bannerData = data;

        banner.setOnBannerListener(this);
        //设置到轮播图组件
        banner.setImages(data);

        //显示数据
        banner.start();

        //第一次也要滚动
        sartBannerScroll();
    }

    /***
     * 第一次也要滚动
     */
    private void sartBannerScroll() {
        banner.startAutoPlay();
    }

    /***
     * 当前界面展示了
     */
    @Override
    public void onResume() {
        super.onResume();
        if(bannerData!=null){
            //有数据才开始滚动
            sartBannerScroll();
        }
    }

    /**
     * 当界面看不见了执行
     *
     * 包括开启新界面,弹窗,后台
     */
    @Override
    public void onPause() {
        super.onPause();

        //结束轮播图滚动
        banner.stopAutoPlay();
    }

    /**
     * 轮播图点击回调
     *
     * @param position
     */
    @Override
    public void OnBannerClick(int position) {
        //获取到点击的广告对象
        Ad ad = bannerData.get(position);
        startActivity(new Intent(getActivity(), MainActivity.class));
        Toast.makeText(getActivity(), position+"", Toast.LENGTH_SHORT).show();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值