本篇文章基于小米3測試
坐標(biāo)系
-
屏幕坐標(biāo)系和數(shù)學(xué)坐標(biāo)系的區(qū)別
Android設(shè)備定義屏幕左上角為坐標(biāo)原點,向右為x軸增大方向,向下為y軸增大方向, 所以在手機(jī)屏幕上的坐標(biāo)系與數(shù)學(xué)中常見的坐標(biāo)系是稍微有點差別的,詳情如下:
(PS:其中的∠a 是對應(yīng)的,注意y軸方向!)
數(shù)學(xué)坐標(biāo)系
安卓屏幕坐標(biāo)系 假設(shè)其中棕色部分為手機(jī)屏幕
屏幕默認(rèn)坐標(biāo)系示例
- View的坐標(biāo)系
注意:View的坐標(biāo)系統(tǒng)是相對于父控件而言的.
getTop(); //獲取子View左上角距父View頂部的距離
getLeft(); //獲取子View左上角距父View左側(cè)的距離
getBottom(); //獲取子View右下角距父View頂部的距離
getRight(); //獲取子View右下角距父View左側(cè)的距離
如下圖所示:
View坐標(biāo)系
屏幕各個點的坐標(biāo)
- 觸摸點坐標(biāo)
MotionEvent中 get 和 getRaw 的區(qū)別
其中:
event.getX(); //觸摸點相對于其所在組件坐標(biāo)系的坐標(biāo)
event.getY();
event.getRawX();//觸摸點相對于屏幕默認(rèn)坐標(biāo)系的坐標(biāo)
event.getRawY();
如下圖所示:
- 接下來針對view坐標(biāo)系的getX進(jìn)行測試(getRawX()類似):
代碼log測試
- 在view坐標(biāo)系下的X軸的變化,當(dāng)然Y軸類似,只要記住一點,獲取事件的坐標(biāo)處于哪個坐標(biāo)系就可以了,為了查看方便我打開了布局邊界
view坐標(biāo)系下X的變化 -
log顯示X的變化,因為觸摸過程打印很多的坐標(biāo),所以就截取部分
截取開始部分
截取結(jié)束部分
總結(jié)
介紹坐標(biāo)是為了區(qū)別view坐標(biāo)系和屏幕坐標(biāo)系,用于處理一些點擊滑動事件,只有知道了坐標(biāo)的變化才知道該怎么處理由坐標(biāo)引起的view的變化.
自定義View目錄
參考文章