打造android万能上拉下拉刷新框架——XRefreshView (二)


打造Android万能上拉下拉刷新框架--XRefreshView(一)

打造Android万能上拉下拉刷新框架--XRefreshView(三)


一、前言

       自从上次发表了打造android万能上拉下拉刷新框架——XRefreshView (一)之后,期间的大半个月一直都很忙,但是我每天晚上下班以后都有在更新和维护XRefreshView,也根据一些朋友的意见解决了一些问题,这次之所以写这篇文章,是因为XRefreshView已经到了一个功能相对可靠和稳定的一个阶段。下面我会介绍下XrefreshView的最新功能和用法,以及实现的主要思路。

二、更新

2.1判断下拉上拉刷新时机方式的修改

之前是通过 refreshView.setRefreshViewType(XRefreshViewType.ABSLISTVIEW);这样来预先设置view的类型来选择对应判断时机的方法,现在已经不用这样做了,改成了下面这样。

/**
	 * @return Whether it is possible for the child view of this layout to
	 *         scroll up. Override this if the child view is a custom view.
	 */
	public boolean canChildPullDown() {
		if (child instanceof AbsListView) {
			final AbsListView absListView = (AbsListView) child;
			return canScrollVertically(child, -1)
					|| absListView.getChildCount() > 0
					&& (absListView.getFirstVisiblePosition() > 0 || absListView
							.getChildAt(0).getTop() < absListView
							.getPaddingTop());
		} else {
			return canScrollVertically(child, -1) || child.getScrollY() > 0;
		}
	}

	public boolean canChildPullUp() {
		if (child instanceof AbsListView) {
			AbsListView absListView = (AbsListView) child;
			return canScrollVertically(child, 1)
					|| absListView.getLastVisiblePosition() != mTotalItemCount - 1;
		} else if (child instanceof WebView) {
			WebView webview = (WebView) child;
			return canScrollVertically(child, 1)
					|| webview.getContentHeight() * webview.getScale() != webview
							.getHeight() + webview.getScrollY();
		} else if (child instanceof ScrollView) {
			ScrollView scrollView = (ScrollView) child;
			View childView = scrollView.getChildAt(0);
			if (childView != null) {
				return canScrollVertically(child, 1)
						|| scrollView.getScrollY() != childView.getHeight()
								- scrollView.getHeight();
			}
		}else{
			return canScrollVertically(child, 1);
		}
		return true;
	}

	/**
	 * 用来判断view在竖直方向上能不能向上或者向下滑动
	 * @param view v
	 * @param direction 方向    负数代表向上滑动 ,正数则反之
	 * @return
	 */
	public boolean canScrollVertically(View view, int direction) {
		return ViewCompat.canScrollVertically(view, direction);
	}
正如你所见,ViewCompat.canScrollVertically(view, direction)这个方法可以用来判断view能不能向上或者向下滑动,从而可以判断view有没有到达顶部或者底部,在4.0以后在个方法通常是很管用的,但是2.3.3以前则不是这样
  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值