ViewPager輪播圖

来源:http://www.cnblogs.com/why168888/archive/2016/12/07/6142283.html
-Advertisement-
Play Games

LoopViewPagerLayout無限輪播 項目地址:https://github.com/why168/LoopViewPagerLayout " " 支持三種動畫; 支持修改輪播的速度; 支持修改滑動速率; 支持點擊事件回調監聽; 支持自定義圖片載入方式; 支持自定義ImageView圖片; ...


LoopViewPagerLayout無限輪播

項目地址:https://github.com/why168/LoopViewPagerLayout

  • 支持三種動畫;
  • 支持修改輪播的速度;
  • 支持修改滑動速率;
  • 支持點擊事件回調監聽;
  • 支持自定義圖片載入方式;
  • 支持自定義ImageView圖片;
  • 支持addHeaderView方式;
  • 支持小紅點指示器三種位置擺放;
  • 指示器小紅點動態移動;
  • 防閃屏花屏。

效果圖

Image of 示例

Gradle

Step 1. Add the JitPack repository to your build file

dependencies {
    allprojects {
        repositories {
            maven { url "https://jitpack.io" }
        }
    }
}

Step 2. Add the dependency

dependencies {
    compile 'com.github.why168:LoopViewPagerLayout:2.0.5'
}

代碼混淆

#LoopViewPagerLayout
-dontwarn com.github.why168
-keep class com.github.why168

API調用順序

  • setLoop_ms:輪播的速度(毫秒)
  • setLoop_duration:滑動的速率(毫秒)
  • setLoop_style:輪播的樣式(枚舉值: -1預設empty,1深度1depth,2縮小zoom)
  • setIndicatorLocation(IndicatorLocation.Right):小紅點位置(枚舉值: 1:left,0:depth, 2:right)
  • initializeData(Content):初始化
  • setOnLoadImageViewListener(OnLoadImageViewListener):自定義圖片載入&自定義ImageView圖片
  • setOnBannerItemClickListener(OnBannerItemClickListener):圖片點擊事件
  • setLoopData(ArrayList):banner數據
  • startLoop():開始輪播
  • stopLoop():停止輪播,務必在onDestory中調用

javadoc

https://jitpack.io/com/github/why168/LoopViewPagerLayout/v2.0.5/javadoc/

佈局 LoopViewPagerLayout

<?xml version="1.0" encoding="utf-8"?>
<com.github.why168.LoopViewPagerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mLoopViewPagerLayout"
    android:layout_width="match_parent"
    android:layout_height="200dp" />

更優雅地使用API-調用順序不能亂

 mLoopViewPagerLayout = (LoopViewPagerLayout)findViewById(R.id.mLoopViewPagerLayout);
 mLoopViewPagerLayout.setLoop_ms(2000);//輪播的速度(毫秒)
 mLoopViewPagerLayout.setLoop_duration(1000);//滑動的速率(毫秒)
 mLoopViewPagerLayout.setLoop_style(LoopStyle.Empty);//輪播的樣式-預設empty
 mLoopViewPagerLayout.setIndicatorLocation(IndicatorLocation.Center);//指示器位置-中Center
 mLoopViewPagerLayout.initializeData(mActivity);//初始化數據
 ArrayList<LoopViewPagerLayout.BannerInfo> data = new ArrayList<>();
 data.add(new LoopViewPagerLayout.BannerInfo<Integer>(R.mipmap.a, "第一張圖片"));
 data.add(new LoopViewPagerLayout.BannerInfo<String>("url", "第二張圖片"));
 data.add(new LoopViewPagerLayout.BannerInfo<Integer>(R.mipmap.b, "第三張圖片"));
 data.add(new LoopViewPagerLayout.BannerInfo<Integer>(R.mipmap.c, "第四張圖片"));
 data.add(new LoopViewPagerLayout.BannerInfo<Integer>(R.mipmap.d, "第五張圖片"));
 mLoopViewPagerLayout.setOnLoadImageViewListener(new OnDefaultImageViewLoader());//設置圖片載入&自定義圖片監聽
 mLoopViewPagerLayout.setOnBannerItemClickListener(this);//設置監聽
 mLoopViewPagerLayout.setLoopData(bannerInfos);//設置數據

回調函數

/**
 * Load ImageView Listener
 *
 * @author Edwin.Wu
 * @version 2016/12/6 14:40
 * @since JDK1.8
 */
public interface OnLoadImageViewListener {
    /**
     * create image
     *
     * @param context context
     * @return image
     */
    ImageView createImageView(Context context);

    /**
     * image load
     *
     * @param imageView ImageView
     * @param parameter String    可以為一個文件路徑、uri或者url
     *                  Uri   uri類型
     *                  File  文件
     *                  Integer   資源Id,R.drawable.xxx或者R.mipmap.xxx
     *                  byte[]    類型
     *                  T 自定義類型
     */
    void onLoadImageView(ImageView imageView, Object parameter);
}

/**
 * Banner Click
 *
 * @author Edwin.Wu
 * @version 2016/12/6 15:38
 * @since JDK1.8
 */
public interface OnBannerItemClickListener {
    /**
     * banner click
     *
     * @param index  subscript
     * @param banner bean
     */
    void onBannerClick(int index, ArrayList<BannerInfo> banner);
}

更新說明

  • 2016/06/12
    1. 省略。
  • 2016/06/15
    1. 2.0版本再次進行封裝,大更新!
    2. 增加LoopViewPager佈局,把LoopViewPager和LinearLayout一起結合起來了,方便直接地通過view_loop_viewpager修改一些參數,低耦合高類聚的原則;
    3. 修複bug 滑到第二圖再次按住滑動,鬆開手之後會連續滑動2張圖。
  • 2016/07/01
    1. 2.1版本更新!
    2. 因初始化多次,清空圖片和小紅點。感謝solochen提出的問題。
  • 2016/11/08 00:25
    1. 重構項目,1.0正式版發佈,支持Gradle載入圖片;
    2. 使用更方便。
  • 2016/11/08 11:12
    1. 更改名字 LoopViewPagerLayout,1.0.5正式被髮布。
  • 2016/11/28 19:20
    1. 修複LoopViewPagerLayout的屬性android:layout_height高度自適應,小紅點顯示錯誤bug,1.0.6正式被髮布。
  • 2016/12/01 00:08
    1. 父佈局,子佈局裡面設置padding或者margin,寬高設置match_parent或者wrap_content小紅點錯位;
    2. 解決預設輪播圖片數量只能為4個的問題;
    3. 優化代碼。
  • 2016/12/01 13:18
    1. 設計了一個回調方法,讓用戶自己定義圖片載入OnLoadImageViewListener。url參數支持泛型,回調回來的是Object根據實際情況強轉;
    2. 圖片載入框架推薦:Glide,Picasso,Fresco;
    3. 2.0.0正式被髮布。
  • 2016/12/01 18:18
    1. 支持小紅點指示器三種位置擺放(左,中,右)。
  • 2016/12/05 18:20
    1. 輪播圖觸摸不靈敏,onTouch事件有時候執行不了。感謝VincentZhangZhengliang提出的問題
  • 2016/12/07 17:38
    1. 2.0.5正式被髮布;
    2. API有點小改動。
      1. initializeView刪除
      2. setOnLoadImageViewListener增加一個回調自定義圖片的方法


技術交流大本營

歡迎加入Android技術交流大群,群號碼:554610222

Android技術交流,進群後請改名片.
例如:北京-李四.
群內交流以技術為主,亂髮黃圖亂髮廣告亂開車者一律踢.

Android技術交流大群


MIT License

Copyright (c) 2016 Edwin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 學習本系列內容需要具備一定 HTML 開發基礎,沒有基礎的朋友可以先轉至 "HTML快速入門(一)" 學習 本人接觸 React Native 時間並不是特別長,所以對其中的內容和性質瞭解可能會有所偏差,在學習中如果有錯會及時修改內容,也歡迎萬能的朋友們批評指出,謝謝 文章第一版出自簡書,如果 ...
  • 前言: 項目APP有時候會出現Crash,然後就是彈出系統強制退出的對話框,點擊關閉APP。 有的APP進行了處理,會發現,當程式出現異常的時候,會Toast一個提示“程式出現異常,3秒後將退出程式”。3秒後即關閉程式而不再顯示強制關閉的對話框。 那麼它們是如何處理沒有try-catch 捕獲到的異 ...
  • ➠更多技術乾貨請戳:聽雲博客 前言 最近看 ObjC的runtime 是怎麼實現 +load 鉤子函數的實現。進而引申分析了 dyld 處理 Mach-O 的這部分機制。 1.簡單分析 Mach-O 在dyld 中是如何被載入到記憶體中的; 2.分析了 +load 的 特殊載入時機; + load 上 ...
  • 我們的APP要想吸引用戶,就要把UI(臉蛋)搞漂亮一點。畢竟好的外貌是增進人際關係的第一步,我們程式員看到一個APP時,第一眼就是看這個軟體的功能,不去關心界面是否漂亮,看到好的程式會說“我cao!這個功能寫得很NB”。兩者都很重要 ...
  • Notification是在你的應用常規界面之外展示的消息。當app讓系統發送一個消息的時候,消息首先以圖表的形式顯示在通知欄。要查看消息的詳情需要進入通知抽屜(notificationdrawer)中查看。通知欄和通知抽屜 (notificationdrawer)都是系統層面控制的,你可以隨時查看 ...
  • 一、runtime簡介 RunTime簡稱運行時。OC就是 ,也就是在運行時候的一些機制,其中最主要的是消息機制。 對於C語言, 。 對於OC的函數,屬於 ,在編譯的時候並不能決定真正調用哪個函數,只有在真正運行的時候才會根據函數的名稱找到對應的函數來調用。 事實證明: 在編譯階段,OC可以 ,即使 ...
  • 說起tableView的自動計算行高,真的是不想再提了,寫了不知道幾百遍了。可就是這麼一個小玩意兒,把我給難的不行不行的,眼看都要沒頭髮了。 1、設置tableView的預估行高和行高為自動計算 2、設置cell的contentView的底部約束和最下麵一個控制項的底部約束對齊 3、看、看、看,錯誤來 ...
  • Socket,又稱“套接字”, 在應用層和傳輸層之間的一個抽象層,用於描述 IP 地址和埠,是一個通信連的句柄, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...