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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...