Android其他控件(二补)

82 阅读1分钟

image.png

没有人会一直顺利,愿你更加强大,然后有一天你可以笑着讲述那些曾让你哭的瞬间。

下拉刷新(SwipeRefreshLayout)

该组件当中只接受 1 个子组件也 就是需要刷新内容的组件,如果有多个子组件时将只展示第一个子组件中所更新的内容,后面的子 组件将不予展示。这个子组件必须是允许滚动的,如 ListView、GridView 或者是 RecyclerView 等。 该组件主要用于在屏幕中手指向下滑动时起到下拉刷新数据的作用。

需要在build.gradle(:app)中的depenadncies下添加依赖:

implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"

简单页面布局:

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    android:id="@+id/dropRefresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/listViews"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

交互编写:

package com.example.permissionapplication;

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

import android.os.Bundle;
import android.os.Handler;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MySwipeRefreshLayout extends AppCompatActivity {
    private SwipeRefreshLayout swipeRefreshLayout;
    private ListView listView;
    private ArrayAdapter<String> adapter;

//    数据源,后期写业务可使用更方便URi或其他代替
    private List<String> data=new ArrayList<String>(
            Arrays.asList("Android 200例","Java全能速查宝典","Android从入门到精通","Java开发实战宝典")
    );

    private Handler handler=new Handler();
    private Runnable runnable=new Runnable() {
        @Override
        public void run() {
            data.addAll(Arrays.asList("HTML","CSS","JavaScript","Java"));
            adapter.notifyDataSetChanged();//更改适配器数据
            swipeRefreshLayout.setRefreshing(false);//刷新结束
        }
    };


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

        initView();
    }

    private void initView() {
        listView=findViewById(R.id.listViews);
        swipeRefreshLayout=findViewById(R.id.dropRefresh);

        adapter=new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,data);
        listView.setAdapter(adapter);

//        刷新监听
        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
//                刷新内容,在3s内完成
                handler.postDelayed(runnable,3000);
            }
        });
//       设置刷新进度条颜色
        swipeRefreshLayout.setColorSchemeResources(R.color.purple_500,R.color.purple_200,R.color.purple_700,R.color.teal_700);
    }
}

交互效果:

tutieshi_322x616_6s.gif