1. 程式人生 > >強大的Android重新整理控制元件-SmoothRefreshLayout

強大的Android重新整理控制元件-SmoothRefreshLayout

SmoothRefreshLayout

一個高效的Android重新整理庫,理論上支援所有的檢視,比官方的SwipeRefreshLayout更強大且使用方便.
本開源庫的部分程式碼來自android-Ultra-Pull-To-Refresh.
非常感謝他提供的這麼棒的開源專案!

特性:

  • 理論上支援所有的檢視,且可根據具體需求高效適配.
  • 支援多點觸控.
  • 支援巢狀滑動,完整實現了NestedScrollingChild,NestedScrollingParent 介面,玩轉CoordinatorLayout.
  • 直接繼承自ViewGroup,擁有卓越的效能,支援類FameLayout的特性(Gravity、Margin).
  • 支援自動重新整理、自動上拉載入、到底自動載入更多(不推薦,建議使用Adapter實現,可自定義到底判斷邏輯回撥實現預載入更多).
  • 支援越界回彈.
  • 支援重新整理檢視自定樣式:STYLE_DEFAULT(預設不改變大小)、STYLE_SCALE(動態改變大小,一直會重測量並佈局,所以效能會有損失)、STYLE_PIN(不會改變檢視大小,固定在頂部或者底部)、STYLE_FOLLOW_SCALE(先縱向跟隨移動並且不改變檢視大小,大於檢視高度後動態改變檢視大小且效能會有損失)、STYLE_FOLLOW_PIN(不會改變檢視大小,先縱向跟隨移動,大於檢視高度後固定)、STYLE_FOLLOW_CENTER(不會改變檢視大小,先縱向跟隨移動,大於檢視高度後讓檢視保持在移動的距離中心點).
  • 支援二級重新整理事件(TwoLevelSmoothRefreshLayout),PS:淘寶二樓、京東活動.
  • 支援橫向重新整理(HorizontalSmoothRefreshLayout).
  • 支援ListView、GridView、RecyclerView載入更多的同步平滑滾動.
  • 支援多狀態檢視:STATE_CONTENT(預設狀態)、STATE_ERROR(異常狀態)、STATE_EMPTY(空狀態)、STATE_CUSTOM(自定義狀態).
  • 支援手勢:同步Fling(重新整理檢視仍可見的情況下,會先回滾隱藏重新整理檢視,而後向下傳遞Fling手勢).
  • 支援作為可拉伸內部檢視佈局使用(類小米設定頁效果).
  • 豐富的回撥介面和除錯資訊,可利用現有API實現豐富的效果.

演示程式

更新日誌

老版本升級務必檢視

更新日誌

快照

  • 測試拉伸收縮效果(1.6.2版本新增)
  • 測試橫向拉伸收縮效果(1.6.2版本新增)
  • 測試橫向重新整理(1.5.0版本新增)
  • 測試QQ瀏覽器樣式
  • 測試QQ活動樣式
  • 測試2級重新整理
  • 包含ListView
  • 包含RecyclerView
  • 包含ViewPager
  • CoordinatorLayout
  • 越界回彈模式
  • 測試巢狀滑動

使用

Gradle

repositories {
    ...
    maven { url 'https://jitpack.io' }
}

dependencies {
    //核心基礎庫,包含絕大多數功能,擴充套件庫必須依賴本庫(從1.6.0版本開始Core庫不再自帶重新整理檢視實現,只包含核心功能)
    compile 'com.github.dkzwm.SmoothRefreshLayout:core:1.6.3.3'
    //預設Classic樣式的重新整理檢視實現庫(從1.6.0版本才有,是從老版本的Core庫中拆分出來的庫)
    compile 'com.github.dkzwm.SmoothRefreshLayout:ext-classic:1.6.3.3'
    //預設Material樣式的重新整理檢視實現庫(從1.6.0版本才有,是從老版本的Core庫中拆分出來的庫)
    compile 'com.github.dkzwm.SmoothRefreshLayout:ext-material:1.6.3.3'
    //工具類庫,帶有一些快捷配置工具(自動滾動重新整理工具,快速設定AppBarLayout工具)
    compile 'com.github.dkzwm.SmoothRefreshLayout:ext-utils:1.6.3.3'
    //擴充套件支援二級重新整理庫
    compile 'com.github.dkzwm.SmoothRefreshLayout:ext-two-level:1.6.3.3'
    //擴充套件支援橫向重新整理庫
    compile 'com.github.dkzwm.SmoothRefreshLayout:ext-horizontal:1.6.3.3'
}

在Xml中配置

<?xml version="1.0" encoding="utf-8"?>
<me.dkzwm.widget.srl.SmoothRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</me.dkzwm.widget.srl.SmoothRefreshLayout>

Java程式碼配置

SmoothRefreshLayout refreshLayout = (SmoothRefreshLayout)findViewById(R.id.smoothRefreshLayout);
refreshLayout.setHeaderView(new ClassicHeader(this));
refreshLayout.setOnRefreshListener(new RefreshingListenerAdapter() {
    @Override
    public void onRefreshBegin(boolean isRefresh) {
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                refreshLayout.refreshComplete();
            }
        }, 4000);
    }
});

自定義重新整理檢視

介面定義
public interface IRefreshView <T extends IIndicator> {    

    byte TYPE_HEADER = 0;
    byte TYPE_FOOTER = 1;

    byte STYLE_DEFAULT = 0;
    byte STYLE_SCALE = 1;
    byte STYLE_PIN = 2;
    byte STYLE_FOLLOW_SCALE = 3;
    byte STYLE_FOLLOW_PIN = 4;
    byte STYLE_FOLLOW_CENTER = 5;

    /**
     * 返回是頭部檢視還是尾部檢視;
     */
    int getType();

    /**
     * 一般情況都是View實現本介面,所以返回this;
     */
    View getView();

    /**
     * 獲取檢視樣式,自1.4.8版本後支援6種樣式,STYLE_DEFAULT、STYLE_SCALE、STYLE_PIN、STYLE_FOLLOW_SCALE、STYLE_FOLLOW_PIN、STYLE_FOLLOW_CENTER;
     */
    int getStyle();

    /**
     * 獲取檢視的自定義高度,當檢視樣式為STYLE_SCALE和STYLE_FOLLOW_SCALE時,必須返回一個確切且大於0的值,使用橫向重新整理庫時,該屬性實際應該返回的是檢視的寬度;
     * 自1.6.1版本開始,如果想要當前檢視鋪滿布局即MATCH_PARENT,那麼支援返回ViewGroup.LayoutParams.MATCH_PARENT對應的值即`-1`;
     */
    int getCustomHeight();

    /**
     * 手指離開螢幕;
     */
    void onFingerUp(SmoothRefreshLayout layout, T indicator);

    /**
     * 重置檢視;
     */
    void onReset(SmoothRefreshLayout layout);

    /**
     * 重新配置檢視,準備重新整理;
     */
    void onRefreshPrepare(SmoothRefreshLayout layout);

    /**
     * 開始重新整理;
     */
    void onRefreshBegin(SmoothRefreshLayout layout, T indicator);

    /**
     * 重新整理完成;
     */
    void onRefreshComplete(SmoothRefreshLayout layout,boolean isSuccessful);

    /**
     * 當頭部或者尾部檢視發生位置變化;
     */
    void onRefreshPositionChanged(SmoothRefreshLayout layout, byte status, T indicator);

    /**
     * 當頭部或者尾部檢視仍然處於處理事務中,這時候移動其他重新整理檢視則會呼叫該方法;
     * 在1.4.6版本新加入;
     */
    void onPureScrollPositionChanged(SmoothRefreshLayout layout, byte status, T indicator);
}
新增自定義重新整理檢視
  • 全域性靜態程式碼構造
        SmoothRefreshLayout.setDefaultCreator(new IRefreshViewCreator() {
            @Override
            public void createHeader(SmoothRefreshLayout layout) {
                ClassicHeader header = new ClassicHeader(layout.getContext());
                layout.setHeaderView(header);
            }

            @Override
            public void createFooter(SmoothRefreshLayout layout) {
                ClassicFooter footer = new ClassicFooter(layout.getContext());
                layout.setFooterView(footer);
            }
        });
  • 動態程式碼新增
        ClassicHeader header = new ClassicHeader(mRefreshLayout.getContext());
        mRefreshLayout.setHeaderView(header);
        ClassicFooter footer = new ClassicFooter(mRefreshLayout.getContext());
        mRefreshLayout.setFooterView(footer);
  • 請直接寫入Xml檔案,SmoothRefreshLayout會根據新增的View是否是實現了IRefreshView介面進行判斷

實現類QQ下拉阻尼效果


mRefreshLayout.setIndicatorOffsetCalculator(new IIndicator.IOffsetCalculator() {
@Override
public float calculate(@IIndicator.MovingStatus int status, int currentPos, float offset) {
if (status == IIndicator.MOVING_HEADER) {
if (offset < 0) {
//如果希望拖動縮回時類似QQ一樣沒有阻尼效果,阻尼效果只存在於下拉則可以在此返回offset
//如果希望拖動縮回時類似QQ一樣有阻尼效果,那麼請註釋掉這個判斷語句
return offset;
}
return (float) Math.pow(Math.pow(currentPos / 2, 1.28d) + offset, 1 / 1.28d) * 2 - currentPos;
} else if (status == IIndicator.MOVING_FOOTER) {
if (offset > 0) {
//如果希望拖動縮回時類似QQ一樣沒有阻尼效果,阻尼效果只存在於上拉則可以在此返回offset
//如果希望拖動縮回時類似QQ一樣有阻尼效果,那麼請註釋掉這個判斷語句
return offset;
}
return -((float) Math.pow(Math.pow(currentPos / 2, 1.28d) - offset, 1 / 1.28d) * 2 - currentPos);
} else {
if (offset > 0) {
return (float) Math.pow(offset, 1 / 1.28d) * 2;
} else if (offset < 0) {
return -(float) Math.pow(-offset, 1 / 1.28d) * 2;
} else {
return offset;
}
}
}
});

Xml屬性

SmoothRefreshLayout 自身配置
名稱 型別 描述
sr_content reference 指定內容檢視的資源ID
sr_resistance float 移動重新整理檢視時候的移動阻尼(預設:1.65f
sr_resistanceOfFooter float 移動Footer檢視時候的移動阻尼(預設:1.65f
sr_resistanceOfHeader float 移動Header檢視時候的移動阻尼(預設:1.65f
sr_ratioToRefresh float 觸發重新整理時位置佔重新整理檢視的高度比(預設:1.1f
sr_ratioOfHeaderToRefresh float 觸發重新整理時位置佔Header檢視的高度比(預設:1.1f
sr_ratioOfFooterToRefresh float 觸發載入更多時位置佔Footer檢視的高度比(預設:1.1f
sr_ratioToKeep float 重新整理中保持檢視位置佔重新整理檢視的高度比(預設:1f),該屬性的值必須小於等於觸發重新整理高度比才會有效果
sr_ratioToKeepHeader float 重新整理中保持檢視位置佔Header檢視的高度比(預設:1f),該屬性的值必須小於等於觸發重新整理高度比才會有效果
sr_ratioToKeepFooter float 重新整理中保持檢視位置佔Footer檢視的高度比(預設:1f),該屬性的值必須小於等於觸發重新整理高度比才會有效果
sr_maxMoveRatio float 最大移動距離佔重新整理檢視的高度比(預設:0f,表示不會觸發)
sr_maxMoveRatioOfHeader float 最大移動距離佔Header檢視的高度比(預設:0f,表示不會觸發)
sr_maxMoveRatioOfFooter float 最大移動距離佔Footer檢視的高度比(預設:0f,表示不會觸發)
sr_closeDuration integer 指定收縮重新整理檢視到起始位置的時長(預設:500
sr_closeHeaderDuration integer 指定收縮Header檢視到起始位置的時長(預設:500
sr_closeFooterDuration integer 指定收縮Footer檢視到起始位置的時長(預設:500
sr_backToKeepDuration integer 設定回滾到保持重新整理檢視位置的時間(預設:200
sr_backToKeepHeaderDuration integer 設定回滾到保持Header檢視位置的時間(預設:200
sr_backToKeepFooterDuration integer 設定回滾到保持Footer檢視位置的時間(預設:200
sr_enablePinContent boolean 固定內容檢視(預設:false
sr_enableKeep boolean 重新整理中保持檢視停留在所設定的應該停留的位置(預設:true
sr_enablePullToRefresh boolean 拉動重新整理,下拉或者上拉到觸發重新整理位置即立即觸發重新整理(預設:false
sr_enableOverScroll boolean 越界回彈(預設:true
sr_emptyLayout reference 指定空狀態下對應的佈局資源ID
sr_errorLayout reference 指定異常狀態下對應的佈局資源ID
sr_customLayout reference 指定自定義狀態下對應的佈局資源ID
sr_state enum 狀態設定(預設:STATE_CONTENT
sr_enableRefresh boolean 設定是否啟用下拉重新整理(預設:ture
sr_enableLoadMore boolean 設定是否啟用載入更多(預設:false
sr_headerBackgroundColor color 設定Header重新整理高度區域的背景色
sr_footerBackgroundColor color 設定Footer重新整理高度區域的背景色
sr_mode enum 模式設定(預設:MODE_DEFAULT為重新整理控制元件模式)
sr_stickyHeader reference 指定黏貼頭部的資源ID,當SRL處於移動頭部檢視時該黏貼頭部會跟隨Target檢視進行移動
TwoLevelSmoothRefreshLayout 自身配置
名稱 型別 描述
sr_enableTwoLevelRefresh boolean 設定是否啟用二級重新整理(預設:true
sr_backToKeep2Duration boolean 設定回滾到保持二級重新整理頭部處於二級重新整理過程中的時長(預設:500
sr_closeHeader2Duration boolean 設定關閉二級重新整理頭部的時長(預設:500
SmoothRefreshLayout包裹內部其他View支援配置
名稱 型別 描述
layout_gravity flag 指定其它被包裹檢視的對齊屬性(非 targetView、非refreshView)

SmoothRefreshLayout java屬性設定方法

名稱 引數 描述
setHeaderView IRefreshView 配置頭部檢視
setFooterView IRefreshView 配置尾部檢視
setContentView int,View 配置內容檢視,引數1:設定內容檢視對應的狀態,引數2:狀態對應的內容檢視
setMode int 配置當前模式
setState int 配置當前狀態
setState int,boolean 配置當前狀態,引數1:當前狀態,引數2:是否使用漸變動畫過渡
setDisableWhenAnotherDirectionMove boolean 內部檢視含有其他方向滑動檢視時需設定該屬性為ture(預設:false
setEnableNextPtrAtOnce boolean 重新整理完成即可再次重新整理
setMaxOverScrollDuration int 設定越界回彈動畫最長時間(預設:500
setMinOverScrollDuration int 設定越界回彈動畫最短時間(預設:150
setResistance float 移動重新整理檢視時候的移動阻尼(預設:1.65f
setResistanceOfFooter float 移動Footer檢視時候的移動阻尼(預設:1.65f
setResistanceOfHeader float 移動Header檢視時候的移動阻尼(預設:1.65f
setRatioToRefresh float 觸發重新整理時位置佔重新整理檢視的高度比(預設:1.1f
setRatioOfHeaderToRefresh float 觸發重新整理時位置佔Header檢視的高度比(預設:1.1f
setRatioOfFooterToRefresh float 觸發載入更多時位置佔Footer檢視的高度比(預設:1.1f
setRatioToKeep float 重新整理中保持檢視位置佔重新整理檢視的高度比(預設:1f),該屬性的值必須小於等於觸發重新整理高度比才會有效果
setRatioToKeepHeader float 重新整理中保持檢視位置佔Header檢視的高度比(預設:1f),該屬性的值必須小於等於觸發重新整理高度比才會有效果
setRatioToKeepFooter float 重新整理中保持檢視位置佔Footer檢視的高度比(預設:1f),該屬性的值必須小於等於觸發重新整理高度比才會有效果
setMaxMoveRatio float 最大移動距離佔重新整理檢視的高度比(預設:0f,表示不會觸發)
setMaxMoveRatioOfHeader float 最大移動距離佔Header檢視的高度比(預設:0f,表示不會觸發)
setMaxMoveRatioOfFooter float 最大移動距離佔Footer檢視的高度比(預設:0f,表示不會觸發)
setDurationToClose int 指定收縮重新整理檢視到起始位置的時長(預設:500
setDurationToCloseHeader int 指定收縮Header檢視到起始位置的時長(預設:500
setDurationToCloseFooter int 指定收縮Footer檢視到起始位置的時長(預設:500
setDurationOfBackToKeep integer 設定回滾到保持重新整理檢視位置的時間(預設:200
setDurationOfBackToKeepHeader integer 設定回滾到保持Header檢視位置的時間(預設:200
setDurationOfBackToKeepFooter integer 設定回滾到保持Footer檢視位置的時間(預設:200
setEnablePinContentView boolean 固定內容檢視(預設:false
setEnablePullToRefresh boolean 拉動重新整理,下拉或者上拉到觸發重新整理位置即立即觸發重新整理(預設:false
setEnableOverScroll boolean 越界回彈(預設:true
setEnableInterceptEventWhileLoading boolean 重新整理中攔截不響應觸控操作(預設:false
setEnableHeaderDrawerStyle boolean Header抽屜樣式,即Header檢視在內容檢視下面(預設:false
setEnableFooterDrawerStyle boolean Footer抽屜樣式,即Footer檢視在內容檢視下面(預設:false
setDisablePerformRefresh boolean 關閉觸發Header重新整理(預設:false
setDisablePerformLoadMore boolean 關閉觸發Footer重新整理(預設:false
setEnableNoMoreData boolean 設定Footer沒有更多資料,該選項設定true時在Frame層等同setDisablePerformLoadMore設定為true,只是自定義檢視可以根據該標誌位改變檢視樣式,ClassicFooter預設實現了對該屬性的支援(預設:false
setEnableNoSpringBackWhenNoMoreData boolean 設定Footer沒有更多資料情況下不再回彈
setDisableRefresh boolean 禁用Header重新整理(預設:false
setDisableLoadMore boolean 禁用Footer重新整理(預設:false
setEnableKeepRefreshView boolean 重新整理中保持檢視停留在所設定的應該停留的位置(預設:true
setEnableAutoLoadMore boolean 到底部自動載入(預設:false
setEnablePinRefreshViewWhileLoading boolean 固定重新整理檢視在所設定的應該停留的位置,並且不響應移動,即Material樣式(預設:false),設定前提是開啟了setEnablePinContentViewsetEnableKeepRefreshView2個選項,否則執行時會丟擲異常
setSpringInterpolator Interpolator 設定預設的滾動插值器
setOverScrollInterpolator Interpolator 設定越界回彈時的滾動插值器
setEnableCheckInsideAnotherDirectionView boolean 設定是否開啟檢查手指按下點是否位於其他方向滾動檢視內,該屬性起作用必須滿足開啟setDisableWhenAnotherDirectionMove
setEnableCompatLoadMoreScroll boolean 設定是否開啟載入更多時的同步滾動(預設:true
setHeaderBackgroundColor int 設定Header重新整理高度區域的背景色,可用以替代在Header樣式為不需要動態改變檢視大小的情況下又想設定重新整理高度區域的背景色的場景
setFooterBackgroundColor int 設定Footer重新整理高度區域的背景色,可用以替代在Footer樣式為不需要動態改變檢視大小的情況下又想設定重新整理高度區域的背景色的場景
setEnableSmoothRollbackWhenCompleted boolean 設定開啟當重新整理完成時,回滾動作不能被打斷
setDisableLoadMoreWhenContentNotFull boolean 設定當內容檢視未滿屏時關閉載入更多
setStickyHeaderResId int 設定黏貼頭部檢視的資源ID

SmoothRefreshLayout 回撥

名稱 引數 描述
setOnRefreshListener T extends OnRefreshListener 設定重新整理事件監聽回撥
setOnStateChangedListener OnStateChangedListener 設定狀態改變回調
setChangeStateAnimatorCreator IChangeStateAnimatorCreator 設定改變狀態時使用的動畫建立者
addOnUIPositionChangedListener OnUIPositionChangedListener 新增檢視位置變化的監聽回撥
removeOnUIPositionChangedListener OnUIPositionChangedListener 移除檢視位置變化的監聽回撥
setOnLoadMoreScrollCallback OnLoadMoreScrollCallback 設定Footer完成重新整理後進行平滑滾動的回撥
setOnPerformAutoLoadMoreCallBack OnPerformAutoLoadMoreCallBack 設定觸發自動載入更多的條件回撥,如果回撥的canAutoLoadMore()方法返回true則會立即觸發載入更多
setOnHeaderEdgeDetectCallBack OnHeaderEdgeDetectCallBack 設定檢查內容檢視是否在頂部的過載回撥(SmoothRefreshLayout內部isNotYetInEdgeCannotMoveHeader()方法)
setOnFooterEdgeDetectCallBack OnFooterEdgeDetectCallBack 設定檢查內容檢視是否在底部的過載回撥(SmoothRefreshLayout內部isNotYetInEdgeCannotMoveFooter()方法)
setOnHookHeaderRefreshCompleteCallback OnHookUIRefreshCompleteCallBack 設定Header重新整理完成的Hook回撥,可實現延遲完成重新整理
setOnHookFooterRefreshCompleteCallback OnHookUIRefreshCompleteCallBack 設定Footer重新整理完成的Hook回撥,可實現延遲完成重新整理
setOnInsideAnotherDirectionViewCallback OnInsideAnotherDirectionViewCallback 設定檢查手指按下點是否位於其他滾動檢視內的過載回撥,可自定義判斷邏輯,提高判斷效率

SmoothRefreshLayout 其它

名稱 引數 描述
debug(靜態方法) boolean Debug開關
setDefaultCreator(靜態方法) IRefreshViewCreator 設定重新整理檢視建立者,如果沒有特殊指定重新整理檢視且設定的模式需要重新整理檢視則會呼叫建立者構建重新整理檢視
refreshComplete 無參 重新整理完成,且設定最後一次重新整理狀態為成功
refreshComplete boolean 重新整理完成,引數:設定最後一次重新整理是否重新整理成功
refreshComplete boolean,long 重新整理完成,引數1:設定最後一次重新整理是否重新整理成功,引數2:設定延遲重置重新整理狀態的時間(會先觸發重新整理檢視的重新整理完成回撥,但在延遲的時間內庫實際上狀態仍是重新整理狀態)
refreshComplete long 重新整理完成,且設定最後一次重新整理狀態為成功,引數:設定延遲重置重新整理狀態的時間(會先觸發重新整理檢視的重新整理完成回撥,但在延遲的時間內庫實際上狀態仍是重新整理狀態)
setLoadingMinTime long 設定開始重新整理到結束重新整理的最小時間差(預設:500),引數:時間差
autoRefresh 無參 自動觸發Header重新整理,立即觸發重新整理事件並滾動到觸發Header重新整理位置
autoRefresh boolean 自動觸發Header重新整理,引數:是否立即觸發重新整理事件,會滾動到觸發Header重新整理位置
autoRefresh boolean,boolean 自動觸發Header重新整理,引數1:是否立即觸發重新整理事件,引數2:是否滾動到觸發Header重新整理位置
autoLoadMore 無參 自動觸發Footer重新整理,立即觸發重新整理事件並滾動到觸發Footer重新整理位置
autoLoadMore boolean 自動觸發Footer重新整理,引數:是否立即觸發重新整理事件,會滾動到觸發Footer重新整理位置
autoLoadMore boolean,boolean 自動觸發Footer重新整理,引數1:是否立即觸發重新整理事件,引數2:是否滾動到觸發Footer重新整理位置
setLoadMoreScrollTargetView View 設定Footer移動時,響應移動事件的內容檢視,例如在SmoothRefreshLayout中有一個CoordinatorLayout,CoordinatorLayout中有AppbarLayout、RecyclerView等,載入更多時希望被移動的檢視為RecyclerView而不是CoordinatorLayout,那麼設定RecyclerView為TargetView即可

TwoLevelSmoothRefreshLayout java屬性設定方法

名稱 引數 描述
setRatioOfHeaderToHintTwoLevel float 設定觸發二級重新整理提示時的位置佔Header檢視的高度比
setRatioOfHeaderToTwoLevel float 設定觸發二級重新整理時的位置佔Header檢視的高度比
setRatioToKeepTwoLevelHeader float 二級重新整理中保持檢視位置佔Header檢視的高度比(預設:1f
setDisableTwoLevelRefresh boolean 設定是否關閉二級重新整理(預設:false
setDurationOfBackToKeepTwoLevel int 設定回滾到保持二級重新整理Header檢視位置的時間(預設:500
setDurationToCloseTwoLevel int 設定二級重新整理Header重新整理完成回滾到起始位置的時間(預設:500

TwoLevelSmoothRefreshLayout 其它

名稱 引數 描述
autoTwoLevelRefreshHint 無參 自動觸發二級重新整理提示並滾動到觸發提示位置後回滾回起始位置
autoTwoLevelRefreshHint int 自動觸發二級重新整理提示並滾動到觸發提示位置後停留指定時長,引數:停留多長時間
autoTwoLevelRefreshHint boolean 自動觸發二級重新整理提示是否滾動到觸發提示位置後回滾回起始位置,引數:是否滾到到觸發位置
autoTwoLevelRefreshHint boolean,int 自動觸發二級重新整理提示,引數1:是否滾動到觸發位置,引數2:停留多長時間
autoTwoLevelRefreshHint boolean,int,boolean 自動觸發二級重新整理提示,引數1:是否滾動到觸發位置,引數2:停留多長時間,引數3:是否可以被觸控打斷,即觸發提示動作過程中攔截觸控事件,直到回滾到起始位置並重置為預設狀態

Thanks

License

MIT License

Copyright (c) 2017 dkzwm
Copyright (c) 2015 liaohuqiu.net

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.

相關推薦

強大Android重新整理控制元件-SmoothRefreshLayout

SmoothRefreshLayout 一個高效的Android重新整理庫,理論上支援所有的檢視,比官方的SwipeRefreshLayout更強大且使用方便. 本開源庫的部分程式碼來自android-Ultra-Pull-To-Refresh. 非常感謝

Android SwipeRefreshLayout 官方下拉重新整理控制元件介紹

                轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/24521483下面App基本都有下拉重新整理的功能,以前基本都使用XListView或者自己寫一個下拉重新整理,近期Google提供了一個官方的下拉重新整理控制

android學習筆記“RecyclerView”一個更強大的滾動控制元件

package com.example.recyclerviewtest; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import

Android SwipeRefreshLayout官方下拉重新整理控制元件介紹(與知乎Android客戶端下拉重新整理一樣!!)

轉載出處:http://blog.csdn.net/lmj623565791/article/details/24521483 //沒少看鴻洋老師的視訊,一如既往,鴻洋老師講解的淺顯易懂! 下面App基本都有下拉重新整理的功能,以前基本都使用XListView或者自己

Android——谷歌官方下拉重新整理控制元件SwipeRefreshLayout

前言: 如今谷歌推出了更官方的下拉重新整理控制元件, 這無疑是對安卓開發人員來說是個好訊息,很方便的使用這個SwipeRefreshLayout控制元件實現下拉重新整理功能。Android4.0以下的版本需要用到 android-support-v4.jar

Android仿蘋果版QQ下拉重新整理實現(一) ——打造簡單平滑的通用下拉重新整理控制元件

前言: 因為公司人員變動原因,導致了博主四個月沒有動安卓,一直在做IOS開發,如今接近年前,終於可以花一定的時間放在安卓上了.好了,廢話不多說,今天我們要帶來的效果是蘋果版本的QQ下拉重新整理.首先看一下目標效果以及demo效果:      因為此效果實現的步驟較多,所

一個很強大的下拉重新整理控制元件

Ultra Pull To Refresh 這是現在已經停止維護的下拉重新整理專案的替代方案。繼承於ViewGroup可以包含任何View。功能比SwipeRefreshLayout強大。 使用起來非常簡單。良好的設計,如果你想定製自己的UI樣式,非常簡單,就像給

幾種Android表格控制元件

一、LockTableView GitHub:https://github.com/RmondJone/LockTableView 有基本功能(顯示資料),有上拉下拉,有點選事件,但其它功能(如新增按鈕等)需要二次開發。   二、PanelList GitHub:https://

Android CardView控制元件

相關文章 Android Snackbar控制元件 Android FloatingActionButton控制元件 Android Toolbar控制元件 Android AppBarLayout控制元件 Android CollapsingToolbarLayout控制元件 Andr

Android ViewStub控制元件

前言 使用ViewStub可以實現介面的延遲載入。 1. ViewStub簡單應用 (1) 佈局檔案 layout為載入View,inflatedId為載入後View的id。 <ViewStub android:id="@+id/view_stub"

Android ViewPager控制元件

前言 ViewPager可以實現多個介面的左右滑動。 1. ViewPager簡單應用 (1) 佈局檔案 <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:

android高階控制元件介紹

1. 高階控制元件與低階控制元件區別 高階控制元件需要介面卡 而低階不用 2. 介面卡種類  陣列介面卡 ArrayAdapter         new ArrayAdapter<String&

Android學習(六)—— Android高階控制元件

Android高階控制元件 1、ProgressBar 進度條,在執行耗時操作時來顯示,可以提高軟體的友好型。 常用屬性 android:max:進度條的最大值 android:progress:進度條已完成進度值 android:progressDrawable:設定軌道對應的Draw

Android學習(五)—— Android初級控制元件

Android初級控制元件 從今天開始就對Android進行正式的學習,首先先來學習一下初級的控制元件 1、TextView  文字框,用於顯示文字,不可編輯。 常用屬性 android:autoLink   設定是否當文字為URL連結/email/

Android 基礎控制元件(二)

##7.ImageView ImageView直接繼承View,也是非常常用的一種檢視控制元件。 示例程式碼: <ImageView android:id="@+id/testImage" android:layout_width="100dp" a

android 基礎控制元件————TextView

TextView是View的直接子類。它是一個文字顯示控制元件,提供了基本的顯示文字的功能,並且是大部分UI控制元件的父類,因為大部分UI控制元件都需要展示資訊。 如果僅僅是展示文字,那麼TextView的作用就太小了,所以它還預定義了一些類似於HTML的標籤,通過這些標籤可以使TextView

帶你徹底看懂React Native和Android原生控制元件之間的對映關係

此文基於react natve的 September 2018 - revision 5 版本 本人學校畢業後就當了安卓爬坑專業戶,3年來總算爬習慣了,不料今年掉進了RN這個天坑,從此開始了我的悲慘人生。。。Anyway,RN的思想還是值得學習的,今天就從Android的角度開始分析一下react nati

android高階控制元件(ListView) 列表控制元件

在strings中建立一個strings.xml,並定義字串陣列,用於當資料來源 張三 李四 王五 張三丰 abc abb

Android常用控制元件,用執行緒寫一個進度條。

一、事件監聽(三種寫法) 1、標籤上直接繫結監聽方法       public void xxx(View view) 2、 建立監聽器物件,元件再繫結監聽器物件 2.1、匿名內部類 2.2、使用匿名內部類並定義成全域性的屬性 二、文字框(TextView) 1、T

Android 高階控制元件

一、ScrollView 二、ListView 三、自定義介面卡 BaseAdapter:是所有介面卡類的父類,可以對列表項進行最大限度的定製 自定義介面卡中的方法: getCount : 共有幾條資料 getView : 這個方法的作