Android----banner使用详解

本文详细介绍了如何在Android中使用Banner组件,包括布局设置、逻辑代码实现、数据加载和图片圆角处理。示例代码展示了如何动态更新Banner数据,并提供了常用方法的概述,如设置指示器、轮播时间等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android:layout_height=“250dp”

android:layout_margin=“10dp”

app:banner_radius=“20dp” // 圆角

android:clickable=“true” // 是否可点击

app:banner_indicator_selected_color=“#95F2EC”

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintHorizontal_bias=“0.157”

app:layout_constraintStart_toStartOf=“parent”

app:layout_constraintTop_toTopOf=“parent” />

  1. 逻辑代码

package com.hnucm.xiaotang;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import com.bumptech.glide.Glide;

import com.bumptech.glide.load.resource.bitmap.RoundedCorners;

import com.bumptech.glide.request.RequestOptions;

import com.youth.banner.Banner;

import com.youth.banner.adapter.BannerImageAdapter;

import com.youth.banner.holder.BannerImageHolder;

import com.youth.banner.indicator.CircleIndicator;

import com.youth.banner.listener.OnBannerListener;

import org.json.JSONArray;

import org.json.JSONException;

import org.xutils.common.Callback;

import org.xutils.http.RequestParams;

import org.xutils.x;

import java.util.ArrayList;

import java.util.List;

public class ShouYeFragment extends Fragment implements OnBannerListener {

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View inflate = inflater.inflate(R.layout.fragment_shou_ye, container, false);

Banner banner =inflate.findViewById(R.id.banner);

List imgList = new ArrayList<>();

x.Ext.init(getActivity().getApplication());

x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.

x.view().inject(getActivity()); //没有用到view注解可以先不用

imgList.add(“https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211026/image.6719h9mvs700.png”);

imgList.add(“https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(11).2txrpbqztva0.jpg”);

imgList.add(“https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(5).5s6zwxy19v40.jpg”);

imgList.add(“https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(10).24p8puxcmqbk.jpg”);

imgList.add(“https://cdn.jsdelivr.net/gh/Yqifei/Blog-Image@master/20211031/800-(14).pizaxijh534.jpg”);

RequestParams params = new RequestParams(“https://www.fastmock.site/mock/08392ee207964eb010bf22b157103494/androidJavaEE/banner”);

x.http().get(params, new Callback.CommonCallback() {

@Override

public void onSuccess(String result) {

try {

JSONArray jsonArray = new JSONArray(result);

for (int i=0;i<jsonArray.length();i++){

imgList.add((String)jsonArray.get(i));

}

banner.setDatas(imgList); // 动态更新banner数据

} catch (JSONException e) {

e.printStackTrace();

}

}

@Override

public void onError(Throwable ex, boolean isOnCallback) 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 {

}

@Override

public void onCancelled(CancelledException cex) {

}

@Override

public void onFinished() {

}

});

banner.setAdapter(new BannerImageAdapter(imgList) {

@Override

public void onBindView(BannerImageHolder holder, String data, int position, int size) {

System.out.println(“hello TEST”);

Glide.with(holder.itemView)

.load(data)

.apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))

.into(holder.imageView);

}

}).setIndicator(new CircleIndicator(getContext())).setLoopTime(1000).setOnBannerListener(this);

// 设置圆形指示点,设置循环时间,设置监听器

return inflate;

}

@Override

public void OnBannerClick(Object data, int position) { // 监听每一个图片的点击事件

Log.i(“tag”, “你点了第”+position+“张轮播图”);

}

}

  1. 常见的一些属性设置

[](()方法

更多方法以实际使用为准,下面不一定全部列出了

| 方法名 | 返回类型 | 描述 |

| — | — | — |

| getAdapter() | extends BannerAdapter | 获取你设置的BannerAdapter |

| getViewPager2() | ViewPager2 | 获取ViewPager2 |

| getIndicator() | Indicator | 获取你设置的指示器(没有设置直接获取会抛异常哦) |

| getIndicatorConfig() | IndicatorConfig | 获取你设置的指示器配置信息(没有设置直接获取会抛异常哦) |

| getRealCount() | int | 返回banner真实总数 |

| setUserInputEnabled(boolean) | this | 禁止手动滑动Banner;true 允许,false 禁止 |

| setDatas(List) | this | 重新设置banner数据 |

| isAutoLoop(boolean) | this | 是否允许自动轮播 |

| setLoopTime(long) | this | 设置轮播间隔时间(默认3000毫秒) |

| setScrollTime(long) | this | 设置轮播滑动的时间(默认800毫秒) |

| start() | this | 开始轮播(主要配合生命周期使用),或者你手动暂停再次启动 |

| stop() | this | 停止轮播(主要配合生命周期使用),或者你需要手动暂停 |

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值