• AndroidPullToRefresh拉动效果配置


    最近用了 开源的 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 多一点,但不要设置太大,导致高度过低这样会影响正常的拉动时显示的提示的高度



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






  • 相关阅读:
    BE Learing 2 名词解释
    mysql学习笔记(二)之一个粗心的问题
    Struts2/XWork < 2.2.0远程执行任意代码漏洞分析及修补
    DataReceivedEventHandler 委托
    JS数组方法汇总 array数组元素的添加和删除
    jQuery学习总结(一)
    js的lock
    mysql学习笔记(一)之mysqlparameter
    Time Span Attack
    Web Vulnerability Scanner 7.0 Patch for 2010_09_21_01
  • 原文地址:https://www.cnblogs.com/zhouzme/p/5758457.html
Copyright © 2020-2023  润新知