首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 廣告輪播:基於 ViewPager + 指示器的動態實現方案

     編輯:程式設計疑難解答

核心思路

利用 ViewPager 實現圖片無限輪播,配合 RadioGroup 或自定義指示器展示當前頁碼,根據後端返回的 JSON 圖片數量動態適配。

關鍵實現點

  1. 數據模型:解析 JSON 獲取圖片 URL 列表 List<String> imageUrls。
  2. 無限循環邏輯:Adapter getCount() 返回 Integer.MAX_VALUE,getItem(position) 取模映射真實數據。
  3. 自動輪播:使用 Handler 或 ScheduledExecutorService 定時 viewPager.setCurrentItem(current+1)。
  4. 指示器同步:在 OnPageChangeListener 中更新 RadioGroup 選中狀態。
  5. 生命周期管理: onResume 啟動輪播,onPause 停止,避免內存洩漏。

主流開源庫推薦

  • Banner (youth5201314):implementation 'com.github.youth5201314:banner:1.4.10',支援圖片加載框架接入(Glide/Picasso)、自定義指示器、頁面轉場動畫。
  • ConvenientBanner:輕量級,API 簡潔。
  • ViewPager2 + TabLayout:Google 官方新組件,支援垂直滑動、RTL、Fragment 管理更優。

JSON 驅動示例

// 後端返回
{
  "banners": [
    {"image": "https://cdn.xxx.com/1.jpg", "link": "https://xxx.com/a"},
    {"image": "https://cdn.xxx.com/2.jpg", "link": "https://xxx.com/b"}
  ]
}

// 解析後傳遞給 Banner
List<String> images = new ArrayList<>();
for (BannerItem item : response.banners) images.add(item.image);
banner.setImages(images).start();

採用成熟開源庫可大幅減少造輪子成本,專注業務邏輯與異常處理(圖片加載失敗佔位、點擊跳轉埋點等)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved