天天看點

View的事件體系之View位置參數與View事件分發機制

最近在看《Android開發藝術探索》,把看到的一些知識在這裡做一個筆記。

  • 什麼是View

    View是界面層的一種抽象,它代表了一個控件,ViewGroup是一組控件

  • View的位置參數

    View的坐标是一種相對坐标,相對于父容器而言,在Android中,X軸和Y軸的正方向分别為右和下,一般通過getX(),getY(),setX(),setY()的方法得到和設定位置參數,

具體看下面這張草圖

View的事件體系之View位置參數與View事件分發機制

裡面的小長方形為View,外面的大長方形為ViewGroup,

則View的寬為width=bottom-top;

View的高為height=right-left;

Android3.0之後View增加了幾個額外的參數,X,Y,translationX,translationY,其中左上角的坐标為x,y,translationX,translationY為左上角相對于父容器的偏移量,四個參數的關系為

X=left+translationX(右正左負);

Y=right+translationY(下正上負);

top和left表示的是原始位置的坐标,改變的是X,Y和translationX,translationY;

  • View事件的分發機制(簡單記一下,太多了)

    public void dispatchTouchEvent(MotionEvent ev)用來進行事件的分發,隻要事件傳遞給目前的View就會觸發該方法,傳回結果受onTouchEvent和下級的dispatchEouchEvent方法影響,表示是否消耗該事件。

ok,暫時記到這,等看了再記。

繼續閱讀