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

效果

兴许

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

源代码:

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

源代码分析

兴许有时间更新

SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件的更多相关文章

  1. 分享一个discuz touch端的jQuery下拉刷新组件

    在线Demo 最近装了个discuz论坛, 趣股VIP吧,发现里面内置的jQuery上拉刷新组件写得还行,STATICURL可以用'http://o9gzet7tk.bkt.clouddn.com/i ...

  2. Android内置下拉刷新组件SwipeRefreshLayout

    也许下拉刷新之前,你可能会使用一些第三方的开源库,例如PullToRefresh, ActionBar-PullToRefresh等待,但现在有的正式组成部分---SwipeRefreshLayout ...

  3. Android之SwipeRefreshLayout下拉刷新组件

    SwipeRefreshLayout概述 SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果.该控件集成自ViewGroup在support-v4兼容包 ...

  4. 打造通用的Android下拉刷新组件(适用于ListView、GridView等各类View)

    前言 近期在做项目时,使用了一个开源的下拉刷新ListView组件.极其的不稳定,bug还多.稳定的组件又写得太复杂了,jar包较大.在我的一篇博客中也讲述过下拉刷新的实现,即Android打造(Li ...

  5. Google自己的下拉刷新组件SwipeRefreshLayout

    SwipeRefreshLayout SwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support librar ...

  6. Google官方下拉刷新组件---SwipeRefreshLayout

    今天在Google+上看到了SwipeRefreshLayout这个名词,遂搜索了下,发现竟然是刚刚google更新sdk新增加的一个widget,于是赶紧抢先体验学习下. SwipeRefreshL ...

  7. 基于better-scroll封装一个上拉加载下拉刷新组件

    1.起因 上拉加载和下拉刷新在移动端项目中是很常见的需求,遂自己便基于better-scroll封装了一个下拉刷新上拉加载组件. 2.过程 better-scroll是目前比较好用的开源滚动库,提供很 ...

  8. 一个简单的适用于Vue的下拉刷新,触底加载组件

    一个简单的适用于Vue的上拉刷新,触底加载组件,没有发布npm需要时直接粘贴定制修改即可 <template> <div class="list-warp-template ...

  9. android——官方下拉刷新组件SwipeRefreshLayout(转)

    一.问题描述 在android开发中,使用最多的数据刷新方式就是下拉刷新了,而完成此功能我们使用最多的就是第三方的开源库PullToRefresh.现如今,google也忍不住推出了自己的下拉组件Sw ...

随机推荐

  1. 关于vue构建项目的一些指令

    第一步: brew install nodejs(MAC机子下)  Windows直接官网下载对应版本node.js 第二步: 获取nodejs模块安装目录访问权限(Windows系统忽略)sudo ...

  2. IntelliJ IDEA 2017安装和破解方法

    一,安装 这里是windows下的安装,另外还有mac和linux下的版本,可自行解决 下载并安装IDEA官网:https://www.jetbrains.com/idea/ 或者百度网盘2017版本 ...

  3. java byte

    项目中有段代码,一直让我疑惑不解,但我是个很会偷懒的人,只要拷贝来改改能用的代码,万万不会自己动手写,虽然一直有疑惑,也懒得搭理是怎么个原理. 直到今天,又要解析协议,又要动这个地方的代码,还是来盘他 ...

  4. IDEA SpringBoot项目连接数据库报Acess denied错误解决方法

    详见:https://blog.csdn.net/qq_36324464/article/details/79534605

  5. JAVA学习笔记16——线程生命周期

    当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞(Blocking)和 ...

  6. 【反向并查集、联通图】P1197 [JSOI2008]星球大战

    题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧 ...

  7. acm学习指引

    acm学习心得及书籍推荐   一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第 ...

  8. UVA12118 Inspector's Dilemma(欧拉路径)

    题目: 某个国家有V(V≤1000)个城市,每两个城市之间都有一条双向道路直接相连,长度为T(每条边的长度都是T).你的任务是找一条最短的道路(起点和终点任意), 使得该道路经过E条指定的边.输出这条 ...

  9. IN语句改写EXISTS

    -- IN SELECT T1.* FROM role_menu T1 WHERE T1.ROLEUUID IN ( SELECT T2.uuid FROM role T2 WHERE T2.UUID ...

  10. Ubuntu终端常用的快捷键(转载)

    本文转自:https://www.cnblogs.com/nucdy/p/5251659.html  侵删 Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应 ...