開源框架Banner實現圖片輪播
常量
常量名稱 | 描述 | 所屬方法 |
---|---|---|
BannerConfig.NOT_INDICATOR | 不顯示指示器和標題 | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR | 顯示圓形指示器 | setBannerStyle |
BannerConfig.NUM_INDICATOR | 顯示數字指示器 | setBannerStyle |
BannerConfig.NUM_INDICATOR_TITLE | 顯示數字指示器和標題 | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE | 顯示圓形指示器和標題(垂直顯示) | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE | 顯示圓形指示器和標題(水平顯示) | setBannerStyle |
BannerConfig.LEFT | 指示器居左 | setIndicatorGravity |
BannerConfig.CENTER | 指示器居中 | setIndicatorGravity |
BannerConfig.RIGHT | 指示器居右 | setIndicatorGravity |
動畫常量類(setBannerAnimation方法調用)
常量類名 |
---|
Transformer.Default |
Transformer.Accordion |
Transformer.BackgroundToForeground |
Transformer.ForegroundToBackground |
Transformer.CubeIn |
Transformer.CubeOut |
Transformer.DepthPage |
Transformer.FlipHorizontal |
Transformer.FlipVertical |
Transformer.RotateDown |
Transformer.RotateUp |
Transformer.ScaleInOut |
Transformer.Stack |
Transformer.Tablet |
Transformer.ZoomIn |
Transformer.ZoomOut |
Transformer.ZoomOutSlide |
方法
方法名 | 描述 | 版本限制 |
---|---|---|
setBannerStyle(int bannerStyle) | 設置輪播樣式(默認爲CIRCLE_INDICATOR) | 無 |
setIndicatorGravity(int type) | 設置指示器位置(沒有標題默認爲右邊,有標題時默認左邊) | 無 |
isAutoPlay(boolean isAutoPlay) | 設置是否自動輪播(默認自動) | 無 |
setViewPagerIsScroll(boolean isScroll) | 設置是否允許手動滑動輪播圖(默認true) | 1.4.5開始 |
update(List<?> imageUrls,List titles) | 更新圖片和標題 | 1.4.5開始 |
update(List<?> imageUrls) | 更新圖片 | 1.4.5開始 |
startAutoPlay() | 開始輪播 | 1.4開始,此方法只作用於banner加載完畢-->需要在start()後執行 |
stopAutoPlay() | 結束輪播 | 1.4開始,此方法只作用於banner加載完畢-->需要在start()後執行 |
start() | 開始進行banner渲染 | 1.4開始 |
setOffscreenPageLimit(int limit) | 同viewpager的方法作用一樣 | 1.4.2開始 |
setBannerTitle(String[] titles) | 設置輪播要顯示的標題和圖片對應(如果不傳默認不顯示標題) | 1.3.3結束 |
setBannerTitleList(List titles) | 設置輪播要顯示的標題和圖片對應(如果不傳默認不顯示標題) | 1.3.3結束 |
setBannerTitles(List titles) | 設置輪播要顯示的標題和圖片對應(如果不傳默認不顯示標題) | 1.4開始 |
setDelayTime(int time) | 設置輪播圖片間隔時間(單位毫秒,默認爲2000) | 無 |
setImages(Object[]/List<?> imagesUrl) | 設置輪播圖片(所有設置參數方法都放在此方法之前執行) | 1.4後去掉數組傳參 |
setImages(Object[]/List<?> imagesUrl,OnLoadImageListener listener) | 設置輪播圖片,並且自定義圖片加載方式 | 1.3.3結束 |
setOnBannerClickListener(this) | 設置點擊事件,下標是從1開始 | 無(1.4.9以後廢棄了) |
setOnBannerListener(this) | 設置點擊事件,下標是從0開始 | 1.4.9以後 |
setOnLoadImageListener(this) | 設置圖片加載事件,可以自定義圖片加載方式 | 1.3.3結束 |
setImageLoader(Object implements ImageLoader) | 設置圖片加載器 | 1.4開始 |
setOnPageChangeListener(this) | 設置viewpager的滑動監聽 | 無 |
setBannerAnimation(Class<? extends PageTransformer> transformer) | 設置viewpager的默認動畫,傳值見動畫表 | 無 |
setPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) | 設置viewpager的自定義動畫 |
compile 'com.youth.banner:banner:1.4.9'
2.在清單文件中加權限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> //讀取外置存儲卡權限 <uses-permission android:name="android.permission.INTERNET" /> //獲取網絡權限 3.在佈局文件中加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="高度自定義" />
4.給圖片集合添加數據和實例化
banner = (Banner) findViewById(R.id.banner); list=new ArrayList<>(); listtu=new ArrayList<>(); list.add("http://img.poco.cn/mypoco/myphoto/20071007/11/20071007114140_1251314291.jpg"); list.add("http://a3.att.hudong.com/72/76/01300000012339118647690465772.jpg"); list.add("http://p1.qqyou.com/pic/uploadpic/2012-4/21/2012042120062170120.jpg"); listtu.add("啦啦啦"); listtu.add("啦啦啦德瑪"); listtu.add("啦啦啦西亞");5.設置Banner 屬性
banner.setIndicatorGravity(BannerConfig.CIRCLE_INDICATOR);
//設置指示器位置(當banner模式中有指示器時)
banner.setBannerTitles(listtu);//添加標題
banner.setImageLoader(new GlideImageLoader());
//設置圖片加載器
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//設置banner樣式
banner.setImages(list);//設置圖片集合
banner.isAutoPlay(true); //設置自動輪播,默認爲true
banner.setDelayTime(2500); //設置輪播時間單位毫秒
banner.start();//調用
6.圖片加載器重寫
注意: 1.圖片加載器由自己選擇,這裏不限制,只是提供幾種使用方法 2.返回的圖片路徑爲Object類型,由於不能確定你到底使用的那種圖片加載器, 傳輸的到的是什麼格式,那麼這種就使用Object接收和返回,你只需要強轉成你傳輸的類型就行, 切記不要胡亂強轉!
public void displayImage(Context context, Object path, ImageView imageView) { //集合是String類型所以轉成String Glide.with(context).load( (String) path).into(imageView); } }
最後大神鏈接:
https://github.com/youth5201314/banner