Android ListView相关

ListView滚动监听

GesturDetector手势监听、VelocityTracker滑动速度检测、OnTouchListener监听、OnScrollListener监听
OnScrollListener的两个回调方法
  1. onScrollStateChanged()方法,由参数scrollState决定回调次数,scrollState有三种模式。
    • onScrollListener.SCROLL_STATE_IDLE滚动停止时。
    • onScrollListener.SCROLL_STATE_TOUCH_SCROLL正在滚动时。
    • onScrollListener.SCROLL_STATE_FLING手指抛动时,即手指用力滑动,离开后惯性继续滚动的的状态。
  2. onScroll()方法,显示当前ListView滚动的状态,三个参数。
    • firstVisibleItem当前可见的第一个item的ID。
    • visibleItemCount当前可见的item总数。
    • totalItemCountitem总数。
获取当前可是的Item的位置等信息
获取可见区域最后一个item的id

listview.getLastVisiblePosition()

获取可见区域第一个item的id

listview.getFirstVisiblePosition()

ListView常用拓展

弹性的ListView
  • 重写ListView的方法overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent),并且设置maxOverScrollY的值,ListView就具有弹性。
    @Override
    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int
            scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
        return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX,
                50, isTouchEvent);
    }
  • 参数说明
/**
     * Scroll the view with standard behavior for scrolling beyond the normal
     * content boundaries. Views that call this method should override
     * {@link #onOverScrolled(int, int, boolean, boolean)} to respond to the
     * results of an over-scroll operation.
     *
     * Views can use this method to handle any touch or fling-based scrolling.
     *
     * @param deltaX Change in X in pixels
     * @param deltaY Change in Y in pixels
     * @param scrollX Current X scroll value in pixels before applying deltaX
     * @param scrollY Current Y scroll value in pixels before applying deltaY
     * @param scrollRangeX Maximum content scroll range along the X axis
     * @param scrollRangeY Maximum content scroll range along the Y axis
     * @param maxOverScrollX Number of pixels to overscroll by in either direction
     *          along the X axis.
     * @param maxOverScrollY Number of pixels to overscroll by in either direction
     *          along the Y axis.
     * @param isTouchEvent true if this scroll operation is the result of a touch event.
     * @return true if scrolling was clamped to an over-scroll boundary along either
     *          axis, false otherwise.
     */
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值