91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Androd處理屏幕滑動的一些記錄

發布時間:2020-07-17 19:43:30 來源:網絡 閱讀:589 作者:sinmo 欄目:開發技術

參考的一些博客地址:

http://blog.csdn.net/vansbelove/article/details/9013731

http://www.eoeandroid.com/thread-178659-1-1.html

http://www.jb51.net/article/35800.htm


scrollBy(int x, int y):將View偏移(x,y),x控制左右方向的偏移,y控制上下方向的偏移。例如:當x>0,y=0時,向右移動x個像素。當x<0,y=0時,向左移動x個像素。整個View的大小不會發生改變,超出部分會被擋住。

scrollTo(int x, int y):將View移動到(x,y)坐標處。整個View的大小不會發生改變,超出部分會被擋住。

Scroller類:主要用于控制滑動過程,是滑動更平滑,相比scrollTo方法不會顯得突兀。

VellocityTracker類:主要用于計算觸摸速率。用于判斷是快速滑動還是慢滑。


onInterceptTouchEvent(MotionEvent ev):--觸發攔截觸摸事件

    定義于ViewGroup中的一個方法,用于攔截觸摸事件。此方法默認返回false。

onTouchEvent(MotionEvent ev):--觸發觸摸事件

    定義于View中的一個方法,處理傳遞到View的手勢觸摸事件,手勢事件類型包括ACTION_DOWN,ACTION_MOVE,ACTION_UP,ACTION_CANCEL.

    ViewGroup中的onTouchEvent方法默認返回false。

    View中的onTouchEvent方法默認返回true。

當需要處理一些復雜的事件處理時,可能需要根據情況重寫這兩個方法來實現需求。


下面引入EOE里面一篇帖子的分析:

記錄onInterceptTouchEvent和onTouchEvent調用關系,即各種return true和return false的運行情況。

return true和return false,代表的是是否消費完該事件,也就是該事件是否會繼續傳遞給下層或者上層組件繼續處理。return true代表消費完不會繼續傳遞,return false代表沒有消費完將會繼續傳遞。

如果沒有onInterceptTouchEvent,只考慮onTouchEvent的話,比較容易分析和理解。假如有三層布局結構,linearLayout1,linearLayout2,textView,從前到后是包含的關系。那么下面分情況說明。
1.如果它們的onTouchEvent都返回false的話,DOWN事件會自上而下(textView位于最上層)依次傳遞,最終都沒有消費完此事件,都只會進入onTouchEvent方法一次并且MotionEvent的action為MotionEvent.ACTION_DOWN,move和up等事件不會繼續處理。
2.如果textView的onTouchEvent返回true,表示textView消費了此事件,不會傳給父組件linearLayout2和    linearLayout1了,并且還會繼續處理move和up等事件。
3.linearLayout2和linearLayout1的onTouchEvent返回true和上面的情況一樣,都不會繼續傳給父容器而且本身繼續處理move和up等事件。
OK,這種情況還是比較容易理解的。

下面加入onInterceptTouchEvent。
onInterceptTouchEvent只有ViewGroup才會有,用于在進入自身onTouchEvent或者子組件onTouchEvent之前處理事件。注意onTouch是自上而下傳遞,而onInterceptTouch卻是由下而上傳遞的。來了一個DOWN事件,首先進入的必然是最底層的viewGroup的onInterceptTouchEvent方法,然后根據return的值進入自身或者子組件的onTouch事件,當然如果子組件也是viewgroup的話,在進入子組件的onTouch之前也會進入子組件的onInterceptTouchEvent方法。
下面也分幾種情況介紹:
1.當onInterceptTouchEvent返回false時,表示沒有消費完此事件,會繼續傳遞個子組件的onTouch繼續處理。注意這種情況不會就不會傳遞給這個ViewGroup自身的onTouch事件處理了。這和onTouch如果返回false,后續的move、up等事件都不會繼續處理了可以做同樣理解。
2.當onInterceptTouchEvent返回true時,表示消費完此事件,或者說將在此組件上消費該事件。這種情況該事件會傳遞給ViewGroup自身的onTouch事件去處理,而不會傳遞給子組件的onTouch方法了。
由此可以總結,onInterceptTouchEvent返回值只是決定了是要把事件傳遞給自身的onTouch事件還是傳遞給子組件的onTouch事件。返回false表示沒有消費完將傳遞個子組件的onTouch方法,返回true表示自身消費此事件,將傳遞給自身的onTouch方法而不會傳遞給子組件的onTouch方法了。


附件里面是示例參照別人的示例demo,基本就是自己照著敲一遍熟悉熟悉。

附件:http://down.51cto.com/data/2364513
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北碚区| 闸北区| 滦南县| 抚州市| 儋州市| 柳江县| 大埔县| 宁都县| 农安县| 南皮县| 类乌齐县| 华容县| 黑山县| 方山县| 云南省| 秀山| 浦城县| 波密县| 阳高县| 中方县| 金沙县| 麻阳| 启东市| 都昌县| 浦东新区| 新泰市| 安吉县| 东港市| 岳普湖县| 海城市| 前郭尔| 海晏县| 岑巩县| 宁明县| 将乐县| 迁安市| 温泉县| 渑池县| 山阴县| 博湖县| 寿宁县|