Android座標和mScrollX Y的含義

2021-07-23 16:41:33 字數 1290 閱讀 2822

首先說一下android座標:

座標的原點在螢幕的左上角(0,0),水平向右為正x,豎直向下為正y

view和motionevent(觸控事件)中獲取的位置關係圖如下:

圖中 那個深藍色的點代表的是:手指觸控點

涉及到的方法一共有下面幾個:

view獲取自身座標:getleft(),gettop(),getright(),getbottom()

view獲取自身寬高:getheight(),getwidth()

motionevent獲取座標:getx(),gety(),getrawx(),getrawy()

備註:view獲取位置方法裡面沒有getx()和gety()

view自身寬高:view控制項的大小,其餘的都是向量座標,只是有的是相對于父容器,有的是相對於螢幕邊緣(這種的我們稱之為絕對座標)

關於上圖的詳細解釋參考:

和 從圖中我們可以理解:view內容其實也占用了view的內部空間,有時候會佔滿,有時候不會。比如imageview顯示時內容就佔滿imageview,button顯示文字的時候,文字就是button的內容,但是沒有佔滿button

mscrollx一般出現在動畫設計裡,mscrollx含義是:view內容左上頂點指向view左上角的向量(可正,可負)這就好比是有乙個橡皮筋,一邊連線view左上點,一邊連線view內容的左上點,橡皮筋有收縮力,那麼這個力指向誰呢?我們知道view一旦布局完成,其位置引數一般不會變動,也就是說view整體的位置相對于父容器不會改變,因為如果這樣的話會影響父容器中其他view布局的改變(我估計設計view布局體系的時候考慮過,子view的控制權大還是父view的控制權大,view內容也相當於view裡面的子view,顯然以父view為控制點會減少整個view體系因為某一處變化而重繪這一過程帶來的系統開銷,舉個例子:如果在整個view體系中,巢狀最深的那個view在父容器中發生移動,如果以子view為控制點這一思想的話,那麼父容器相對於這個view的位置就變化了,父容器一旦改變布局,那麼父容器的父容器也就會改變,一直延伸到頂層容器,這樣的開銷很大;而執行以父容器為控制點這一思想,我們只需處理子view在父容器中的位置即可,)以父容器為控制點的根據還有:android中view體系的設計就是父容器管理子容器,父容器管理子view,父容器分發事件

以父容器為控制點,mscrollx就是view內容指向view左上角的向量(座標系還是以右下為正)。所以將view內容向右滑動,mscrollx為負值。view內容向下移動,mscrollx為負值

android座標系統

android 螢幕 view 座標系統 首先明確一下 android中的座標系統 螢幕的左上角是座標系統原點 0,0 原點向右延伸是x軸正方向,原點向下延伸是y軸正方向。一 view的座標 需要注意view的座標是相對父容器而言的,包括 gettop getbottom getleft getri...

android 座標相關

1 android中的座標系統 在android系統中,螢幕的左上角是座標系統的原點 0,0 座標。原點向右延伸是x軸正方向,原點向下延伸是y軸正方向。2 螢幕的寬和高 為了在螢幕中的合適位置繪製圖形,我們需要使用螢幕的寬和高作為參考,來確定繪製圖形的位置。要獲得螢幕的寬和高,首先從activity...

Android中的座標系統

1 android中的座標系統 在android系統中,螢幕的左上角是座標系統的原點 0,0 座標。原點向右延伸是x軸正方向,原點向下延伸是y軸正方向。2 螢幕的寬和高 為了在螢幕中的合適位置繪製圖形,我們需要使用螢幕的寬和高作為參考,來確定繪製圖形的位置。要獲得螢幕的寬和高,首先從activity...