依赖:
implementation 'com.github.xiaohaibin:XBanner:1.6.1'
大Model下:
maven { url 'https://jitpack.io' }
allprojects { repositories { google() jcenter() maven { url 'https://jitpack.io' } } }
权限:
<uses-permission android:name="android.permission.INTERNET" />
布局:
<com.stx.xhb.xbanner.XBanner
android:id="@+id/xbanner"
android:layout_width="match_parent"
android:layout_height="260dp"
android:layout_gravity="center"
app:isClipChildrenMode="true" />
代码:
/**
* 网络请求下来的json数据
*/
public void getBannerData(String banner) {
/**
* 解析json数据赋值给XBanner
*/
Gson gson = new Gson();
MyBanner myBanner = gson.fromJson(banner, MyBanner.class);
final List<MyBanner.ResultBean> result = myBanner.getResult();
/**
* 因为我数据请求下来在子线程,所以用的runOnUiThread更新的UI效果
*/
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//集合设置给XBanner
xBanner.setData(result, null);
//加载图片
xBanner.loadImage(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, Object model, View view, int position) {
Glide.with(getActivity()).load(result.get(position).getImageUrl()).into((ImageView) view);
//延迟时间
banner.setPageChangeDuration(3000);
}
});
/**
* 点击跳转传值
*/
xBanner.setOnItemClickListener(new XBanner.OnItemClickListener() {
@Override
public void onItemClick(XBanner banner, Object model, View view, int position) {
Intent intent = new Intent(getActivity(), WebActivity.class);
intent.putExtra("url", result.get(position).getJumpUrl());
startActivity(intent);
}
});
}
});
}
XBanner属性详解:https://blog.csdn.net/qq_40543575/article/details/79549286