Android中SwipeRefreshLayout用法

当我们只使用下拉刷新的时候,往往可以使用更加简洁的SwipeRefreshLayout来实现这个功能。下面我们就了解一下该控件的用法。

1.常用方法

  • setOnRefreshListener:设置刷新监听器。需要重写监听器OnRefreshListener的onRefresh方法,该方法在下拉松开时触发。
  • setRefreshing:设置刷新的状态。true表示正在刷新,false表示结束刷新。
  • isRefreshing:判断是否正在刷新。
  • setColorSchemeColors:设置进度圆圈的圆环颜色。
  • setProgressBackgroundColorSchemeColor:设置进度圆圈的背景颜色。
  • setProgressViewOffset:设置进度圆圈的偏移量。第一个参数表示进度圈是否缩放,第二个参数表示进度圈开始出现时距顶端的偏移,第三个参数表示进度圈拉到最大时距顶端的偏移。
  • setDistanceToTriggerSync:设置手势向下滑动多少距离才会触发刷新操作。

2.示例代码

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp">

    <!-- 注意SwipeRefreshLayout节点必须使用完整路径 -->
    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/srl_simple"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!-- SwipeRefreshLayout的下级必须是可滚动的视图 -->
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/tv_simple"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:paddingTop="10dp"
                android:text="这是一个简单视图"
                android:textColor="#000000"
                android:textSize="17sp" />
        </ScrollView>
    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {

    private TextView tv_simple;
    private SwipeRefreshLayout srl_simple; // 声明一个下拉刷新布局对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_simple = findViewById(R.id.tv_simple);
        // 从布局文件中获取名叫srl_simple的下拉刷新布局
        srl_simple = findViewById(R.id.srl_simple);
        // 给srl_simple设置下拉刷新监听器
        srl_simple.setOnRefreshListener(this);
        // 设置下拉刷新布局的进度圆圈颜色
        srl_simple.setColorSchemeResources(
                R.color.red, R.color.orange, R.color.green, R.color.blue);
    }

    private Handler mHandler = new Handler(); // 声明一个处理器对象
    // 定义一个刷新任务
    private Runnable mRefresh = new Runnable() {
        @Override
        public void run() {
            tv_simple.setText("刷新完成");
            // 结束下拉刷新布局的刷新动作
            srl_simple.setRefreshing(false);
        }
    };

    /**
     * 一旦在下拉刷新布局内部往下拉动页面,就触发下拉监听器的onRefresh方法
     */
    @Override
    public void onRefresh() {
        tv_simple.setText("正在刷新");
        // 延迟若干秒后启动刷新任务
        mHandler.postDelayed(mRefresh, 2000);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38322371/article/details/115027179
今日推荐