`
切切歆语
  • 浏览: 30204 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论

Android之SwipeRefreshLayout下拉刷新组件

 
阅读更多

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();

            }
        });
    }
}

运行效果如图:


源码点击下载


分享到:
评论

相关推荐

    Android SwipeRefreshLayout下拉刷新加载WebView网页

    SwipeRefreshLayout字面意思就是下拉... 提到下拉刷新大家一定对ActionBarPullToRefresh比较熟悉,而如今google推出了更官方的下拉刷新组件,这无疑是对开发者来说比较好的消息。本Demo是从本人项目中提取,可直接运行

    Android官方下拉刷新组件——swipeRefreshLayout

    在Android开发中,`SwipeRefreshLayout`是Google官方提供的一款用于实现下拉刷新功能的组件,它使得用户可以通过从顶部向下滑动来触发刷新操作。这个组件通常与`RecyclerView`或`ListView`等滚动视图结合使用,以...

    SwipeRefreshLayout Android系统自带下拉刷新demo

    在Android开发中,`SwipeRefreshLayout` 是一个非常重要的组件,它是Android SDK中内置的一个控件,主要用于实现下拉刷新的功能。这个控件的设计目的是让用户在查看列表或网格内容时能够轻松地更新数据。下面我们将...

    google推出的SwipeRefreshLayout下拉刷新用法

    SwipeRefreshLayout是Google在Android Support Library中推出的一个组件,主要用于实现下拉刷新的功能。这个组件使得开发者可以轻松地在ListView、RecyclerView等滚动视图上添加一个可下拉刷新头部,为用户提供了...

    Android SwipereFreshLayout下拉刷新

    SwipereFreshLayout 正是 Material Design 中的一个组件,提供了简洁、实用的下拉刷新功能。 使用 SwipereFreshLayout 下拉刷新需要添加对应的库,具体来说是添加 support-v4 库。在 build.gradle 文件中添加以下...

    下拉刷新与上拉加载更多SwipeRefreshLayout

    "下拉刷新与上拉加载更多SwipeRefreshLayout"是Android SDK提供的一种组件,用于实现这两种操作,为用户提供更加流畅的数据获取体验。本文将深入探讨这一组件的工作原理、使用方法及其扩展——...

    Android SwipeRefreshLayout下拉刷新组件示例

    在Android开发中,SwipeRefreshLayout是一个非常重要的组件,它为开发者提供了下拉刷新功能,使得用户能够轻松地更新列表或视图中的内容。这个组件是Google在Android support library中提供的,它允许你在XML布局中...

    Android SwipeRefreshLayout下拉刷新源码解析

    本文实例为大家分享了SwipeRefreshLayout下拉刷新源码,供大家参考,具体内容如下 1.SwipeRefreshLayout是Google在support v4 19.1版本的library更新的一个下拉刷新组件,实现刷新效果更方便。 弊端:只有下拉 //...

    Android 开源的下拉刷新 Eclipse版本

    在这个开源项目中,它可能包含了如何使用这些下拉刷新组件的示例代码,帮助开发者了解如何在自己的应用中集成和使用这些组件。 七、集成和使用 在Eclipse中,开发者需要将提供的库导入到项目中,然后在需要下拉刷新...

    RecyclerView SwipeRefreshLayout 下拉刷新 上拉加载

    而`SwipeRefreshLayout`则实现了下拉刷新的功能,让用户可以轻松获取最新数据。 `RecyclerView`详解: `RecyclerView`是一个可滚动的视图容器,用于显示大量数据集合。它通过`ViewHolder`模式提高了性能,避免了...

    Android开发丶谷歌官方刷新控件SwipeRefreshLayout下拉刷新的实现和上拉加载的拓展

    通过以上方式,我们可以将SwipeRefreshLayout从单纯的下拉刷新控件拓展为既能下拉刷新又能上拉加载的组件。这种设计提高了应用的可复用性和用户体验,使得用户在查看内容时更加便捷。在实际项目中,可以根据具体需求...

    安卓Android源码——下拉刷新控件(ListView好ScrollView版).rar

    - 首先,在布局文件中添加SwipeRefreshLayout或自定义的下拉刷新组件。 - 然后,设置刷新监听器,如`SwipeRefreshLayout.OnRefreshListener`,并在`onRefresh()`方法中执行数据更新操作。 - 最后,根据数据加载的...

    SwipeRefreshLayout 下拉刷新、加载更多、分页索引功能

    在Android开发中,`SwipeRefreshLayout` 是一个非常重要的组件,它为用户提供了下拉刷新的功能,常见于新闻应用、社交应用等需要实时更新内容的场景。这个组件是Android Support Library的一部分,可以方便地与诸如`...

    Google官方下拉刷新组件SwipeRefreshLayout(Google最新控件)

    **谷歌官方下拉刷新组件SwipeRefreshLayout详解** 在Android开发中,提供流畅的用户体验是至关重要的,其中下拉刷新功能已经成为许多应用的标准特性。Google官方为了方便开发者实现这一功能,推出了...

    RecyclerView SwipeRefreshLayout 下拉刷新 加载更多

    总之,"RecyclerView SwipeRefreshLayout 下拉刷新 加载更多"项目涵盖了Android开发中的多个重要知识点,包括RecyclerView的使用、SwipeRefreshLayout的集成、Volley的网络请求以及加载更多的实现。这些技术都是...

    Android自带下拉刷新的代码例子

    总结一下,`SwipeRefreshLayout`是Android原生提供的一个强大的下拉刷新组件,它可以轻松地与滚动视图配合使用,提供一致的用户体验。通过设置监听器和自定义刷新逻辑,你可以轻松地将下拉刷新功能集成到自己的应用...

    SwipeRefreshLayout android下拉刷新控件

    SwipeRefreshLayout是Android开发中一个非常重要的组件,由谷歌官方推出,旨在简化应用中下拉刷新功能的实现。这个控件的出现,使得开发者无需再花费大量时间去自定义复杂的下拉刷新动画,大大提升了开发效率。它...

Global site tag (gtag.js) - Google Analytics