最近用了 开源的 AndroidPullToRefresh 库,但是发现拉动时的效果有个很奇怪的地方,无论上下拉动,当列表滚动到顶部或底部时,会瞬间弹出半个列表高度的拉动提示,感觉很不舒服,这种提示根本没必要,太丑了,而且可能会导致一些奇怪的小问题,于是查看源码搞了半天终于知道怎么回事了。

不过话说这个库还是很有名气的,但是网上真正详细介绍他的几乎没有,中文资料也难找,也许大家在这上面遇到的问题不多吧~~

下面说说我的总结:

<?xml version="1.0" encoding="utf-8"?>
<com.handmark.pulltorefresh.library.PullToRefreshListView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/diaryListCt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:divider="@null"
android:dividerHeight="6dp"
android:headerDividersEnabled="true"
android:footerDividersEnabled="true"
android:fadingEdge="none"
android:cacheColorHint="@android:color/transparent"
ptr:ptrMode="both"
ptr:ptrOverScroll="true"
>
</com.handmark.pulltorefresh.library.PullToRefreshListView>

1. 设置上下拉两个事件:

在 XML 中

ptr:ptrMode="both"

在 Java 中

view.setMode(PullToRefreshBase.Mode.BOTH);

注册上下拉动的自定义事件

pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
ZLog.i(TAG, "OnRefreshListener2 onPullUpToRefresh");
diaryList.loadNext();
} @Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
ZLog.i(TAG, "OnRefreshListener2 onPullDownToRefresh");
refreshView.onRefreshComplete();
}
});

这里使用的是 PullToRefreshBase.OnRefreshListener2<ListView>() 接口

若是只有一个方向则把 2 字去掉使用 PullToRefreshBase.OnRefreshListener<ListView>() 接口

一般下拉触发事件后会进行一些加载之类的动作,当你的逻辑处理完成后需要回调:onRefreshComplete(); 方法,表示当前事件已完全结束,此时拉动加载中的提示才会消失。

提示:

这里有个需要注意的地方,如果使用的是 ListView 的拉动效果则该布局产生的对象本省并不是 ListView ,而是程序内部动态生成了一个 ListView 实例,若要获取真正的 ListView 对象则需要使用一个方法来获取

ListView listView = pullTorefreshView.getRefreshableView();

2. 去除滚动到顶部或底部时弹出拉动加载更多的提示窗口

主要是我自己觉得不太好看,要解决这个问题有两个办法:不显示 | 缩短高度 或 横向时的宽度

看了半天源码之后才发现其方法的具体作用,老外的东西只看方法名很多时候搞不清楚究竟是干嘛用的,

ptr:ptrOverScroll="false"
view.setPullToRefreshOverScrollEnabled(false);

上面是通过 xml 配置 和 java 中的配置方法,当设置为 false 时就不会再弹出那个提示了

缩短提示框的方法:

在库文件 PullToRefreshBase.java 中有个常量设置

此处代码:

static final float FRICTION = 2.0f;

其中 2.0f 表示弹出框的高度为ListView 是屏幕上的可视区域高度的一半,即 screenHeight / 2,是按照一个比例来的,你可以增大这个值,设置为 5 则是 屏幕的 1/5 多一点,但不要设置太大,导致高度过低这样会影响正常的拉动时显示的提示的高度

现就这么多,以后再继续补充吧~~

AndroidPullToRefresh拉动效果配置的更多相关文章

  1. android -------- 颜色的半透明效果配置

    最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有:  RGB    ARGB    RRGGBB   AA ...

  2. android 控件各种颜色的半透明效果配置

    格式: android:background="#XXxxxxxx"(颜色可以写在color中) 说明:半透明颜色值不同于平时使用的颜色,半透明颜色值共8位,前2位是透明度,后6位 ...

  3. iOS7之定制View Controller切换效果

    在iOS5和iOS6前,View Controller的切换主要有4种: 1. Push/Pop,NavigationViewController常干的事儿 2. Tab,TabViewControl ...

  4. 将archlinux 2013-06-01版,安装配置为个人工作站

    本文安装所使用的镜像为:archlinux-2013.06.01-dual.iso.首先请看看我安装完成之后的效果.图一,是第一个虚拟桌面及右键菜单图: 图二,是第二个虚拟桌面效果图.后几个虚拟桌面图 ...

  5. sharepoint 2013 列表和库标签 元数据导航配置(2)

    接前面提到的,如何创建一个术语库.sharepoint 2013 列表和库标签 元数据导航配置(1), 现在要做的,就是如何在自定义或者文档库中使用这个术语库,实现标签功能,通过这些标签,找到对应的文 ...

  6. canvas三角函数模拟水波效果

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  7. log4j配置输出到多个日志文件

    通常我们项目里,有一些重要的日志想单独的输出到指定的文件,而不是全总输出到系统的日志文件中.那么我们log4j为我们提供了这种功能,以下我们来一步一步看是怎么做的.这里以property的配置方式写. ...

  8. linux配置powerline(bash/vim)美化

    安装powerline需要pip 链接:https://pan.baidu.com/s/1Jc59VD35PYic2fTK5v8h1w 密码:otfp pip curl https://bootstr ...

  9. [转]解决阿里云mysql不能连接,配置mysql远程连接

    默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log 首先登录: mysql -u root -h local ...

随机推荐

  1. IIS配置PHP环境

    IIS配置PHP环境(快速最新版)(转载+自创) (参考转载的) 我们知道php配置有几种: 1.CGI方式加载PHP环境,通常就是IIS里面配置解释器为php.exe,早期比较常见,目前使用较少.  ...

  2. Leetcode: UniquePath II

    Description: Follow up for "Unique Paths": Now consider if some obstacles are added to the ...

  3. picker控件详解与使用,(实现省市的二级联动)

    picker控件详解与使用,(实现省市的二级联动) 第一步:新建一个单视图(single view)的工程, 命名为pickerTest,不要勾选下面两个选项,第一个是新版本里面的,第二个是单元测试, ...

  4. opengl离屏渲染(不需要和窗口绑定,仅当作一个可以渲染一张图片的API使用)+ opencv显示

    具体过程参考的是这篇BLOG: http://wiki.woodpecker.org.cn/moin/lilin/swig-glBmpContext 这一片BLOG的代码有个 BOOL SaveBmp ...

  5. 更有效率的使用Visual Studio2

    PS色调均化滤镜的快捷实现(C#源代码). photoshop色调均化功能通常是在进行修片处理前期比较常用的功能之一,其对扩展图像的对比度,增强视觉效果有一定的作用.在很多课本或者文章中,也称这种处理 ...

  6. python email ==> send 发送邮件 :) [smtplib, email 模块]

    关于Email的预备知识: 原贴地址:http://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2343480.html ############ ...

  7. 【Chrome】如何在C++中增加给JavaScript调用的API

    本文示例说明了如何在Chrome浏览器中增加JavaScript API.为了简化,先假设是在已有的namespace中增加一个新的API,文章的最后将指出如果增加一下全新的namespace所需注意 ...

  8. Cloudera Development Kit(CDK) 简介

    Cloudera Development Kit(CDK) 简介 guibin.beijing@gmail.com 2013.07.02 CDK简介 CDK(Cloudera Development ...

  9. Python自学笔记——Matplotlib风羽自定义

    [前言]对于气象专业的小学生来说,风场是预报重要的参考数据,我们所知的风羽有四种:短线代表风速2m/s,长线代表风速4m/s,空心三角代表风速20m/s,实心三角代表风速50m/s.而matplotl ...

  10. C语言之逻辑运算符

    一 逻辑运算符: &&:逻辑与,读作并且 表达式左右两边都为真,那么结果才为真 口诀:一假则假 ||:逻辑或,读作或者 表达式左右两边,有一个为真,那么结果就为真 口诀:一真则真 !: ...