码迷,mamicode.com
首页 > 其他好文 > 详细

PullToRefreshListView设置标题置顶和下拉跟随

时间:2015-08-28 20:02:45      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

        这几天想着界面的优化,关于PullToRefreshListView标题栏置顶和下拉跟随的效果。这里说说我的大体思路(如果你有跟好的方法,不吝赐教。)在listview的头部添加一个虚拟的headerView(跟标题一样)并设置成INVISIBLE。然后在下拉的时候隐藏标题栏,显示headerView。

        首先看一下PullToRefreshBase的源码。这里是获得PullToRefreshListView下拉的距离(value)。

protected final void setHeaderScroll(int value) {
    if (null != mOnBack) {
        this.value = value;
        mOnBack.OnBack(value);
    }
    if (DEBUG) {
        Log.d(LOG_TAG, "setHeaderScroll: " + value);
    }

    // Clamp value to with pull scroll range
    final int maximumPullScroll = getMaximumPullScroll();
    value = Math.min(maximumPullScroll, Math.max(-maximumPullScroll, value));


这里的距离可以通过mOnBack.OnBack(value);的回调函数得到。在Activity页面中需要实现PullToRefreshBase.OnBack的回调。

refreshListView.setOnBack(this);
@Override
    public void OnBack(int scrollY) {
        mScrollY = scrollY;
        if (scrollY == 0) {
            count++;
        }
        if (count == 2) {
            ll_head.setVisibility(View.VISIBLE);
            headerView.setVisibility(View.INVISIBLE);
            count = 0;
        } else {
            ll_head.setVisibility(View.GONE);
            headerView.setVisibility(View.VISIBLE);
        }
    }

        在这里一次刷新,scroollY会有2次变为0的时候,分别是下拉头部加载布局出现放手时和加载完成时。还一种方法是OnBack和setOnScrollListener结合使用。这种情况就不用判断2次0了。

@Override
public void OnBack(int scrollY) {
    ll_head.setVisibility(View.GONE);
    headerView.setVisibility(View.VISIBLE);
}
 @Override
 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    if (!refreshListView.isHeaderShown()) {
        ll_head.setVisibility(View.VISIBLE);
        headerView.setVisibility(View.INVISIBLE);
    }
}

        这里会有一个bug,就是刷新的时候向上滑动时,标题会跟着一块走了,没有置顶的效果。只有刷新完成时才会有我们自己想要的效果。

        整体感觉还是第一种方法好点。如果你有更好的方法,不吝赐教。继续努力争取解决这个问题。

PullToRefreshListView设置标题置顶和下拉跟随

标签:

原文地址:http://my.oschina.net/u/1471093/blog/498810

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!