Android 圖片輪播控件

Android圖片輪播控件 (如果對你有幫助請star哦!)

現在的絕大數app都有banner界面,實現循環播放多個廣告圖片和手動滑動循環等功能。因為ViewPager并不支持循環翻頁, 所以要實現循環還得需要自己去動手,所以其他的輪播控件大多都是重寫viewpager,而且代碼很臃腫。 我就把項目中的控件剔了出來,希望大家覺得有用。

效果圖

模式 圖片
指示器模式
數字模式
數字加標題模式
指示器加標題模式

聯系方式

  • 如果遇到問題和建議歡迎在給我發送郵件,希望讓這個工程越來越完善。

Gradle

dependencies{
    compile 'com.youth.banner:banner:1.1.5'  //指定版本
    compile 'com.youth.banner:banner:+' //最新版本
}

或者引用本地lib

compile project(':banner')

常量

方法名 描述
Banner.NOT_INDICATOR 不顯示指示器和標題
Banner.CIRCLE_INDICATOR 顯示圓形指示器
Banner.NUM_INDICATOR 顯示數字指示器
Banner.NUM_INDICATOR_TITLE 顯示數字指示器和標題
Banner.CIRCLE_INDICATOR_TITLE 顯示圓形指示器和標題
Banner.LEFT 指示器居左
Banner.CENTER 指示器居中
Banner.RIGHT 指示器居右

方法

方法名 描述
setBannerStyle(int bannerStyle) 設置輪播樣式(默認為Banner.NOT_INDICATOR)
setIndicatorGravity(int type) 設置輪播樣式(沒有標題默認為右邊,有標題時默認左邊)
isAutoPlay(boolean isAutoPlay) 設置是否自動輪播(默認自動)
setBannerTitle(String[] titles) 設置輪播要顯示的標題和圖片對應(如果不傳默認不顯示標題)
setDelayTime(int time) 設置輪播圖片間隔時間(默認為2000)
setImages(Object[]/List<?> imagesUrl) 設置輪播圖片(所有設置參數方法都放在此方法之前執行)
setImages(Object[]/List<?> imagesUrl,OnLoadImageListener listener) 設置輪播圖片,并且自定義圖片加載方式
setOnBannerClickListener(this) 設置點擊事件,下標是從1開始
setOnBannerImageListener(this) 設置圖片加載事件,可以自定義圖片加載方式

使用步驟

1.在布局文件中添加Banner,可以設置自定義屬性

  • 簡單使用
<com.youth.banner.Banner
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="高度自己設置" />
  • 深度自定義
<com.youth.banner.Banner
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="高度自己設置"
    app:indicator_margin="指示器之間的間距"
    app:indicator_drawable_selected="指示器選中效果"
    app:indicator_drawable_unselected="指示器未選中效果"
    app:indicator_height="指示器圓形按鈕的高度"
    app:indicator_width="指示器圓形按鈕的寬度" />

2.在Activity或者Fragment中配置Banner

private Banner banner;
String[] images= new String[] {"url"};
String[] titles=new String[]{"標題"};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    banner = (Banner) findViewById(R.id.banner);
    /**

 * 需要什么設置,請看著文檔在設置圖片和標題前完成設置
 */
//可以選擇設置圖片網址,或者資源文件,默認加載框架Glide
//banner.setImages(images);
//自定義圖片加載框架
banner.setImages(images, new Banner.OnLoadImageListener() {
    @Override
    public void OnLoadImage(ImageView view, Object url) {
        Glide.with(getApplicationContext()).load(url).into(view);
    }
});

}

//如果你需要考慮更好的體驗,可以這么操作 @Override protected void onStart() { super.onStart(); //在頁面可見時開始輪播, //默認的是頁面初始化時就開始輪播了,如果你不需要可以再onCreate方法里設置banner.isAutoPlay(false); banner.isAutoPlay(true); }

@Override protected void onStop() { super.onStop(); //在頁面不可見時停止輪播 banner.isAutoPlay(false); }</code></pre>

更新說明

v1.1.5

感謝<imexception>朋友的反饋
  • 創建指示器初始化時默認的背景的添加,減少延遲等待更新
  • 優化指示器背景更新操作

v1.1.4

更新內容
  • 增加setImages傳參可以接收list集合
  • 優化在添加數據和創建指示器時的對象內存回收

v1.1.3

修復了 <2316692710@qq.com> 朋友反饋的bug:
  • bug① 有標題的時候,向左滑動 ,會數組越界崩潰
  • bug② 指示器為數字的時候,向左滑動時會有一次顯示為0/5

v1.1.2

感謝 <cssxn@qq.com> 朋友提的意見,做出了如下更改:
  • 增加設置輪播圖片,并且自定義圖片加載方式:setImages(Object[] imagesUrl,OnLoadImageListener listener)
  • 增加設置圖片加載事件,可以自定義圖片加載方式:setOnBannerImageListener(this)

v1.1.1

感謝 <969482412@qq.com> 朋友提的意見,做出了如下更改:
  • 增加圓形指示器的位置方法setIndicatorGravity(int type)
  • 增加設置是否自動輪播的方法isAutoPlay(boolean isAutoPlay)

v1.1.0

感謝 <997058003@qq.com> 朋友提的意見,做出了如下更改:
  • 修改指示器樣式
  • 增加5種輪播樣式,更加靈活方便的運用輪播控件,滿足項目需求

 

 

 本文由用戶 MilMachado 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!