1. 程式人生 > >View的事件體系

View的事件體系

col oca 方向 esc 系統 表示 getrawy viewgroup 過程

1、View基礎

View是Android中所有控件的基類,View是一種界面層的控件的一種抽象,View代表了一個控件。

ViewGroup(控件組),內部包含了許多個控件,即一組View。ViewGroup繼承自View,這就意味著View本身就可以是單個控件,也可以是由多個控件組成的一組控件。

View的位置主要由它的四個頂點來決定,分別對應於View的四個屬性:top、left、right、bottom。這些坐標都是相對於View的父容器來說的,因此這四個頂點是一種相對坐標。

從Android3.0開始,View增加了額外的幾個參數:x、y、tarnslationX和translationY,其中x和y是View左上角的坐標,而translationX和translationY是View左上角相對於父容器的偏移量。這幾個參數也是相對於父容器的坐標,並且translationX和translationY的默認值是0。

需要註意的是,View在平移的過程中,top和left表示的是原始左上角的位置信息,其值並不會發生改變,此時發生改變的是x、y、translationX和translationY這四個參數。

2、MotionEvent和TouchSlop

在手指接觸屏幕後所產生的一系列事件中,典型的事件類型有如下幾種:

ACTION_DOWN:手指剛接觸屏幕;

ACTION_MOVE:手指在屏幕上移動;

ACTION_UP:手指從屏幕上松開的一瞬間。

通過MotionEvent對象我們可以得到點擊事件發生的x和y坐標。為此,系統提供了兩組方法:getX/getY和getRawX/getRawY。它們的區別很簡單,getX/getY返回的是相對於當前View左上角的x和y坐標,而getRawX/getRawY返回的是相對於手機屏幕左上角的x和y坐標。

TouchSlop 是系統所能識別出的被認為是滑動的最小距離。如果滑動距離小於這個常量,系統不認為它是滑動的。這是一個常量和設備有關,可以在處理滑動時用來做一些過濾。

3、VelocityTracker、GestureDetector和Scroller

VelocatyTracker:速度追蹤,用於追蹤手指在滑動過程中的速度,包括水平和豎直方向的速度。

GestureDetector:手勢檢測,用於輔助檢測用於的單擊、滑動、長按、雙擊等行為。

Scroller:彈性滑動對象,用於實現View的彈性滑動。使用Scroller來實現有過渡效果的滑動,其過程不是瞬間完成的,而是在一定的時間間隔內完成的。Scroller本身無法讓View彈性滑動,它需要和View的computeScroll方法配合使用才能共同完成這個功能。

View的事件體系