判斷listview是上滑還是下滑的方法

方法一:

setOnScrollListener(new AbsListView.OnScrollListener())來實現,判斷滑動后顯示的第一個條目 ,與滑動前的第一個條目的大小來判斷,

這種方法邏輯簡單,但是必須要滑動到當前第一條目隱藏后才能起作用,當listview的單個條目的高度很大時,這種方法就不好使了。代碼如下:

lv_shiti_content.setOnScrollListener(new AbsListView.OnScrollListener() {boolean scrollFlag=false;//標記是否滑動boolean isFirst=true;//標記第一次進入,因為第一次進來lastVisibleItemPosition默認為0,// 此時如果listview的第一個顯示的條目不是第一個(下表為0),則往下滑也會出現firstVisibleItem>lastVisibleItemPosition的情況//所以第一次進入時不做操作,第二次進來已經給lastVisibleItemPosition賦值,就可以判斷了int lastVisibleItemPosition;//標記上次的顯示位置
            @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){//執行向上滑動時要做的邏輯
                }lastVisibleItemPosition=firstVisibleItem;//記錄當前條目isFirst=false;}}});

方法二:

使用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事件。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方法會不斷調用,為防止多次打開頁面。Intent intent = new Intent(getActivity(), ShitidianTestActivity.class);startActivity(intent);NewPageisOpen = true;}}lastY=moveY;break;}return false;}});

?

轉載于:https://www.cnblogs.com/epmouse/p/5409134.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271903.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何保證消息不被重復消費~~~~~(如何保證消息隊列的冪等性)

分析&#xff1a;這個問題其實換一種問法就是&#xff0c;如何保證消息隊列的冪等性&#xff1f;這個問題可以認為是消息隊列領域的基本問題。換句話來說&#xff0c;是在考察你的設計能力&#xff0c;這個問題的回答可以根據具體的業務場景來答&#xff0c;沒有固定的答案。 回…

SpringBoot:搭建第一個Web程序

本文簡單介紹一下spingBoot搭建web程序的流程&#xff0c;希望對入門學習spingBoot的朋友有所幫助。本文采用的開發工具是IDEA。 1、打開IDEA&#xff0c;創建項目。 2、點擊創建項目&#xff0c;進入下一步&#xff0c;具體按照畫紅框的操作。 3、點擊下一步 4、點擊下一步&am…

java uuid 效率_java uuid第一次性能

在java中產生uuid的方式是使用java.util.UUID。UUID.randomUUID().toString();我在測試redis性能時&#xff0c;使用uuid產生測試數據&#xff0c;發現多線程測試redis的rpush接口的時候&#xff0c;性能老是上不去。 查看cpu利用率也不高&#xff0c;網卡流量也不大。就是tps上…

第八周----補

這一周真不知道過得是什么&#xff0c;除了上課&#xff0c;感覺相當的混亂。 整個人每天都是處在消沉狀態&#xff0c;連這次作業都沒能很好的補上。 我的心情也像天氣一樣變得不穩定&#xff0c;一會晴天一會雨天的&#xff0c;更多的就是悶悶的感覺。 總會說事情很多忙的頭暈…

SpringBoot:application.properties基本的參數配置

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

java method 注釋_Java注解

Java注解注解概述3、注解3.1、注解&#xff0c;或者叫做注釋類型&#xff0c;英文單詞是&#xff1a;Annotation疑問&#xff1a;注解到底是干啥的&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;3.2、注解Ann…

盤點八個程序員必備的代碼編輯器

一個好的代碼編輯器不僅能使代碼變得更美觀&#xff0c;增強其可讀性&#xff0c;同時也能迅速推進程序員的工作進程&#xff0c;延長代碼的生命周期。 對于新手和有經驗的程序員&#xff0c;推薦使用的代碼編輯器也均有不同。小樓總結了一些好用的代碼編輯器&#xff0c;還在糾…

C#OOP之二 變量和表達式

2.1 C#的基本語法 C#代碼的外觀和操作方式與C和Java非常相似。初看起來&#xff0c;其語法比較混亂&#xff0c; 不像書面英語和其他語言。但是&#xff0c;在C#編程中&#xff0c;使用的樣式是比較清晰的&#xff0c;不用花太多的力氣就可以編寫出可讀性很強的代碼。 與其他語…

java異步多線程 判斷線程狀態_java多線程和異步回調

在實際開發過程中遇到的多線程情況不多&#xff0c;但是在生產環境中多線程是最基本的情況&#xff0c;java面試時也會考到&#xff0c;所以看看多線程的知識還是很有必要的。Thread&#xff0c;Runnable&#xff0c;Callable&#xff0c;Future&#xff0c;FutureTask,Executo…

C#調用API彈出打印機屬性對話框

調用api彈出打印機屬性對話框 Author:vitoriatangFrom:Internet.NET Framework封裝了很多關于打印的對話框&#xff0c;比如說PrintDialog, PageSetupDialog. 但是有的時候我們還需要關心打印機屬性對話框&#xff0c;那么就可以調用API來解決這個問題。有幾個API函數與之相關P…

Java中異常

首先我們要知道RuntimeException與Exception之間的關系與他們分別的含義&#xff1a; ①在Java中異常的基類為Throwable&#xff0c;他有兩個子類Exception與Errors&#xff0c;同時RuntimeException就是Exception的子類&#xff1b; ②RuntimeException&#xff0c;即運行時異…

第九周作業

你最喜歡做什么--興趣問題清單?根據迄今為止已有的經歷&#xff0c;你真正喜歡從事的工作是什么&#xff1f;動漫設計師或者網頁設計師?休暇時間你最愛從事的活動是什么&#xff1f;看動漫?什么令你精疲力盡&#xff1f;什么能激發你的活力&#xff1f;看動漫?你是重視質量…

SQLServer數據庫獲取重復記錄中日期最新的記錄

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

循環的時候去刪除集合中的元素 java.util.ConcurrentModificationException

使用for循環&#xff0c;刪除集合中的元素&#xff0c;會報錯 java.util.ConcurrentModificationException 只能通過迭代器 iterator刪除 1&#xff1a;在while循環中使用iterator迭代器刪除集合中元素 2:在for循環中使用iterator迭代器刪除集合中元素 3&#xff1a;使用for循…

jquery ajax load

jQuery load() 方法 jQuery load() 方法是簡單但強大的 AJAX 方法。 load() 方法從服務器加載數據&#xff0c;并把返回的數據放入被選元素中。 語法&#xff1a; $(selector).load(URL,data,callback); $("button").click(function(){$("#div1").load(&qu…

計算機網絡硬件設備組成筆記

網絡是計算機或類似計算機的網絡設備的集合&#xff0c;它們之間通過各種傳輸介質進行連接。無論設備之間如何連接&#xff0c;網絡都是將來自于其中一臺網絡設備上的數據&#xff0c;通過傳輸介質傳輸到另外一臺網絡設備上。 本節將基于這個過程講解網絡的組成。 網卡 網卡也被…

java記事本復制粘貼_Java Swing 如何實現記事本中“編輯”菜單下的 剪切,復制,粘貼,刪除,全選 功能...

這篇文字將要學習以下知識點&#xff1a;1.如何給JButton按鈕添加鼠標點擊事件監聽器#1.addMouseListener(MouseListener l) 給JButton添加一個鼠標點擊監聽器l2.文本區控件JTextArea 中的方法(剪切&#xff0c;復制&#xff0c;粘貼&#xff0c;刪除&#xff0c;全選 功能的…

學習進度條07

第八周所花時間28小時代碼量 50博客量7篇了解到的知識點 java中swing控件可以用來設置圖形化界面&#xff0c;讓界面更加好看&#xff1b; 可以引用相關的包和類&#xff0c;來改變圖形化的界面&#xff0c;讓界面更加美觀。 轉載于:https://www.cnblogs.com/Daddy/p/5427670.h…