android下拉刷新——swipeRefresh的使用

Posted 我想月薪过万

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android下拉刷新——swipeRefresh的使用相关的知识,希望对你有一定的参考价值。

效果展示

效果展示

简介

SwipRefreshLayout是谷歌前一段时间推出的一款下拉刷新控件。

常用方法

方法解释
setColorSchemeResources(int…colorReslds)设置下拉进度条的颜色主题,参数可变,并且是资源id,最多设置四种不同的颜色。
setProgressBackgroundSchemeResource(int coloRes)设置下拉进度条的背景颜色,默认白色。
isRefreshing()判断当前的状态是否是刷新状态。
setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener)设置监听,需要重写onRefresh()方法,顶部下拉时会调用这个方法,在里面实现请求数据的逻辑,设置下拉进度条消失等等。
setRefreshing(boolean refreshing)设置刷新状态,true表示正在刷新,false表示取消刷新

 使用

第一步:首先在应用或模块的 build.gradle 文件中添加所需工件的依赖项

dependencies {
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"

}

第二步:编写布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

</LinearLayout>

注意:这一步中,SwipeRefreshLayout必须包裹一个元素,要不然会报如下错误:空指针异常

好了,到这一步你就可以看到下拉刷新的雏形了

API的使用

设置下拉刷新进度条颜色

package com.wust.myswiperefresh;

import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //第一步:找到 swipeRefresh 控件
        SwipeRefreshLayout srl_my_refresh = findViewById(R.id.srl_my_refresh);
        //第二步,设置 下拉刷新时的颜色
        srl_my_refresh.setColorSchemeColors(Color.parseColor("#ff0000"),Color.parseColor("#00ff00"));
    }
}

设置下拉刷新背景色

package com.wust.myswiperefresh;

import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //第一步:找到 swipeRefresh 控件
        SwipeRefreshLayout srl_my_refresh = findViewById(R.id.srl_my_refresh);
        //第二步,设置 下拉刷新时的颜色
        srl_my_refresh.setColorSchemeColors(Color.parseColor("#ff0000"),Color.parseColor("#00ff00"));
        srl_my_refresh.setProgressBackgroundColorSchemeColor(Color.parseColor("#0000ff"));
    }
}

 

监听下拉刷新

package com.wust.myswiperefresh;

import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import android.graphics.Color;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //第一步:找到 swipeRefresh 控件
        SwipeRefreshLayout srl_my_refresh = findViewById(R.id.srl_my_refresh);
        //第二步,设置 下拉刷新时的颜色
        srl_my_refresh.setColorSchemeColors(Color.parseColor("#ff0000"),Color.parseColor("#00ff00"));
        srl_my_refresh.setProgressBackgroundColorSchemeColor(Color.parseColor("#0000ff"));
        //监听 刷新是回调
        srl_my_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                //判断是否在刷新
                Toast.makeText(MainActivity.this,srl_my_refresh.isRefreshing()?"正在刷新":"刷新完成"
                        ,Toast.LENGTH_SHORT).show();
                srl_my_refresh.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //关闭刷新
                        srl_my_refresh.setRefreshing(false);
                    }
                },3000);
            }
        });
    }
}

效果图

 

以上是关于android下拉刷新——swipeRefresh的使用的主要内容,如果未能解决你的问题,请参考以下文章

Android-利用Jetpack-Compose-+Paging3+swiperefresh实现分页加载,下拉上拉效果

android 下拉刷新怎么实现

android ListView 做下拉刷新 下拉跳到第一项怎么解决

android ListView 做下拉刷新 下拉跳到第一项怎么解决

怎么自定义android 下拉刷新动画

Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能