当前位置: 移动技术网 > IT编程>移动开发>Android > Android SwipeRefreshLayout下拉刷新组件示例

Android SwipeRefreshLayout下拉刷新组件示例

2019年07月24日  | 移动技术网IT编程  | 我要评论

天津工业大学物理实验中心,msiexec,running man e30

swiperefreshlayout概述

swiperefrshlayout是google官方更新的一个widget,可以实现下拉刷新的效果。该控件集成自viewgroup在support-v4兼容包下,不过我们需要升级supportlibrary的版本到19.1以上。

用户通过手势或者点击某个按钮实现内容视图的刷新,布局里加入swiperefreshlayout嵌套一个子视图如listview、 recyclerview等,触发刷新会通过onrefreshlistener的onrefresh方法回调,我们在这里执行页面数据的刷新,每次手势 的完成都会执行一次通知,根据滑动距离判断是否需要回调。setrefreshing(false)通过代码直接取消刷新,true则手动设置刷新调出刷 新视图。setenabled(false)通过boolean控制是否禁用手势刷新 。

基本使用的方法如下:

1.setonrefreshlistener(onrefreshlistener):添加下拉刷新监听器

2.setrefreshing(boolean):显示或者隐藏刷新进度条

3.isrefreshing():检查是否处于刷新状态

使用非常简单,用一个简单案例来介绍swiperefreshlayout下拉刷新的功能。

布局文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.swiperefreshlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/v7_refresh"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@color/back">

  <android.support.v7.widget.recyclerview
    android:id="@+id/v7_recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

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

item.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.cardview 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/cardview"
  app:cardcornerradius="5dp"
  app:cardbackgroundcolor="@android:color/white"
  android:layout_margin="5dp"
  android:layout_height="60dp"
  android:layout_width="match_parent">

    <textview
    android:id="@+id/menuitem_tv"
    android:layout_gravity="center"
    android:text="@string/app_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</android.support.v7.widget.cardview>

activity

public class mainactivity extends appcompatactivity {

  private swiperefreshlayout swiperefreshlayout;

  private recyclerview recyclerview;

  private list<string> list=null;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main_activity);
    initview();
  }
  private void initview()
  {
    swiperefreshlayout=(swiperefreshlayout)findviewbyid(r.id.v7_refresh);
    recyclerview=(recyclerview)findviewbyid(r.id.v7_recyclerview);
    //设置下拉圆圈的大小,两个值 large, default
    swiperefreshlayout.setsize(swiperefreshlayout.large);
    // 设定下拉圆圈的背景:默认white
    // swiperefreshlayout.setprogressbackgroundcolor(android.r.color.white);
    initdata();
  }
  private void initdata()
  {
    binddata();
    //设置刷新时动画的颜色,可以设置4个
    swiperefreshlayout.setcolorschemeresources(android.r.color.holo_blue_light, android.r.color.holo_red_light, android.r.color.holo_orange_light, android.r.color.holo_green_light);
    swiperefreshlayout.setonrefreshlistener(new swiperefreshlayout.onrefreshlistener() {

      @override
      public void onrefresh() {
        toast.maketext (mainactivity.this,"正在刷新",toast.length_long).show();
        // todo auto-generated method stub
        new handler().postdelayed(new runnable() {

          @override
          public void run() {
            // todo auto-generated method stub
            toast.maketext (mainactivity.this,"刷新完成",toast.length_long).show();
            swiperefreshlayout.setrefreshing(false);
          }
        }, 4000);
      }
    });

  }

  private void binddata(){
    list=new arraylist<>();
    for(int i=0;i<22;i++){
      list.add("item"+(i+1));
    }
    recyclerview.setlayoutmanager(new linearlayoutmanager(this));
    recyclerview.sethasfixedsize(true);
    recyclerview.setitemanimator(new defaultitemanimator());
    menuadapter menuadapter=new menuadapter(this,r.layout.item,list);
    recyclerview.setadapter(menuadapter);
    menuadapter.setonitemclicklistener(new commonrecycleradapter.onitemclicklistener() {
      @override
      public void onitemclick(recyclerview.viewholder viewholder, view view, int position) {

        toast.maketext (mainactivity.this, list.get(position),toast.length_long).show();

      }
    });
  }
}

运行效果如图:

源码点击下载:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网