2014/10/25

ActionBar-PullToRefresh example

這是 ActionbarPulltoRefresh 的範例.
此範例需要配合以下的 Library, 由於原作者已經不在維護. 這邊我 Fork 出來修改部份成我需要的.
ActionBar-PullToRefresh


以下是 xml, 要可以使用 ActionBar-PullToRefresh, 必須使用 uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout 當作 root view
<uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"<br/>    android:id="@+id/ptr_layout"<br/>    android:layout_width="match_parent"<br/>    android:layout_height="match_parent"><br/><br/>    <RelativeLayout<br/>        android:layout_width="match_parent"<br/>        android:layout_height="match_parent"<br/>        android:background="@android:color/black"<br/>        android:layout_margin="16dp"><br/><br/>        <TextView<br/>            android:layout_width="wrap_content"<br/>            android:layout_height="wrap_content"<br/>            android:text="12312312312"<br/>            android:textColor="@android:color/white"<br/>            android:layout_alignParentTop="true"/><br/><br/><br/>    </RelativeLayout><br/><br/></uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout>



ActionBar-PullToRefresh 預設支援以下三種

* AbsListView derivatives (ListView & GridView).
* ScrollView
* WebView

但這邊我們採用 RelativeLayout. 因此需要特別設定.
這邊請 class 名稱.
這邊 isReadyForPull 如果回 true 則此 Layout 可以做 pull to refresh.
因此如果有 customize view, 可以用這種方式來自定下拉重新整理的行為.
    private class MyListViewDelegate extends AbsListViewDelegate {<br/><br/>        @Override<br/>        public boolean isReadyForPull(View view, float v, float v2) {<br/>            return true;<br/>        }<br/>    }

搭配上面的 delegte 則 PullToRefreshLayout 必須額外設定.
        ActionBarPullToRefresh.from(this)<br/>                .allChildrenArePullable()<br/>                .options(Options.create()<br/>                        .scrollDistance(.45f)<br/>                        .build())<br/>                .useViewDelegate(ViewGroup.class, new MyListViewDelegate())<br/>                .listener(this)<br/>                .setup(mPtrLayout);

如此一來就可以達成我們的目的了.
附圖是結果.


很早之前提到使用 Google support-v4 套件的 SwipeRefreshLayout
也許是習慣了, 我個人認為使用 ActionBar-PullToRefresh 更方便設定以及使用.

原始碼下載:
ActionbarPullToRefresh.zip