《20160930—————————–更新内容

回过头看自己曾经写的这个博客非常多的废话 和效果并不适合大家去使用这个好用的控件 如今整理删掉了自己写的效果, 写了个最简单的实例给一起学习的新手。并附送最精简写法的demo 直接给大家最想要的东西,以下的废话 没空就不用看了哈

核心是能够包裹随意view刷新。

不须要原view能滚动,比谷歌自带的范围更广一些

先看效果

下载实例

相关Demo module免费下载

JAVA

package com.rex;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast; import com.aspsine.swipetoloadlayout.OnLoadMoreListener;
import com.aspsine.swipetoloadlayout.OnRefreshListener;
import com.aspsine.swipetoloadlayout.SwipeToLoadLayout; /**
* 用于swipetoloadlayout的demo演示
*/
public class MainActivity extends AppCompatActivity { private SwipeToLoadLayout swipeToLoadLayout; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
swipeToLoadLayout = (SwipeToLoadLayout) findViewById(R.id.swipeToLoadLayout);
HeaderView swipe_refresh_header = (HeaderView) findViewById(R.id.swipe_refresh_header);
FooterView swipe_load_more_footer = (FooterView) findViewById(R.id.swipe_load_more_footer); swipeToLoadLayout.setRefreshHeaderView(swipe_refresh_header);
swipeToLoadLayout.setLoadMoreFooterView(swipe_load_more_footer);
//加入过渡滑动 其它设置 自己依据英文尝试吧
swipeToLoadLayout.setRefreshCompleteDelayDuration(2000); swipeToLoadLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
Toast.makeText(MainActivity.this, "OnRefreshListener!", Toast.LENGTH_SHORT);
swipeToLoadLayout.setRefreshing(false);//收头
}
});
swipeToLoadLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore() {
Toast.makeText(MainActivity.this, "OnLoadMoreListener!", Toast.LENGTH_SHORT);
swipeToLoadLayout.setLoadingMore(false);
}
});
}
}
package com.rex;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView; import com.aspsine.swipetoloadlayout.SwipeRefreshTrigger;
import com.aspsine.swipetoloadlayout.SwipeTrigger; /**
* Created by Rex on 2016/9/30.
* 是不是LinearLayout都无所谓 你能够用你喜欢的形式
*/
public class HeaderView extends LinearLayout implements SwipeRefreshTrigger, SwipeTrigger { private TextView tvStatus; public HeaderView(Context context) {
this(context, null, 0);
} public HeaderView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
} public HeaderView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
} private void init() {
//这个view随意定义 //这里的原理就是简单的动态布局加入
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
View view = View.inflate(getContext(), R.layout.header, null);
addView(view, lp); tvStatus = (TextView) view.findViewById(R.id.tvTest);
} @Override
public void onRefresh() {
tvStatus.setText("onRefresh");
} @Override
public void onPrepare() {
tvStatus.setText("onPrepare");
} @Override
public void onSwipe(int i, boolean b) {
tvStatus.setText("onSwipe" + i);
} @Override
public void onRelease() {
tvStatus.setText("onRelease");
} @Override
public void complete() {
tvStatus.setText("complete");
} @Override
public void onReset() {
tvStatus.setText("測试測试");
} }

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.rex.MainActivity"> <com.aspsine.swipetoloadlayout.SwipeToLoadLayout
android:id="@+id/swipeToLoadLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
> <com.rex.HeaderView
android:id="@+id/swipe_refresh_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> <TextView
android:id="@+id/swipe_target"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#c3c9"
android:gravity="center"
android:text="包裹想被刷新的随意View"/> <com.rex.FooterView
android:id="@+id/swipe_load_more_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> </com.aspsine.swipetoloadlayout.SwipeToLoadLayout>
</RelativeLayout>

20160930—————————–更新内容》

//旧博客

開始鼠标两次点到标题栏了。

哈哈 刷新本身还是非常流畅的

引言:

从开发到如今肯定是想弄一套适合自己的刷新的控件,最開始一直用的pulltorefresh。只是 不知道是我使用问题还是本身有问题。刷新过快就会卡主等一些小bug,然后是每一个控件都是自己定义的。渐渐的想用写的样式了。

由于自己水平非常low写出来的也非常low所以还是想着用框架。

然后转Android studio后接触到了Google自带的SwipeRefreshLayout,包裹须要刷新的view 刷新样式也非常新颖。但样式局限,子布局还一定得自身是能够滑动的布局,还没提供上拉载入的效果,SwipeRefreshLayout竟然和自家RecyclerView冲突。

可是这样的包裹须要刷新的view实在是不错的设定,所以我就在找有没有带着这个长处。又还有其它特色如自己定义头尾部非常方便的。

    最终我找到了[swipetoloadlayout](https://github.com/Aspsine/SwipeToLoadLayout)
他以下三哥们为基础

Google SwipeRefreshLayout

liaohuqiu android-Ultra-Pull-To-Refresh

Yalantis Phoenix

所以有SwipeRefreshLayout喜欢的部分。

1.支持上下拉,头部和尾部也都是用接口实现可塑造性高,多种流行下拉方式

2.包裹其它须要刷新的View就可以

3.设定了一下刷完完毕自己定义 释放后的缓缓滑动 更加流畅

说了半天废话我还是来讲我摸索到的使用方法。

为什么要说摸索。由于我一開始都不知道怎么把头部收回去…通常是complete啊 finish什么的。结果我试了半天。

直接说我搜出来加摸索的详细详尽使用方法了。

1、怎样集成

注意 都是写在你module的gradle 里面

Step 1. Add the JitPack repository in your build.gradle at the end of repositories:

repositories {

maven { url “https://jitpack.io” }

}

Step 2. Add the dependency in the form

dependencies {

compile ‘com.github.Aspsine:SwipeToLoadLayout:v1.0.0’

}

SwipeToLoadLayout往后更新了两个版本号,你们也能够用新的。

这个版本号就是你sdk要更新到23,不然会缺省一些主题等value的值

2.開始自己定义刷新效果

swipeToLoadLayout提供了一套接口。刷新的头部自己定义一个View实现SwipeTrigger和SwipeRefreshTrigger就可以了,刷新的尾部自己定义一个View实现SwipeLoadMoreTrigger和SwipeTrigger。头部实现代码:

我搜到的是一个Textview作为头部 所以远远不能满足我要的自己定义。

所以这里给上我的自己定义头部,由于设计到一些效果。大家能够理解了换成一些简单的控件就可以

也就是说LinearLayout你能够换成不论什么View 成为你的头布局。

3.详细使用方法

按例如以下固定写法3个id固定就可以。第一个id不须要是固定的。但写成了固定方便初始化 见2中方法initSwipe

注意。swipetoloadlayout中布局包裹的View id是指定的,不能乱改。否则找不到

Add a comment to this line

swipe_target” type=”id” 刷新目标

swipe_refresh_header” type=”id” 刷新头部

swipe_load_more_footer” type=”id” 刷新尾部

3.1首先 xml文件里`


3.2 Java代码中

“`

第一次写博客 比較啰嗦,但这刷新控件确实不错。建议大家先改成简单的头布局试一下,大家能够看此链接SwipeToLoadLayout–小白也能轻松定制自己的刷新效果,我也是看到了这个。才開始去使用,假设想着自己定义略微复杂的控件和使用能够跟我探讨更好的方法。

脚布局也是一个逻辑哦。认真看的说明是绝对能够写出自己相应的。

须要的demo的留言我以后传。

我这里面加了几个自己定义控件。

大家能够用一个简单的textview试试。

下拉刷新swipetoloadlayout的使用方法,以及自己定义头部的更多相关文章

  1. 上拉刷新和下拉刷新的两种方法(包括使用第三方库MJRefresh)

    一.使用苹果原生的方法 1.下拉刷新 2.上拉刷新 (1 首先要新建一个footer得XIB文件,当然同时包括对应的控制器文件,例如在XIB文件中可以如下拖拉对应的控件 (2 然后在代码文件中写一个实 ...

  2. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  3. Android—自定义控件实现ListView下拉刷新

    这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家): 首先下拉未松手时候手机显示这样的界面: 下面的 ...

  4. android SwipeRefreshLayout google官方下拉刷新控件

    下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...

  5. Android 使用PullToRefresh实现下拉刷新和上拉加载(ExpandableListView)

    PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的Vie ...

  6. 使用PullToRefresh实现下拉刷新和上拉加载

    使用PullToRefresh实现下拉刷新和上拉加载 分类: Android2013-12-20 15:51 78158人阅读 评论(91) 收藏 举报 Android下拉刷新上拉加载PullToRe ...

  7. Android自定义控件之仿美团下拉刷新

    美团的下拉刷新分为三个状态: 第一个状态为下拉刷新状态(pull to refresh),在这个状态下是一个绿色的椭圆随着下拉的距离动态改变其大小. 第二个部分为放开刷新状态(release to r ...

  8. ios---运用MJRefresh组件设置下拉刷新

    #import "XMGTopicViewController.h" #import <AFNetworking.h> #import <MJExtension. ...

  9. thinkphp apicloud 下拉刷新 。。。由于新人里面导入了vue.js

    //刷新 apiready = function(){ var count; var i= 1; var param = {}; toDoRequest(); param.loadingImgae = ...

随机推荐

  1. Keepalived+NFS+SHELL脚本实现NFS-HA高可用

    本来想做DRBD+HEARTBEAT,但是领导说再加硬盘浪费资源,没有必要,而且在已有硬盘上做风险较大,所以就只能用rsync来实现数据同步了,实验中发现很多的坑,都用脚本和计划任务给填上了,打算把这 ...

  2. luoguP1040 区间DP(记忆化 加分二叉树

    dp[l][r]记录中序序列为l, l+1..r的最大加分值 root[l][r]记录这个序列的根节点 转移 i 为根节点 dp[l][r] = max(dp[l][i-1]*dp[l+1][r]+a ...

  3. CodeForces 97D. Robot in Basement

    time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standa ...

  4. 标准C程序设计七---111

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  5. 在 POSIX 线程编程中避免内存泄漏

    检测和避免 POSIX 线程内存泄漏的技巧 POSIX 线程(pthread)编程定义了一套标准的 C 编程语言类型.函数和常量 — 且 pthreads 提供了一种强大的线程管理工具.要充分使用 p ...

  6. python pyd 加密相关

    Dockerfile RUN 同时执行多条命令 Dokcerfile中的命令每执行一条即产生一个新的镜像,当前命令总是在最新的镜像上执行.如下Dockerfile: RUN cd /usr/share ...

  7. AC日记——图灵机游戏 codevs 2292

    2292 图灵机游戏  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description [Shadow 1]第二题 ...

  8. js-数字渐增到指定的数字,在指定的时间内完成(有动画效果哦)插件jquery.animateNumber.js

    本来在项目中我自己实现的效果是数字由0渐增到指定的数字就好. 但是,最终效果不理想! Why? 最终指定的数字太大了,TMMD,滚动好久就不到,那用户想看自己有多少钱了,那不是就一直等着!!!所以这个 ...

  9. 小程序 之登录 wx.login()

    小程序的登录关键在于使用wx.login()方法后,要到取到code值传到后台, 再用小程序平台本帐号生成的appid+addsecret+code去微信接口服务取得用户唯一标识后即可登录[注意:此步 ...

  10. JVM 常量池

    最近正好在研究这个问题,题主问题本身是有问题的,在JDK7中HotSpot的常量池是放在Java Heap中,并非题目中的native memory中.在JDK6中是放在Perm Space.题主可以 ...