上下滚动:在fragment中监听listview上下滑动,用AbsListView.OnScrollListener方法就行
private void initListener() {? ? ? ?
?? ?AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {? ? ? ? ? ??
?? ??? ?@Override? ? ? ? ? ??
?? ??? ?public void onScrollStateChanged(AbsListView view, int scrollState) {//滚动结束后,状态变化的监听? ? ? ? ? ? ? ??
?? ??? ??? ?switch (scrollState) {? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?case AbsListView.OnScrollListener.SCROLL_STATE_FLING://滑动且投掷过一次,并且现在滑动已停止? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ??? ?break;? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?case AbsListView.OnScrollListener.SCROLL_STATE_IDLE://视图没有滚动(滚动已停止)? ? ? ? ? ? ? ?? ? ??? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ??? ?break;? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL://通过触摸滑动,并且手指仍按在屏幕上? ? ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ??? ?break;? ? ? ? ? ? ? ??
?? ??? ??? ??? ?}? ? ? ? ? ??
?? ??? ??? ?}? ? ? ? ? ??
?? ??? ?@Override? ? ? ? ? ??
?? ??? ?public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {? ? ? ? ? ? ? ??
?? ??? ??? ?if (firstVisible == firstVisibleItem) {//滚动范围太小了,一个界面都没有变动? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?return;? ? ? ? ? ? ? ??
?? ??? ??? ?}else{
? ? ? ? //do some thing? ? ? ??
????????}
?????????}? ? ? ??
?? ?};? ? ? ??
mylistview.setOnScrollListener(onScrollListener);
}??
左右滚动
在listview中重写onTouchEvent,用来监听左右滚动
private float xInScreen; //当前手指位置在屏幕上的横坐标值
private float xDownInScreen; //手指按下时在屏幕上的横坐标的值
private int movex;//手指横向位移的长度(大于200的距离才能判定滑动窗口)
public boolean onTouchEvent( MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://0
// 手指按下时记录必要数据,纵坐标的值都需要减去状态栏高度
xDownInScreen = event.getRawX();
xInScreen = event.getRawX();
break;
case MotionEvent.ACTION_MOVE://2
xInScreen = event.getRawX();
movex = (int) (xDownInScreen - xInScreen);
break;
case MotionEvent.ACTION_UP://1
if (abs(movex) > 200) {//横向有效滑动
if(movex>0){
// 窗口向右滑动
}
else{
// 窗口向左滑动
}
}
break;
default:
break;
}
//直接交给ListView来处理onTouchEvent事件
return super.onTouchEvent(event);
}
最后在XML布局中使用该ListView就行了
<com.demo.my_listview
android:id="@+id/my_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@null"/>
|