好的做网站的,徐州建站公司哪家好,廊坊做网站的,上海官网建设教程方法一#xff1a; 用setOnScrollListener(new AbsListView.OnScrollListener()#xff09;来实现#xff0c;判断滑动后显示的第一个条目 #xff0c;与滑动前的第一个条目的大小来判断#xff0c; 这种方法逻辑简单#xff0c;但是必须要滑动到当前第一条目隐藏后才能起…方法一 用setOnScrollListener(new AbsListView.OnScrollListener()来实现判断滑动后显示的第一个条目 与滑动前的第一个条目的大小来判断 这种方法逻辑简单但是必须要滑动到当前第一条目隐藏后才能起作用当listview的单个条目的高度很大时这种方法就不好使了。代码如下 lv_shiti_content.setOnScrollListener(new AbsListView.OnScrollListener() {boolean scrollFlagfalse;//标记是否滑动boolean isFirsttrue;//标记第一次进入因为第一次进来lastVisibleItemPosition默认为0// 此时如果listview的第一个显示的条目不是第一个下表为0则往下滑也会出现firstVisibleItemlastVisibleItemPosition的情况//所以第一次进入时不做操作第二次进来已经给lastVisibleItemPosition赋值就可以判断了int lastVisibleItemPosition;//标记上次的显示位置Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(scrollState1||scrollState2){//其中1 表示滑动等同于 AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL// 2 表示惯性滑动 等同于 AbsListView.OnScrollListener.SCROLL_STATE_FLINGscrollFlagtrue;}else{scrollFlagfalse;}}Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {if(!isFirst){if(firstVisibleItemlastVisibleItemPosition){//执行向上滑动时要做的逻辑}lastVisibleItemPositionfirstVisibleItem;//记录当前条目isFirstfalse;}}}); 方法二 使用setOnTouchListener(new View.OnTouchListener(方法这种方法只要有一点移动距离就可以判断。 特别说明android控件的事件传递时是默认直接传递到最里层只有在上下滑动的时候才会中断事件所以我们获取到的第一个事件是move事件。 而我们的逻辑也是在move事件中做的这就造成获取的lasty和movey的值是相同的看下面代码 所以我们要判断只有第一次进来的时候获取lasty。以后都是lasty直接记录当前的movey。不然每次的lasty和movey永远是相同的值。 lv_shiti_content.setOnTouchListener(new View.OnTouchListener() {Overridepublic boolean onTouch(View v, MotionEvent event) {if(isFirstClick){//只有第一次进来的时候用获取位置的方法给lastY赋值后面的值都是上一次的move坐标//如果不做此判断每次的lasty和movey是相同的值这是因为在此处获取的的y值其实就是move的值//是因为在listview中down事件是默认传递进去给条目的在此处无法响应down事件。lastYevent.getY();isFirstClickfalse;//初始值是true此处置为false。}switch (event.getAction()){case MotionEvent.ACTION_MOVE:float moveY event.getY();Log.e(moveY_START,moveY);if(moveY lastY){if(!NewPageisOpen){//初始值为false 由于move方法会不断调用为防止多次打开页面。Intent intent new Intent(getActivity(), ShitidianTestActivity.class);startActivity(intent);NewPageisOpen true;}}lastYmoveY;break;}return false;}}); 转载于:https://www.cnblogs.com/epmouse/p/5409134.html