判断listview是上滑还是下滑的方法
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                判断listview是上滑还是下滑的方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                方法一:
用setOnScrollListener(new AbsListView.OnScrollListener())來實現(xiàn),判斷滑動后顯示的第一個條目 ,與滑動前的第一個條目的大小來判斷,
這種方法邏輯簡單,但是必須要滑動到當(dāng)前第一條目隱藏后才能起作用,當(dāng)listview的單個條目的高度很大時,這種方法就不好使了。代碼如下:
lv_shiti_content.setOnScrollListener(new AbsListView.OnScrollListener() {boolean scrollFlag=false;//標(biāo)記是否滑動boolean isFirst=true;//標(biāo)記第一次進入,因為第一次進來lastVisibleItemPosition默認為0,// 此時如果listview的第一個顯示的條目不是第一個(下表為0),則往下滑也會出現(xiàn)firstVisibleItem>lastVisibleItemPosition的情況//所以第一次進入時不做操作,第二次進來已經(jīng)給lastVisibleItemPosition賦值,就可以判斷了int lastVisibleItemPosition;//標(biāo)記上次的顯示位置 @Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(scrollState==1||scrollState==2){//其中1 表示滑動,等同于 AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL// 2 表示慣性滑動 等同于 AbsListView.OnScrollListener.SCROLL_STATE_FLINGscrollFlag=true;}else{scrollFlag=false;}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {if(!isFirst){if(firstVisibleItem>lastVisibleItemPosition){//執(zhí)行向上滑動時要做的邏輯 }lastVisibleItemPosition=firstVisibleItem;//記錄當(dāng)前條目isFirst=false;}}});方法二:
使用setOnTouchListener(new View.OnTouchListener()方法,這種方法,只要有一點移動距離就可以判斷。
特別說明:android控件的事件傳遞時是默認直接傳遞到最里層,只有在上下滑動的時候才會中斷事件,所以我們獲取到的第一個事件是move事件。
而我們的邏輯也是在move事件中做的,這就造成獲取的lasty和movey的值是相同的(看下面代碼)
所以我們要判斷,只有第一次進來的時候獲取lasty。以后都是lasty直接記錄當(dāng)前的movey。不然每次的lasty和movey永遠是相同的值。
lv_shiti_content.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if(isFirstClick){//只有第一次進來的時候用獲取位置的方法給lastY賦值,后面的值都是上一次的move坐標(biāo)//如果不做此判斷,每次的lasty和movey是相同的值,這是因為在此處獲取的的y值其實就是move的值,//是因為在listview中,down事件是默認傳遞進去給條目的,在此處無法響應(yīng)down事件。lastY=event.getY();isFirstClick=false;//初始值是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方法會不斷調(diào)用,為防止多次打開頁面。Intent intent = new Intent(getActivity(), ShitidianTestActivity.class);startActivity(intent);NewPageisOpen = true;}}lastY=moveY;break;}return false;}});?
轉(zhuǎn)載于:https://www.cnblogs.com/epmouse/p/5409134.html
總結(jié)
以上是生活随笔為你收集整理的判断listview是上滑还是下滑的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 微信支付—微信H5支付「非微信内部浏览器
 - 下一篇: 第八周----补