下拉刷新swipetoloadlayout的使用方法,以及自己定义头部
《20160930—————————–更新内容
回过头看自己曾经写的这个博客非常多的废话 和效果并不适合大家去使用这个好用的控件 如今整理删掉了自己写的效果, 写了个最简单的实例给一起学习的新手。并附送最精简写法的demo 直接给大家最想要的东西,以下的废话 没空就不用看了哈
核心是能够包裹随意view刷新。
不须要原view能滚动,比谷歌自带的范围更广一些
先看效果
下载实例
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的使用方法,以及自己定义头部的更多相关文章
- 上拉刷新和下拉刷新的两种方法(包括使用第三方库MJRefresh)
一.使用苹果原生的方法 1.下拉刷新 2.上拉刷新 (1 首先要新建一个footer得XIB文件,当然同时包括对应的控制器文件,例如在XIB文件中可以如下拖拉对应的控件 (2 然后在代码文件中写一个实 ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- Android—自定义控件实现ListView下拉刷新
这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家): 首先下拉未松手时候手机显示这样的界面: 下面的 ...
- android SwipeRefreshLayout google官方下拉刷新控件
下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...
- Android 使用PullToRefresh实现下拉刷新和上拉加载(ExpandableListView)
PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的Vie ...
- 使用PullToRefresh实现下拉刷新和上拉加载
使用PullToRefresh实现下拉刷新和上拉加载 分类: Android2013-12-20 15:51 78158人阅读 评论(91) 收藏 举报 Android下拉刷新上拉加载PullToRe ...
- Android自定义控件之仿美团下拉刷新
美团的下拉刷新分为三个状态: 第一个状态为下拉刷新状态(pull to refresh),在这个状态下是一个绿色的椭圆随着下拉的距离动态改变其大小. 第二个部分为放开刷新状态(release to r ...
- ios---运用MJRefresh组件设置下拉刷新
#import "XMGTopicViewController.h" #import <AFNetworking.h> #import <MJExtension. ...
- thinkphp apicloud 下拉刷新 。。。由于新人里面导入了vue.js
//刷新 apiready = function(){ var count; var i= 1; var param = {}; toDoRequest(); param.loadingImgae = ...
随机推荐
- 理解 Glance
OpenStack 由 Glance 提供 Image 服务. 理解 Image 要理解 Image Service 先得搞清楚什么是 Image 以及为什么要用 Image? 在传统 IT 环境下, ...
- HibernateException: No Hibernate Session bound to thread
解决No Hibernate Session bound to thread 背景交代 在使用this.getHibernateTemplate().getSessionFactory().getCu ...
- Unity3d Inspector面板实现set/get访问器
简单说一下属性和字段的区别:字段就是成员变量,而属性确实提供给外部访问内部成员变量的接口.之所以会有属性的出现,就是为了避免外部对类的成员的直接访问,通俗的说就是OOP中的封装思想. using Un ...
- bzoj 1552: [Cerc2007]robotic sort
1552: [Cerc2007]robotic sort Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1198 Solved: 457[Submit] ...
- AC自动机(加强版)
题目描述 有NN个由小写字母组成的模式串以及一个文本串TT.每个模式串可能会在文本串中出现多次.你需要找出哪些模式串在文本串TT中出现的次数最多. 输入输出格式 输入格式: 输入含多组数据. 每组数据 ...
- 用hashmap实现自己的缓存
@SuppressWarnings({"unchecked", "rawtypes"})public class DefaultCache implements ...
- Android Studio apk 打包流程(转)http://blog.chinaunix.net/uid-26000296-id-5567890.html
1.Build -> Generate Signed APK...,打开如下窗口 2.假设这里没有打过apk包,点击Create new,窗口如下 这里只要输入几个必要项 Key store p ...
- 【swagger】2.swagger提供开发者文档--返回统一格式篇【spring mvc】【spring boot】
接着上一篇来说, 不管正常返回结果还是后台出现异常,应该返回给前台统一的响应格式. 所以这一篇就为了应对解决这个问题. ======================================== ...
- 深入Android渲染机制
1.知识储备 CPU: 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps.Drawables等都是一起打包到统一的纹理). GPU:一个类似于 ...
- linux 中两个文档怎么对比内容是否一致
可以用diff命令对比文档内容.[语法]: diff [参数] 文件1 文件2[说明]: 本命令比较两个文本文件,将不同的行列出来-b 将一串空格或TAB 转换成一个空格或TAB-e 生成一个编辑角本 ...