CoolViewPager:即刻刷新,自定義邊緣效果顏色,雙向自動迴圈,內置垂直切換效果,想要的都在這裡

来源:https://www.cnblogs.com/HuanHaiLiuXin/archive/2018/06/06/9143967.html
-Advertisement-
Play Games

這兩天在GitHub上傳了一個自定義ViewPager: " CoolViewPager " ,具有以下功能特征: 1. 支持水平及垂直方向迴圈滾動 2. 支持自動滾動 3. 支持自動滾動方向、滾動時間、間隔時間的設置 4. 支持調用notifyDataSetChanged實時刷新界面 5. 支持邊 ...


這兩天在GitHub上傳了一個自定義ViewPager:CoolViewPager,具有以下功能特征:

  1. 支持水平及垂直方向迴圈滾動
  2. 支持自動滾動
  3. 支持自動滾動方向、滾動時間、間隔時間的設置
  4. 支持調用notifyDataSetChanged實時刷新界面
  5. 支持邊緣效果顏色的設置
  6. 為垂直滾動提供了適宜的界面切換效果

錄屏GIF

為什麼寫這個庫

我們平時使用support包中的ViewPager,當adapter中數據變更後,調用notifyDataSetChanged並不能刷新界面,需要重新調用ViewPager.setAdapter方法;網上所有的自定義ViewPager,幾乎都沒有提供垂直方向的切換效果;很多時候,我們需要變更ViewPager滑動到邊緣的漸變色以配合App特定場景.CoolViewPager可以很方便的解決上述問題.

使用步驟

在你的build.gradle中添加依賴

dependencies {
    implementation 'com.huanhailiuxin.view:coolviewpager:1.0.0'
}

在你的佈局文件中引入CoolViewPager

<com.huanhailiuxin.coolviewpager.CoolViewPager
    android:id="@+id/vp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

在Java代碼中獲取CoolViewPager,設置各種屬性,為其設置Adapter

public class ActivityEdgeEffectColor extends BaseActivity {
    private CoolViewPager vp;
    
    ****
    CoolViewPager vp = findViewById(R.id.vp);
    vp.setScrollMode(CoolViewPager.ScrollMode.HORIZONTAL);
    vp.setAdapter(adapter);
    ****
}

屬性:

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <declare-styleable name="CoolViewPager">
        <attr name="cvp_scrollmode" format="enum">
            <enum name="horizontal" value="0" />
            <enum name="vertical" value="1" />
        </attr>
        <attr name="cvp_autoscroll" format="boolean" />
        <attr name="cvp_intervalinmillis" format="integer"/>
        <attr name="cvp_autoscrolldirection" format="enum">
            <enum name="forward" value="0" />
            <enum name="backward" value="1" />
        </attr>
        <attr name="cvp_infiniteloop" format="boolean" />
        <attr name="cvp_scrollduration" format="integer"/>
        <attr name="cvp_drawedgeeffect" format="boolean"/>
        <attr name="cvp_edgeeffectcolor" format="color"/>
    </declare-styleable>
</resources>

我們可以通過xml或Java代碼的方式設置CoolViewPager實例的屬性.

attribute name description
cvp_scrollmode 滾動方向
cvp_autoscroll 是否開啟自動滾動
cvp_intervalinmillis 自動滾動時間間隔
cvp_autoscrolldirection 自動滾動方向
cvp_infiniteloop 是否迴圈滾動
cvp_scrollduration 自動滾動耗時
cvp_drawedgeeffect 是否繪製邊緣效果
cvp_edgeeffectcolor 繪製的邊緣效果顏色

通過XML佈局文件

<com.huanhailiuxin.coolviewpager.CoolViewPager
    android:id="@+id/vp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:cvp_scrollmode="vertical"
    app:cvp_autoscroll="true"
    app:cvp_intervalinmillis="1000"
    app:cvp_autoscrolldirection="backward"
    app:cvp_infiniteloop="true"
    app:cvp_scrollduration="600"
    app:cvp_drawedgeeffect="true"
    app:cvp_edgeeffectcolor="@color/colorPrimary"
    />

通過Java代碼

public class ActivityEdgeEffectColor extends BaseActivity {
    private CoolViewPager vp;
    
    private void initViewPager(){
        vp = findViewById(R.id.vp);
        vp.setScrollMode(CoolViewPager.ScrollMode.VERTICAL);
        vp.setAutoScroll(true,1000);
        vp.setAutoScrollDirection(CoolViewPager.AutoScrollDirection.BACKWARD);
        vp.setInfiniteLoop(true);
        vp.setScrollDuration(true,600);
        vp.setDrawEdgeEffect(true);
        vp.setEdgeEffectColor(getResources().getColor(R.color.colorPrimary));
    }
}

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

-Advertisement-
Play Games
更多相關文章
  • 佛曰:“不可說,說既是錯”,所以本篇也是錯! 技術人的世界是一塊凈土,也許世界並不該這麼複雜。 ——KK 這篇感悟也許帶著些許悲涼、無奈,也許又帶著激情滿滿,也許還透著辛酸。 技術男 很多人眼裡的技術宅是[傻傻的] [情商低的] [不愛說話的][邋遢的]....當然也有一些好詞 [踏實] [誠實] ...
  • Kafka中存在大量的延遲操作,比如延遲生產、延遲拉取以及延遲刪除等。Kafka並沒有使用JDK自帶的Timer或者DelayQueue來實現延遲的功能,而是基於時間輪自定義了一個用於實現延遲功能的定時器(SystemTimer)。JDK的Timer和DelayQueue插入和刪除操作的平均時間複雜 ...
  • today,i'll using the open source tool named "binlog2sql" which is release by danfengchao to do some flashback test. here's the github address:https:// ...
  • 隨機查詢,方法可以有很多種。比如,查詢出所有記錄,然後隨機從列表中取n條記錄。使用程式便可實現。可是程式實現必須查詢出所有符合條件的記錄(至少是所有符合條件的記錄id),然後再隨機取出n個id,查詢資料庫。但是效率畢竟沒有資料庫中直接查詢得快。下麵介紹mysql中怎樣隨機查詢n條記錄。 1.最簡單的 ...
  • since i've broken down the replication enviornment by "reset master;" yesterday.therefore,i'd like to reconfigure it again,there're several simple ste ...
  • 效果: PagerData類: PagerFragment類: PagerActivity: fragment_pager: activity_pager: ...
  • 1、下麵測試截圖,基本過程就是:點擊按鈕向伺服器端發送請求,後臺收到請求後給出返回的數據,前臺只需要顯示服務端數據就可以了。例子很簡單能但引發很多思考,博主學了雜七雜八的,這又在來想雜學Android了?……其實是想多瞭解一下其他東西,畢竟博主還在上大學呀!多學點沒什麼不好…… 2、客戶端(Andr ...
  • 前言 作為一個稍微有點想法的程式員來說,擁有一個自己開發,自己運營,完全屬於自己的應用,應該是很多人的夢想。剛畢業那會,自己的工作是做游戲,於是也和朋友業餘時間開發一些小游戲玩玩,可是終究不成氣候,而且自己也只能做做單機小游戲。於是慢慢的也就失去了興趣,尤其是自己從游戲行業轉到app開發,對游戲也就 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...