【Android】下拉刷新组件Swiperefreshlayout

效果如下所示:

需要在build.gradle里引入swiperefreshlayout的依赖

    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

activity_main.xml文件





    
        

    


MainActivity.kt

import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout

class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val swipeRefreshLayout = findViewById(R.id.swipe_refresh_layout)
        val tvRefreshText = findViewById(R.id.tv_refresh)

        swipeRefreshLayout.setColorSchemeColors(
            ContextCompat.getColor(this, R.color.purple_200),
            ContextCompat.getColor(this, R.color.holo_green_light),
            ContextCompat.getColor(this, R.color.holo_orange_light),
        )

        swipeRefreshLayout.setOnRefreshListener {
            swipeRefreshLayout.postDelayed({
                swipeRefreshLayout.isRefreshing = false
                tvRefreshText.text = "加载完成"
            }, 2000)
        }

    }
}

SwipeRefreshLayout 是 Android 提供的一个用于实现“下拉刷新”功能的控件,属于 androidx.swiperefreshlayout.widget.SwipeRefreshLayout 包。以下是它常用的 API 和说明。


✅ 常用 API 总结

1. setOnRefreshListener(OnRefreshListener listener)

  • 设置刷新监听器,当用户下拉时触发。

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
        // 执行刷新逻辑
    }
});

2. setRefreshing(boolean refreshing)

  • 设置当前是否处于刷新状态。你可以通过代码触发或停止刷新动画。

swipeRefreshLayout.setRefreshing(true);  // 显示刷新动画
swipeRefreshLayout.setRefreshing(false); // 停止刷新动画

3. isRefreshing()

  • 判断当前是否正在刷新。

if (swipeRefreshLayout.isRefreshing()) {
    // 说明正在刷新
}

4. setColorSchemeColors(int... colors)

  • 设置刷新动画的颜色(传入颜色值,不是资源 ID)。

swipeRefreshLayout.setColorSchemeColors(
    ContextCompat.getColor(this, R.color.colorPrimary),
    ContextCompat.getColor(this, R.color.colorAccent)
);

5. setProgressBackgroundColorSchemeColor(int color)

  • 设置刷新指示器的背景颜色。

swipeRefreshLayout.setProgressBackgroundColorSchemeColor(
    ContextCompat.getColor(this, R.color.white)
);

6. setDistanceToTriggerSync(int distance)

  • 设置触发刷新所需下拉的距离(单位:像素)。

swipeRefreshLayout.setDistanceToTriggerSync(300);

7. setSize(int size)

  • 设置刷新指示器的大小,可选值有:

    • SwipeRefreshLayout.LARGE

    • SwipeRefreshLayout.DEFAULT

swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);

8. setProgressViewOffset(boolean scale, int start, int end)

  • 自定义刷新指示器的位置偏移。

swipeRefreshLayout.setProgressViewOffset(true, 0, 200);

完整导包路径

import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

官方文档链接

如果你想查看最新官方文档,可以访问:
https://developer.android.com/reference/androidx/swiperefreshlayout/widget/SwipeRefreshLayout


你可能感兴趣的:(Android,android)