- 搭建輪播頁面:開源地址https://github.com/youth5201314/banner
<com.youth.banner.Banner
android:id="@+id/banner_home_header"
android:layout_width=“match_parent”
android:layout_height=“240dp”/>
3. 添加輪播插件:
4. //開源輪播控件
implementation ‘com.youth.banner:banner:2.0.2’
5. 在安卓節點添加一段兼容性的代碼:
6. compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
8. 然後,在服務端準備好輪播圖片,並把輪播圖片的名字存進去數據庫,
9. 準備好查詢方法,聲明一個VO,爲的是把屬性的首字母在傳輸到App上是小寫的:
12. 然後通過App來發送請求:
13. 同樣,在App接收,我們也用一個類接收,實質是一樣的,就是樣子長得不一樣:
16. Get和set長得和vs中的有點不一樣;
17. 再聲明一個類:HomeBannerAdapter
18. public class HomeBannerAdapter extends BannerAdapter<BannerBean, HomeBannerAdapter.BannerViewHolder> {
private Context context;
//構造函數 傳遞數據到適配器
public HomeBannerAdapter(List<BannerBean> mDatas,Context context) {
//設置數據,也可以調用banner提供的方法,或者自己在adapter中實現
super(mDatas);
this.context=context;
}
//創建ViewHolder,可以用viewType這個字段來區分不同的ViewHolder
@Override
public BannerViewHolder onCreateHolder(ViewGroup parent, int viewType) {
ImageView imageView = new ImageView(parent.getContext());
//注意,必須設置爲match_parent,這個是viewpager2強制要求的
imageView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
return new BannerViewHolder(imageView);
}
@Override
public void onBindView(BannerViewHolder holder,BannerBean data, int position, int size) {
//holder.imageView.setImageResource(data.imageRes);
String imageUrl= ServiceUrls.getMainPageBannerImgUrl(data.getBannerPicture());
//使用Glide加載圖片 最簡單的用戶
Glide.with(context)
.load(imageUrl)
.into(holder.imageView);
}
class BannerViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
public BannerViewHolder(@NonNull ImageView view) {
super(view);
this.imageView = view;
}
}
}
之後,再Build.gradle中添加引用implementation
20. 由於顯示網絡圖片,要添加一個框架:
21. //開源圖片加載框架 ,自帶緩存的
implementation ‘com.github.bumptech.glide:glide:4.11.0’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.11.0’
22. 然後,在子頁面進行輪播圖片綁定:
24. 然後,輪播就做好了;
26. 輪播完成之後,我們最後需要藉助生命週期來輔助:
27. @Override
public void onStart() {
super.onStart();
//開始輪播
bannerHomeHeader.start();
}
@Override
public void onStop() {
super.onStop();
//停止輪播
bannerHomeHeader.stop();
}