日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)

發布時間:2025/7/25 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在做一個view背景特效的時候被坐標的各個獲取方法搞暈了,幾篇抄來抄去的博客也沒弄很清楚。

現在把整個總結一下。

其實只要把下面這張圖看明白就沒問題了。

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

view獲取自身坐標:getLeft(),getTop(),getRight(),getBottom()

view獲取自身寬高:getHeight(),getWidth()

motionEvent獲取坐標:getX(),getY(),getRawX(),getRawY()

?

首先是view的幾個方法,

獲取自身的寬高的這兩個方法很清楚,不用多說,獲取坐標的這幾個就有點混亂了。

根據上面的圖應該會比較容易明白,圖中屏幕上放了一個ViewGroup布局,里面有個View控件

getTop:獲取到的,是view自身的頂邊到其父布局頂邊的距離

getLeft:獲取到的,是view自身的左邊到其父布局左邊的距離

getRight:獲取到的,是view自身的右邊到其父布局左邊的距離

getBottom:獲取到的,是view自身的底邊到其父布局頂邊的距離

這些方法獲取到的數據可以用在什么地方呢?
比如要實現一個自定義的特殊布局,像http://blog.csdn.net/singwhatiwanna/article/details/42614953
這里要實現的是一個水波紋特效布局,該布局內的任何控件點擊后都會出現波紋效果

那么在點擊了布局內的一個控件之后,就要通過不斷刷新布局,去更新這個控件上面的波紋半徑,為了節省資源,每次刷新布局都時候不會整個布局都刷新,而只是通過

[java] view plaincopy
  • postInvalidateDelayed(INVALIDATE_DURATION,?left,?top,?right,?bottom);????
  • 在布局的畫布上每次只去更新點擊事件所點擊的對應的控件的位置,那么這里就可以用view的那四個方法,分別獲取自身的四條邊對應的坐標

    從而讓布局去刷新重繪。

    當然博客中是使用絕對坐標去計算的,因為這里實現的是一個布局,可能里面還會嵌套另外的布局,經過多次嵌套之后所獲取到的值,是相對于控件直接對應的父布局(這個布局有可能已經是我們重寫的布局的子布局了)的距離,這樣去刷新的區域肯定是不準確的,所以博客里面使用相對屏幕的絕對坐標計算需要刷新的控件區域。

    如果這里自定義的不是布局,而只是一個控件的話,就可以通過以上方法獲取到坐標,然后要求自己所在的布局去重繪這一區域就可以了。當然這只是一種思路,其實沒必要去要求布局重繪,完全可以直接view自身重繪就可以了。

    ?

    然后是motionEvent的方法:

    getX():獲取點擊事件相對控件左邊的x軸坐標,即點擊事件距離控件左邊的距離

    getY():獲取點擊事件相對控件頂邊的y軸坐標,即點擊事件距離控件頂邊的距離

    getRawX():獲取點擊事件相對整個屏幕左邊的x軸坐標,即點擊事件距離整個屏幕左邊的距離

    getRawY():獲取點擊事件相對整個屏幕頂邊的y軸坐標,即點擊事件距離整個屏幕頂邊的距離

    這些方法可以用在什么地方呢?

    getRawX和getRawY在之前那篇博客里廣泛使用了,可以去那里看用法,getX()和getY()這兩個方法在對view進行自定義的時候可能用的會比較多。

    之后有篇博客寫開頭實現的特效,可以看下,下面是鏈接。

    view和view group重寫

    作者:jason0539

    微博:http://weibo.com/2553717707

    博客:http://blog.csdn.net/jason0539(轉載請說明出處)

    轉載于:https://www.cnblogs.com/Free-Thinker/p/8920595.html

    總結

    以上是生活随笔為你收集整理的android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。