溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

android中如何使用SwipeRefreshLayout下拉刷新組件

發(fā)布時間:2021-06-29 14:25:48 來源:億速云 閱讀:330 作者:Leah 欄目:移動開發(fā)

這篇文章給大家介紹android中如何使用SwipeRefreshLayout下拉刷新組件,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

查看文檔,我們可以知道,在SwipRefreshLayout中存在一個接口,通過此接口我們可以監(jiān)聽滑動手勢,其實(shí)使用此組件最重要的步驟就是實(shí)現(xiàn)此接口的onRefresh方法,在此方法中實(shí)現(xiàn)數(shù)據(jù)的更新操作。如下:

android中如何使用SwipeRefreshLayout下拉刷新組件

接口中的方法:

android中如何使用SwipeRefreshLayout下拉刷新組件

1、setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener):設(shè)置手勢滑動監(jiān)聽器。

2、setProgressBackgroundColor(int colorRes):設(shè)置進(jìn)度圈的背景色。

3、setColorSchemeResources(int… colorResIds):設(shè)置進(jìn)度動畫的顏色。

4、setRefreshing(Boolean refreshing):設(shè)置組件的刷洗狀態(tài)。

5、setSize(int size):設(shè)置進(jìn)度圈的大小,只有兩個值:DEFAULT、LARGE

弄清楚API后,我們下面進(jìn)行實(shí)際編碼,首先先做布局,具體內(nèi)容如下:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout      xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     android:id="@+id/swipeLayout" >           <ListView          android:id="@+id/mylist"         android:layout_width="match_parent"         android:layout_height="wrap_content"/>      </android.support.v4.widget.SwipeRefreshLayout>

Activity核心代碼如下:

swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipeLayout);          swipeRefreshLayout.setColorSchemeResources(R.color.swipe_color_1,                 R.color.swipe_color_2,                 R.color.swipe_color_3,                 R.color.swipe_color_4);         swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);;         swipeRefreshLayout.setProgressBackgroundColor(R.color.swipe_background_color);         //swipeRefreshLayout.setPadding(20, 20, 20, 20);         //swipeRefreshLayout.setProgressViewOffset(true, 100, 200);         //swipeRefreshLayout.setDistanceToTriggerSync(50);         swipeRefreshLayout.setProgressViewEndTarget(true, 100);         swipeRefreshLayout.setOnRefreshListener(new OnRefreshListener() {             @Override             public void onRefresh() {                 new Thread(new Runnable() {                     @Override                     public void run() {                         data.clear();                         for(int i=0;i<20;i++){                             data.add("SwipeRefreshLayout下拉刷新"+i);                         }                         try {                             Thread.sleep(5000);                         } catch (InterruptedException e) {                             e.printStackTrace();                         }                         mHandler.sendEmptyMessage(1);                     }                 }).start();             }         });     //handler     private Handler mHandler = new Handler(){         @Override         public void handleMessage(Message msg) {             super.handleMessage(msg);             switch (msg.what) {             case 1:                                  swipeRefreshLayout.setRefreshing(false);                 adapter.notifyDataSetChanged();                 //swipeRefreshLayout.setEnabled(false);                 break;             default:                 break;             }         }     };

通過如上步驟,我們就實(shí)現(xiàn)了一個簡單的下拉刷新操作,在此基礎(chǔ)上,我們可以分析研究一下SwipeRefreshLayout是如何實(shí)現(xiàn)的。

通過源碼我們發(fā)現(xiàn)SwipeRefreshLayout中的兩個重要的屬性:

private MaterialProgressDrawable mProgress;

private CircleImageView mCircleView;
這兩個屬性正是用于實(shí)現(xiàn)進(jìn)度動畫效果的,在方法createProgressView中,我們看到mCircleView最終加入到了SwipeRefreshLayout中。

private void createProgressView() {
mCircleView = new CircleImageView(getContext(), CIRCLE_BG_LIGHT, CIRCLE_DIAMETER/2);
mProgress = new MaterialProgressDrawable(getContext(), this);
mProgress.setBackgroundColor(CIRCLE_BG_LIGHT);
mCircleView.setImageDrawable(mProgress);
mCircleView.setVisibility(View.GONE);
addView(mCircleView);
}

關(guān)于android中如何使用SwipeRefreshLayout下拉刷新組件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI