Android ListView相关

    xiaoxiao2021-11-09  37

    ListView滚动监听

    GesturDetector手势监听、VelocityTracker滑动速度检测、OnTouchListener监听、OnScrollListener监听

    OnScrollListener的两个回调方法
    onScrollStateChanged()方法,由参数scrollState决定回调次数,scrollState有三种模式。 onScrollListener.SCROLL_STATE_IDLE滚动停止时。onScrollListener.SCROLL_STATE_TOUCH_SCROLL正在滚动时。onScrollListener.SCROLL_STATE_FLING手指抛动时,即手指用力滑动,离开后惯性继续滚动的的状态。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. */
    转载请注明原文地址: https://ju.6miu.com/read-678126.html

    最新回复(0)