亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

泰宁县| 喜德县| 泰来县| 东兰县| 乐都县| 钦州市| 凌海市| 中西区| 宜昌市| 大兴区| 新余市| 宜君县| 沙湾县| 昌黎县| 濮阳县| 巫溪县| 永和县| 兰溪市| 仪陇县| 施甸县| 北京市| 屯留县| 满城县| 珲春市| 伊川县| 新绛县| 盐池县| 洛扎县| 望城县| 池州市| 大名县| 民权县| 通河县| 简阳市| 怀宁县| 肃北| 定安县| 延津县| 博野县| 娄底市| 交口县|