轉載地址:https://github.com/youth5201314/bannerhtml
參考視頻:http://ke.atguigu.com/course/150git
XFrame - Android快速開發框架github
XFrame詳細功能文檔預覽apache
如今的絕大數app都有banner界面,實現循環播放多個廣告圖片和手動滑動循環等功能。由於ViewPager並不支持循環翻頁, 因此要實現循環還得須要本身去動手,我就把項目中的控件剔了出來,但願你們以爲有用。目前框架能夠進行不一樣樣式、不一樣動畫設置, 以及完善的api方法能知足大部分的需求了。api
模式 | 圖片 |
---|---|
指示器模式 | |
數字模式 | |
數字加標題模式 | |
指示器加標題模式 垂直顯示 |
|
指示器加標題模式 水平顯示 |
常量名稱 | 描述 | 所屬方法 |
---|---|---|
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 |
ViewPagerTransforms 動畫時集成的第三方庫,可能有兼容問題致使position位置不許確,你能夠選擇參考動畫而後自定義動畫
數組
常量類名 |
---|
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的自定義動畫 | 無 |
Attributes | forma | describe |
---|---|---|
delay_time | integer | 輪播間隔時間,默認2000 |
scroll_time | integer | 輪播滑動執行時間,默認800 |
is_auto_play | boolean | 是否自動輪播,默認true |
title_background | color | reference |
title_textcolor | color | 標題字體顏色 |
title_textsize | dimension | 標題字體大小 |
title_height | dimension | 標題欄高度 |
indicator_width | dimension | 指示器圓形按鈕的寬度 |
indicator_height | dimension | 指示器圓形按鈕的高度 |
indicator_margin | dimension | 指示器之間的間距 |
indicator_drawable_selected | reference | 指示器選中效果 |
indicator_drawable_unselected | reference | 指示器未選中效果 |
image_scale_type | enum | 和imageview的ScaleType做用同樣 |
banner_default_image | reference | 當banner數據爲空是顯示的默認圖片 |
banner_layout | reference | 自定義banner佈局文件,可是必須保證id的名稱同樣(你能夠將banner的佈局文件複製出來進行修改) |
Gradle網絡
或者引用本地libapp
!!!此步驟能夠省略,直接在Activity或者Fragment中new Banner();框架
[歷史版本資源地址]eclipse
問:eclipse怎麼使用banner?
在歷史版本列表中下載你想要版本的aar包提取最新資源/也能夠本身把工程轉成eclipse的
問:怎麼顯示的一片空白?
問:怎麼加載其餘圖片資源(資源文件、文件、Uri、assets、raw、ContentProvider、sd卡資源)?
問:設置banner指示器顏色怎麼變成方的了?
問:爲何banner的點擊事件沒有反應,須要下一次輪播才行?