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