《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. Zygote原理学习

    1 zygote分析 1.1 简介 Zygote本身是一个NATIVE层的应用程序,与驱动.内核无关.前面已经介绍过了,zygote由init进程根据init.rc配置文件创建.其实本质上来说,zyg ...

  2. wireshark推荐书籍

    1 wireshark数据包分析实战 有中文版 2 wireshark网络分析 英文版 3 TCP/IP协议栈详解卷一

  3. 数据库操作——pymysql模块

    一 import pymysql conn=pymysql.connect( host='localhost', port=3306, user='zuo', password=', database ...

  4. poj 2724 Purifying Machine

    Purifying Machine Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5408   Accepted: 1575 ...

  5. JSON 序列化与弱类型

    一.C#中JSON序列化有多种方式: 使用“DataContractJsonSerializer ”类时需要, 1.引用程序集 System.Runtime.Serialization 和 Syste ...

  6. app_data中的数据库使用

    原文发布时间为:2008-07-24 -- 来源于本人的百度文章 [由搬家工具导入] ASP.NET中利用VWD操作数据库 建立本地数据库   你可以轻易地在Visual Studio的Web应用程序 ...

  7. php validator classes

    <?php /** * 验证类 */ class Validator { /* 函数名称:isNumber 简要描述:检查输入的是否为数字 输入:string 输出:boolean */ pub ...

  8. Xamarin.Forms特殊的视图BoxView

    Xamarin.Forms特殊的视图BoxView   BoxView是Xamarin.Forms比较特殊的视图.该视图构建非常简单,其作用也很单一.它的作用就是构成一个特定颜色的色块.在界面设计中, ...

  9. gradle_____最后到齐的构建工具

    从今年开始,开始换用gradle 了,个人感觉还好,配置不像maven,一堆xml 文件,一个jar 一行字符,内置的task 和很多.自定义task 也挺简单,比ant简单一些. 简单配置文件示例: ...

  10. Geoserver跨域请求设置

    使用OpenLayers请求GeoServer发布的WFS服务时,如果不是相同的域可能会出现如下问题. 已拦截跨源请求:同源策略禁止读取位于 http://localhost:8080/geoserv ...