`

android listview判断上滑还是下滑

阅读更多

android  中listview是比较常见一种控件,各路大牛折腾listview,上拉更过,下拉刷新等动画效果,但是在最近的APP开发中只需要知道listview是上滑还是下滑。

实现该功能需要用到listview的setOnScrollListener这个监听器。

private boolean scrollFlag = false;// 标记是否滑动

private int lastVisibleItemPosition;// 标记上次滑动位置

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

// TODO Auto-generated method stub

if (scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {

scrollFlag = true;

} else {

scrollFlag = false;

}

}

 

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

Log.d("dc", "firstVisibleItem::" + firstVisibleItem + ":visibleItemCount:" + visibleItemCount + ":totalItemCount:" + totalItemCount);

if (scrollFlag) {

if (firstVisibleItem > lastVisibleItemPosition) {

Log.d("dc", "上滑");

}

if (firstVisibleItem < lastVisibleItemPosition) {

Log.d("dc", "下滑");

}

if (firstVisibleItem == lastVisibleItemPosition) {

return;

}

lastVisibleItemPosition = firstVisibleItem;

}

}

这是我的方法,如果有更好的方法欢迎提醒!

分享到:
评论
2 楼 TanHuisky 2015-08-25  
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
View topChild = view.getChildAt(0);
                int newScrollPosition = 0;
                if (topChild == null)
                {
                    newScrollPosition = 0;
                }
                else
                {
                    newScrollPosition = -topChild.getTop() + view.getFirstVisiblePosition() * topChild.getHeight();
                }

                if (newScrollPosition < mScrollPosition)
                {
                   
                    Log.d("dc", "下滑");
                }
                else
                {
    
                    Log.d("dc", "上滑");
                }
mScrollPosition = newScrollPosition;
}
1 楼 benben_002 2015-04-13  
如果数据刚好就是一个屏幕里的,好像判断不了吧

相关推荐

Global site tag (gtag.js) - Google Analytics