Android知識點(轉)——觸碰事件監聽中橫縱座標的獲取方法:getX和getRawX的區別

先扯兩句

首先聲明,這篇博客解決方案取自[SunTree_X](https://www.jianshu.com/u/ddc8696b6c38)的getX和getRawX的區別

PS:大家可以直接通過鏈接跳轉到原博客查看。

今天去了友盟UBDC大數據技術峯會,大牛挺多的,而大牛講的東西呢。。。可以說大多沒什麼用。
笑cry
當然,這麼說也有些不負責任,畢竟大牛們都這麼高屋建瓴,指引的是方向,我這種小菜鳥自然是聽不懂的。但是如果有機會,還是建議大家多參加一些這種會議。雖然可能聽不懂,而且也不是技術分享會,但確實能夠對主辦方更多一些的瞭解。當然,也不是全然沒用,其中《硅谷增長黑客實戰筆記》的作者曲卉(這裏不是打廣告啊,就小老兒我的博客瀏覽量,也不夠接廣告的啊)所講的部分,還是我這個階段能夠聽懂的,而且相對於我當前的階段來說也是比較適用的。

這部分後面會專門寫一個歸納博客,這裏還是先給大家展示個神器,叫Android知識點——目錄,好了,閒言少敘,下面進入正題。

正文

在Android開發的時候,多少會有一些需求,需要我們去定製控件的觸碰事件,也就是傳說中的setOnTouchListener。除了監聽按下擡起做相應的聯動外,更變態的就是讓我們去根據按下以及擡起的座標去做一些操作,最簡單的實例就是一個畫筆工具,需要根據用戶手指移動的軌跡繪製線條,這就需要在用戶手指移動的過程中實時獲取橫縱座標,並作出對應的繪製。

而他們倆的區別,其實也很簡單

getX是以組件左上角爲座標原點,獲取X座標軸上的值。
getRawX是以屏幕左上角爲左腳做預案,獲取X座標軸上的值。

很顯然,如果爲了實現上面說的畫筆工具,那麼就需要獲取getX的值與getY的值,因爲這組橫縱座標是依據對應的組件,也就是我們的畫板的。

至於什麼時候能夠使用到getRawX,那我們就再舉個例子,當你想要做一個懸浮按鈕的時候,需要懸浮按鈕根據你手指在屏幕上的滑動而隨着移動,這個時候如果使用getX就沒有辦法了,因爲我們無法知道它在整個屏幕中的位置。當然,這也就能說得通,爲什麼很多軟件做成,移動懸浮窗時,懸浮窗會根據偏向左半屏還是右半屏,自行跑到對應的邊緣處。這就是因爲你通過getRawX得到了它相對於屏幕的位置,根據屏幕寬度自然知道是在左半屏還是有半屏了。然後將對應的控件的橫座標做出調整就可以實現對應的效果了。

發佈了41 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章