zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    In Java, how do I read/convert an InputStream to a String? Stack Overflow
    IFrame自动更改大小
    [置顶] 获取服务器上格式为JSON和XML两种格式的信息的小程序
    Qt VS MFC
    [技术分享]使用 UAG 发布 RemoteAPP
    linux2.6.32在mini2440开发板上移植(11)之配置USB外设
    MFC控件(2):Text_Edit_Control
    CentOS 6.4 安装 Oracle 10g2 备记
    sql lite 二个数据库之间的表进行复制
    变量和函数的定义和声明
  • 原文地址:https://www.cnblogs.com/dadafeige/p/4893403.html
Copyright © 2011-2022 走看看