下拉刷新PullToRefresh定制

我们使用PullToRefresh库的时候,下拉的level-list以及刷新的帧动画都需要自己定制。如果每次都修改库非常麻烦,特别是一个项目有几个地方用到不同的样式,又不能多次关联同样的库。所以我们要自定义属性,在xml文件中就可以直接设置参数。

具体实现步骤:

1.在父类LoadingLayout中找到显示动画的ImageView控件,此控件自己定义,原来的控件隐藏。

mLoadingImage = (ImageView) mInnerLayout.findViewById(R.id.img_loading);

2.在attrs文件中

<declare-styleable name="PullToRefresh">

<attr name="ptrRefreshDrawable" format="reference" />

<attr name="ptrPullDrawable" format="reference" />

<attr name="ptrTotal" format="integer" />

3.// TODO在子类RotateLoadingLayout

refreshDrawable=attrs.getDrawable(R.styleable.PullToRefresh_ptrRefreshDrawable);

pullDrawable = attrs.getDrawable(R.styleable.PullToRefresh_ptrPullDrawable);

total = attrs.getInteger(R.styleable.PullToRefresh_ptrTotal, total);

4.// TODO 在onPullImpl方法中

int level = (int) (scaleOfLayout >= 1 ? total : scaleOfLayout * total);

if (pullDrawable == null)

{

mLoadingImage.setImageResource(R.drawable.homepage_pull_progresses);

} else

{

mLoadingImage.setImageDrawable(pullDrawable);

}

LevelListDrawable levelList = (LevelListDrawable) mLoadingImage.getDrawable();

levelList.setLevel(level);

5.// TODO 在refreshingImpl中

if (refreshDrawable == null)

{

mLoadingImage.setImageResource(R.drawable.homepage_loading_progressbar);

} else

{

mLoadingImage.setImageDrawable(refreshDrawable);

}

AnimationDrawable drawable = (AnimationDrawable) 6.mLoadingImage.getDrawable();

drawable.start();

// TODO 在resetImpl方法中

if (pullDrawable == null)

{

mLoadingImage.setImageResource(R.drawable.homepage_pull_progresses);

} else

{

mLoadingImage.setImageDrawable(pullDrawable);

}

7.在自己项目里关联库后

<com.handmark.pulltorefresh.library.PullToRefreshListView

android:id="@+id/pull_refresh_list"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

app:ptrPullDrawable="@drawable/homepage_pull_progresses"

app:ptrRefreshDrawable="@drawable/homepage_loading_progressbar"

app:ptrTotal="24" />

备注:参考附件上传的库里RotateLoadingLayout类和LoadingLayout类

时间: 2024-10-26 02:44:09

下拉刷新PullToRefresh定制的相关文章

android控件 下拉刷新pulltorefresh

外国人写的下拉刷新控件,我把他下载下来放在网盘,有时候访问不了github 支持各种控件下拉刷新 ListView.ViewPager.WevView.ExpandableListView.GridView.(Horizontal )ScrollView.Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多.并且他实现的下拉刷新ListView在item不足一屏情况下也不会显示刷新提示,体验更好. 国内网盘地址:http://www.400gb.c

ListView上拉加载,下拉刷新 PullToRefresh的使用

PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListViewExpandableListViewGridViewWebViewScrollViewHorizontalScrollViewViewPager等多种常用的需要刷新的View类型,而且使用起来也十分方便.(下载地址:https://github.com/chrisbanes/Android-PullToRefresh) 使用PullToRefresh,需要导入第三方library 导入方法可以参考我的另一边文章——<

(UWP开发)更为合理的一种ListView下拉刷新(PullToRefresh)实现方法

最近在做的一个项目需要用到下拉刷新,但是参考了现在网络上比较普遍的方法,觉得都不太好,因为要在外部套上一个SrollViewer,容易出现滚动错误.于是刚开始的时候就把思路定到了ListView内部的ScrollViewer上. 最初的想法是在ScrollViewer的Manipulation相关事件上下手,确实做好了,效果也不错,如图: 当时得意满满的看着自己的作品,心里是说不出的激动啊,结果放在手机上想试试触屏设备的效果,结果发现好坑爹:在触屏设备上,手指在ListView的上下滑动默认是移

2.下拉刷新、二维码

下拉刷新 pulltorefresh 支持listview,webview,gridview,expandableListview众多控件 1,lv_list = refreshListView.getRefreshableView();//需要拿到refreshListView这个组合控件里面的具体的listview,才可以设置adapter 2.refreshListView.setRefreshing();//开始加载数据的时候.应该显示.正在刷新 3.refreshListView.on

Android下拉刷新控件SwipeRefreshLayout源码浅析

SwipeRefreshLayout是Android官方的下拉刷新控件,使用简单,界面美观,不熟悉的朋友可以随便搜索了解一下,这里就不废话了,直接进入正题. 这种下拉刷新控件的原理不难,基本就是监听手指的运动,获取手指的坐标,通过计算判断出是哪种操作,然后就是回调相应的接口了.SwipeRefreshLayout是继承自ViewGroup的,根据Android的事件分发机制,触摸事件应该是先传递到ViewGroup,根据onInterceptTouchEvent的返回值决定是否拦截事件的,那么就

使用 CSS overscroll-behavior 控制滚动行为:自定义下拉刷新和溢出效果

CSS 的新属性 overscroll-behavior 允许开发者覆盖默认的浏览器滚动行为,一般用在滚动到顶部或者底部. 背景 滚动边界和滚动链接(boundary & chaining) 在 APP 中经常使用的抽屉导航(drawer)中,我们期望的效果是:滚动到底部时,滚动停止,因为我们到达了"滚动边界". 但是在 Web 页面中滚动并不会停止,而是继续滚动抽屉后面的内容.效果如下: 我们称这种行为叫滚动链接(scroll chaining). 下拉刷新 pull-to-

android开发游记:SpringView 下拉刷新的高效解决方案,定制你自己风格的拖拽页面

关于下拉刷新/上拉加载更多的解决方案网上已经有很多了,浏览了目前主流的下拉控件比如PullToRefresh库等,第一:大多数实现库都难以进行动画和样式的自定义.第二:不能很好的兼容多种滚动控件,它们都对listView.RecyclerView等进行了不同程度的重新实现,你在项目中就得使用库提供的PullToRefreshListView.PullToRefreshRecyclerView等来代替源生的listView.RecyclerView等,这样的方式其实并不好,随着android版本的

Android下拉刷新控件--PullToRefresh的简单使用

Android中很多时候都会用到上下拉刷新,这是一个很常用的功能,Android的v4包中也为我们提供了一种原生的下拉刷新控件--SwipeRefreshLayout,可以用它实现一个简洁的刷新效果,但今天我们的主角并不是它,而是一个很火的第三方的上下拉刷新控件--PullToRefresh.PullToRefresh包括PullToRefreshScrollView.PullToRefreshListView.PullToRefreshGridView等等很多为我们提供的控件,我们可以在xml

Android PullToRefresh(下拉刷新)的使用详解

开源项地址:https://github.com/chrisbanes/Android-PullToRefresh 在Android-PullToRefresh-master文件夹下,我们会看到还有三个文件夹:extras, library,sample.其中sample就是作者为我们提供的Demo,library是我们在使用Sample必须用到的jar.extras中是使用ListFragment和ViewPage用到的jar. 里面有三个库工程分别导入到eclipse中: 最主要的还是lib