Android官方下拉刷新控件 SwipeRefreshLayout

jopen 10年前發布 | 52K 次閱讀 Android Android開發 移動開發

SwipeRefreshLayout

SwipeRefreshLayout 字面意思就是下拉刷新的布局,繼承自ViewGroup,在support v4兼容包下,但必須把你的support library的版本升級到19.1。 提到下拉刷新大家一定對ActionBarPullToRefresh比較熟悉,而如今google推出了更官方的下拉刷新組件,這無疑是對開發者來說比 較好的消息。利用這個組件可以很方便的實現Google Now的刷新效果,見下圖:

Android官方下拉刷新控件 SwipeRefreshLayout

主要方法

  • setOnRefreshListener(OnRefreshListener): 為布局添加一個Listener

  • setRefreshing(boolean): 顯示或隱藏刷新進度條

  • isRefreshing(): 檢查是否處于刷新狀態

  • setColorScheme(): 設置進度條的顏色主題,最多能設置四種

xml布局文件

布局文件很簡單,只需要在最外層加上SwipeRefreshLayout,然后他的child是可滾動的view即可,如ScrollView或者ListView。如:

<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
        <TextView
            android:text="@string/hello_world"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:gravity="center"/>
    </ScrollView>
 </android.support.v4.widget.SwipeRefreshLayout>

Activity代碼

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
    swipeLayout.setOnRefreshListener(this);
    swipeLayout.setColorScheme(android.R.color.holo_blue_bright, 
            android.R.color.holo_green_light, 
            android.R.color.holo_orange_light, 
            android.R.color.holo_red_light);}
 public void onRefresh() {
    new Handler().postDelayed(new Runnable() {
        @Override public void run() {
            swipeLayout.setRefreshing(false);
        }
    }, 5000);}

上面的代碼很簡單,只需要給SwipeRefreshLayout添加一個listener,值得說明的是setColorScheme方法是設置刷新進度條的顏色,最多只能設置4種循環顯示,默認第一個是隨用戶手勢加載的顏色進度條。

源碼

寫了的小demo在github上,地址在:SwipeRefreshLayoutDemo

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!