SwipeRefreshLayout简介

  为了做一个山寨版的一加天气,今天下午看了下拉刷新控件,于是就看到了SwipeRefreshLayout,那就介绍一下SwipeRefreshLayout吧。SwipeRefreshLayout是谷歌官方推出的一个控件,现在已经很流行了,知乎上就是用的这种。

先是在百度上搜索全是这种一根线向两边扩散,而我是想要的知乎那种小圆圈的滚动怎么办啊,找了几个小时才知道原来是这样的,在迁移到Android studio后就必须使用AppCompat_v7 21+ ,切换了之后你就会发现一些有趣的变化,比如说这个SwipeRefreshLayout,就进化成了一个圆。

如下

SwipeRefreshLayout有如下重要的几个方法:

   1、setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener):设置手势滑动监听器。

         2、setProgressBackgroundColor(int colorRes):设置进度圈的背景色。

         3、setColorSchemeResources(int… colorResIds):设置进度动画的颜色。

         4、setRefreshing(Boolean refreshing):设置组件的刷洗状态。

         5、setSize(int size):设置进度圈的大小,只有两个值:DEFAULT、LARGE

 

以下是MainActivity

 1 package com.example.king.swiperefreshlayout;
 2 
 3 import android.os.Handler;
 4 import android.os.Message;
 5 import android.support.v4.widget.SwipeRefreshLayout;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.os.Bundle;
 8 import android.widget.ArrayAdapter;
 9 import android.widget.ListView;
10 import java.util.ArrayList;
11 import java.util.List;
12 
13 public class MainActivity extends AppCompatActivity {
14     private SwipeRefreshLayout swipeRefreshLayout;
15     private ListView listView;
16     private List<String> data;
17     private ArrayAdapter<String> adapter;
18 
19 
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.activity_main);
24         listView=(ListView)findViewById(R.id.listView);
25 
26         //放置数据的泛型
27         data=new ArrayList<String >();
28 
29         //ListView的适配器进行配置
30         adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
31         //设置listview的适配器
32         listView.setAdapter(adapter);
33 
34         swipeRefreshLayout=(SwipeRefreshLayout)findViewById(R.id.swipeLayout);
35         //定义颜色资源
36         swipeRefreshLayout.setColorSchemeResources(
37                 R.color.swipe_color_1,
38                 R.color.swipe_color_2,
39                 R.color.swipe_color_3,
40                 R.color.swipe_color_4
41 
42         );
43         //设置圆圈大小
44         swipeRefreshLayout.setSize(SwipeRefreshLayout.DEFAULT);
45         //小圆圈背景颜色
46         //swipeRefreshLayout.setProgressBackgroundColor(R.color.swipe_color_background);
47         //为SwipeRefreshLayout设置监听
48         swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
49             @Override
50             public void onRefresh() {
51                 //建立一个新的线程
52                 new Thread(new Runnable() {
53                     @Override
54                     public void run() {
55                         //清除data数据
56                         data.clear();
57                         for(int i=0;i<20;i++)
58                             data.add("SwipeRefresh下拉刷新"+i);
59                         try {
60                             //主线程睡眠3000mm
61                             Thread.sleep(3000);
62                         } catch (InterruptedException e) {
63                             e.printStackTrace();
64                         }
65                         //handle向主线程传回数据
66                         mHandler.sendEmptyMessage(1);
67 
68                     }
69                   //启动子线程start()
70                 }).start();
71             }
72         });
73 
74     }
75     // import android.os.Handler;异入的方法为android.os.Handler ,而不是Java的Handler
76     private Handler mHandler = new Handler(){
77         @Override
78         public void handleMessage(Message msg) {
79             super.handleMessage(msg);
80             switch (msg.what) {
81                 case 1:
82 
83                     swipeRefreshLayout.setRefreshing(false);
84                     adapter.notifyDataSetChanged();
85                     //swipeRefreshLayout.setEnabled(false);
86                     break;
87                 default:
88                     break;
89             }
90         }
91 
92     };
93 }

布局文件

<?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/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</android.support.v4.widget.SwipeRefreshLayout>

以上是对SwipeRefreshLayout浅薄的认识。

人一我十,人十我百,没有什么是做不到的

wyf  by

2015/10/19

原文地址:https://www.cnblogs.com/dadafeige/p/4893403.html