View的getX和getY

Android坐標系和視圖坐標系

Android中有兩種坐標系,分別稱之為Android坐標系和視圖坐標系硼端。而對應的也有一些相關的方法可以獲取坐標系中的坐標值。

Android坐標系

先來看一看Android坐標系是個什么樣子的管削。貼一張圖來說明蒜哀,如下:

image

如上圖所示彪置,Android坐標系以手機屏幕左上角的頂點為坐標原點拄踪,從該點向右為x軸正方向,從該點向下為y軸正方向悉稠。而觸控事件中宫蛆,使用getRawX()和getRawY()方法

獲取的坐標就是以這個坐標系為標準下的坐標值。

視圖坐標系

android中的另外一個坐標系叫做視圖坐標系的猛,它描述的是子視圖在父視圖中的位置。再貼一張圖來說明想虎,如下:

image

如上圖所示卦尊,視圖坐標系是以父視圖的左上角為坐標原點的。相應的原點向右為x軸正方向舌厨,原點向下為y軸正方向岂却。在觸控中,通過

getX()和getY()來獲取的坐標值就是視圖坐標系中的坐標值裙椭。

View的getX和getY

View 提供了如下 5 種方法獲取 View 的坐標:
1 . View.getTop()躏哩、View.getLeft()、View.getBottom()揉燃、View.getRight();//相對父容器
2 . View.getX()扫尺、View.getY();//getX()==getLeft()、getY==getTop()炊汤。
3 . View.getTranslationX()正驻、View.getTranslationY();
4 . View.getLocationOnScreen(int[] position);//一個控件在其父窗口中的坐標位置,在當前窗口內的絕對坐標
5 . View.getLocationInWindow(int[] position);//一個控件在其整個屏幕上的坐標位置
初學View時見到這個多個方法可能有點懵逼,下面我來根據(jù)編號一一介紹:
1. 這四個方法用于獲取View相對于父容器的坐標抢腐,如下圖

圖1.1

從上圖可知姑曙,可根據(jù)View的這四個坐標來獲取View的大小:

1 .View的Height值 = view.getBottom() - view.getTop();
2 .View的Width值 = view.getRight() - view.getLeft();

需要注意的是迈倍,這四個方法獲取的坐標表示的是View原始狀態(tài)時相對于父容器的坐標伤靠,對View進行平移操作并不會改變著四個方法的返回值。

2 . getX()與getY()方法獲取的是View左上角相對于父容器的坐標啼染,當View沒有發(fā)生平移操作時宴合,getX()==getLeft()、getY==getTop()提完。
3 . translationX與 translationY是View左上角相對于父容器的偏移量:translationX = getX() - getLeft(),當View未發(fā)生平移操作時形纺,translationX 與translationY都為0。
4 . 獲取View相對于整個屏幕的坐標徒欣。
5 . 獲取View相對于Window的坐標(忽略狀態(tài)欄及ActionBar)逐样。

上面介紹的是View獲取坐標的幾種方法,但是在實際開發(fā)中不僅需要獲取View的坐標,有時候還需要獲取用戶點擊時的坐標脂新。

MotionEvent的getX和getY

MotionEvent提供的方法:

getX() 獲取點擊事件距離控件左邊的距離挪捕,即視圖坐標

getY() 獲取點擊事件距離控件頂邊的距離,即視圖坐標

getRawX() 獲取到的是點擊事件距離整個屏幕左邊的距離争便,即絕對坐標

getRawY() 獲取到的是點擊事件距離整個屏幕頂邊的距離级零,即絕對坐標

getScrollY() 獲取 視圖坐標原點 到 視圖 滾出屏幕 的距離

getScrollX() 類似 同上

getX()和getY()獲取到的是相對于當前View左上角的坐標; getRawX和getRawY()獲取的是相對于屏幕左上角的坐標滞乙。 如下圖:

image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末奏纪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斩启,更是在濱河造成了極大的恐慌序调,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兔簇,死亡現(xiàn)場離奇詭異发绢,居然都是意外死亡,警方通過查閱死者的電腦和手機垄琐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門边酒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狸窘,你說我怎么就攤上這事墩朦。” “怎么了朦前?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵介杆,是天一觀的道長。 經常有香客問我韭寸,道長春哨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任恩伺,我火速辦了婚禮赴背,結果婚禮上,老公的妹妹穿的比我還像新娘晶渠。我一直安慰自己凰荚,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布褒脯。 她就那樣靜靜地躺著便瑟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪番川。 梳的紋絲不亂的頭發(fā)上到涂,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天脊框,我揣著相機與錄音,去河邊找鬼践啄。 笑死浇雹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的屿讽。 我是一名探鬼主播昭灵,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伐谈!你這毒婦竟也來了烂完?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤衩婚,失蹤者是張志新(化名)和其女友劉穎窜护,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體非春,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年缓屠,在試婚紗的時候發(fā)現(xiàn)自己被綠了奇昙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡敌完,死狀恐怖储耐,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情滨溉,我是刑警寧澤什湘,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站晦攒,受9級特大地震影響闽撤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜脯颜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一哟旗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧栋操,春花似錦闸餐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剔宪,卻和暖如春拂铡,著一層夾襖步出監(jiān)牢的瞬間壹无,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工和媳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留格遭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓留瞳,卻偏偏與公主長得像拒迅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子她倘,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容