zoukankan      html  css  js  c++  java
  • SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件

    SuperSwipeRefreshLayout

    一个功能强大的自己定义下拉刷新组件。

    Why?

    下拉刷新这样的控件。想必大家用的太多了,比方使用非常多的XListView等。

    近期。项目中非常多列表都是使用ReyclerView实现的。取代了原有的ListView,原有下拉刷新方式遭到挑战。本来Google推出的SwipeRefreshLayout已经能够满足大部分的需求了。

    然而,因为其定制性较差。下拉刷新的样式无法改动。并且被嵌套的View也无法尾随手指的滑动而滑动。基于以上考虑,定制自己强大的SuperSwipeRefreshLayout。

    Feature

    • 非侵入式。对原来的ListView、RecyclerView没有不论什么影响,使用方法和SwipeRefreshLayout相似。


    • 可自己定义头部View的样式。调用setHeaderView方法就可以
    • 支持很多其它:RecyclerView,ListView,ScrollView。GridView等等。


    • 被包括的View(RecyclerView,ListView etc.)可尾随手指的滑动而滑动
      默认是尾随手指的滑动而滑动。也能够设置为不尾随:setTargetScrollWithLayout(false)
    • 回调方法很多其它
      比方:onRefresh() onPullDistance(int distance)和onPullEnable(boolean enable)
      开发者能够依据下拉过程中distance的值做一系列动画。

    How to use

    step 1

    <net.mobctrl.views.SuperSwipeRefreshLayout
            android:id="@+id/swipe_refresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
    </net.mobctrl.views.SuperSwipeRefreshLayout>

    step 2

    
    swipeRefreshLayout = (SuperSwipeRefreshLayout) findViewById(R.id.swipe_refresh);
            swipeRefreshLayout.setHeaderView(createHeaderView());// add headerView
            swipeRefreshLayout
                    .setOnPullRefreshListener(new OnPullRefreshListener() {
    
                        @Override
                        public void onRefresh() {
                            //TODO 開始刷新
                        }
    
                        @Override
                        public void onPullDistance(int distance) {
                            //TODO 下拉距离
                        }
    
                        @Override
                        public void onPullEnable(boolean enable) {
                            //TODO 下拉过程中,下拉的距离是否足够出发刷新
                        }
                    });
    

    step 3

    • create your header view
    swipeRefreshLayout.setHeaderView(createHeaderView());// add headerView
    
    /**
     * create Header View
     */
    private View createHeaderView(){
       //TODO 创建下拉刷新头部的View样式
    }

    跟手滑动设置

    • setTargetScrollWithLayout(false/true);//default true
    swipeRefreshLayout.setTargetScrollWithLayout(true);

    Support View

    • RecyclerView.
    • ListView
    • SrcollView
    • GridView
    • etc.

    Demo

    效果
    demo

    兴许

    如有必要,能够添加上拉载入很多其它的功能。

    源代码:

    Github https://github.com/nuptboyzhb/SuperSwipeRefreshLayout

    源代码分析

    兴许有时间更新

  • 相关阅读:
    Centos-706停用firewalld启用Iptables服务
    apache访问日志分析[转]
    apache日志管理【转】
    [转]如何使用PHP实现javascript的escape和unescape函数
    [转]linux下centos服务器安全设置
    [转]sysctl -P 报错解决办法
    [转]解决error: "net.ipv4.netfilter.ip_conntrack_max" is an unknown key错误
    [转]CentOS Apache 性能调试!
    [转]怎么查看和修改 MySQL 的最大连接数?
    [转]同一台Windows机器中启动多个Memcached服务
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7141944.html
Copyright © 2011-2022 走看看