AndroidPullToRefresh拉動效果配置

最近用瞭 開源的 AndroidPullToRefresh 庫,但是發現拉動時的效果有個很奇怪的地方,無論上下拉動,當列表滾動到頂部或底部時,會瞬間彈出半個列表高度的拉動提示,感覺很不舒服,這種提示根本沒必要,太醜瞭,而且可能會導致一些奇怪的小問題,於是查看源碼搞瞭半天終於知道怎麼回事瞭。

不過話說這個庫還是很有名氣的,但是網上真正詳細介紹他的幾乎沒有,中文資料也難找,也許大傢在這上面遇到的問題不多吧~~

下面說說我的總結:

vcD4KPHByZSBjbGFzcz0=”brush:java;”>

1. 設置上下拉兩個事件:

在 XML 中

ptr:ptrMode="both"

在 Java 中

view.setMode(PullToRefreshBase.Mode.BOTH);

註冊上下拉動的自定義事件

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

    @Override
    public void onPullDownToRefresh(PullToRefreshBase refreshView) {
	ZLog.i(TAG, "OnRefreshListener2 onPullDownToRefresh");
	refreshView.onRefreshComplete();
    }
});

這裡使用的是 PullToRefreshBase.OnRefreshListener2() 接口

若是隻有一個方向則把 2 字去掉使用 PullToRefreshBase.OnRefreshListener() 接口

一般下拉觸發事件後會進行一些加載之類的動作,當你的邏輯處理完成後需要回調: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 多一點,但不要設置太大,導致高度過低這樣會影響正常的拉動時顯示的提示的高度

現就這麼多,以後再繼續補充吧~~

發佈留言