View坐標系

最近在學習<<Android開發(fā)藝術(shù)探索>>這本書诗赌,把一些android的核心概念講解的很清晰鲁僚, 在看3.1.2 View的位置參數(shù)這節(jié)時曼月,對View的幾個參數(shù)沒搞透徹,本文對這些容易混淆的概念排疑解惑一下衙猪。
其實只要把下面這張圖看明白就沒問題了。

view坐標系.png

上面的"藍點"表示的一次點擊事件布近。
涉及到的方法一共有下面幾個:
view獲取自身坐標:getLeft(),getTop(),getRight(),getBottom()
view獲取自身寬高:getHeight(),getWidth()
motionEvent獲取坐標:getX(),getY(),getRawX(),getRawY()

上面幾個參數(shù)表達的含義很清晰垫释, 比較讓人疑惑的是書中提到的,View的x,y, translationX撑瞧, translationY這4個參數(shù)的含義棵譬。

含義如下:
translationX,translationY: View顯示相對于初始位置的偏移量.
x,y: View最終可見時的坐標,是View的left预伺,top位置加上translationX订咸,translationY.
left, top: 是View初始在ViewGroup布局時的左上角坐標曼尊。

這幾個參數(shù)是理解View動畫的基礎(chǔ)。
在View Animation中脏嚷,對View應(yīng)用Animation并沒有改變View的left, top, right, bottom的屬性值骆撇,動畫的實現(xiàn)是通過其Parent View實現(xiàn)的,在View被drawn時Parents View改變它的繪制參數(shù)父叙,draw后再改變參數(shù)invalidate神郊,這樣雖然View的大小或旋轉(zhuǎn)角度等改變了或進行了平移,但View的實際屬性沒變趾唱,所以有效區(qū)域還是應(yīng)用動畫之前的區(qū)域涌乳,比如你把一按鈕放大兩倍,但還是放大之前的區(qū)域可以觸發(fā)點擊事件甜癞。(注意:使用屬性動畫可以解決實施動畫前后點擊事件響應(yīng)區(qū)域不一致的問題夕晓。)

跟位置有關(guān)的參數(shù)有3個,以X坐標為例悠咱,可以通過getLeft(),getX(),getTranslateX()獲得运授,若有一Button btn2,布局時其坐標為(40,0):

//應(yīng)用動畫之前
btn2.getLeft();    //40
btn2.getX();    //40
btn2.getTranslationX();    //0
//應(yīng)用translationX動畫
ObjectAnimator oa=ObjectAnimator.ofFloat(btn2,"translationX", 200);
oa.setDuration(2000);
oa.start();
/*應(yīng)用translationX動畫后
btn2.getLeft();    //40
btn2.getX();    //240
btn2.getTranslationX();    //200
*/
//應(yīng)用X動畫乔煞,假設(shè)沒有應(yīng)用之前的translationX動畫
ObjectAnimator oa=ObjectAnimator.ofFloat(btn2, "x", 200);
oa.setDuration(2000);
oa.start();
/*應(yīng)用X動畫后
btn2.getLeft();    //40
btn2.getX();    //200
btn2.getTranslationX();    //160
*/

無論怎樣應(yīng)用動畫吁朦,原來布局時的位置通過getLeft()獲得,保持不變渡贾。
X是View最終顯示時的位置逗宜;
translationX為最終顯示位置與布局時初始位置這差。
所以O(shè)bjectAnimator.ofFloat(), 若就用translationX即為在原來基礎(chǔ)上移動多少空骚,若用X為最終要移動到X軸的哪個位置纺讲。
getX()的值為getLeft()與getTranslationX()之和。

參考:
http://blog.csdn.net/jason0539/article/details/42743531
http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囤屹,一起剝皮案震驚了整個濱河市熬甚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肋坚,老刑警劉巖乡括,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異智厌,居然都是意外死亡诲泌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門铣鹏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敷扫,“玉大人,你說我怎么就攤上這事诚卸】冢” “怎么了绘迁?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卒密。 經(jīng)常有香客問我缀台,道長,這世上最難降的妖魔是什么栅受? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任将硝,我火速辦了婚禮,結(jié)果婚禮上屏镊,老公的妹妹穿的比我還像新娘依疼。我一直安慰自己,他們只是感情好而芥,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布律罢。 她就那樣靜靜地躺著,像睡著了一般棍丐。 火紅的嫁衣襯著肌膚如雪误辑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天歌逢,我揣著相機與錄音巾钉,去河邊找鬼。 笑死秘案,一個胖子當著我的面吹牛砰苍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阱高,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼赚导,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赤惊?” 一聲冷哼從身側(cè)響起吼旧,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎未舟,沒想到半個月后圈暗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡处面,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年厂置,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魂角。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖智绸,靈堂內(nèi)的尸體忽然破棺而出野揪,到底是詐尸還是另有隱情访忿,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布斯稳,位于F島的核電站海铆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挣惰。R本人自食惡果不足惜卧斟,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望憎茂。 院中可真熱鬧珍语,春花似錦、人聲如沸竖幔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拳氢。三九已至募逞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馋评,已是汗流浹背放接。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留留特,地道東北人纠脾。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像磕秤,于是被迫代替她去往敵國和親乳乌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容