AndroidMotionEvent中g(shù)etX()和getRawX()的區(qū)別

小云
235
2023-08-05 19:57:47

在Android中,MotionEvent是用于描述觸摸事件的類。getX()和getRawX()是MotionEvent類中獲取觸摸點(diǎn)x坐標(biāo)的方法,但它們有一些區(qū)別。

  1. getX()方法返回的是相對(duì)于當(dāng)前View的坐標(biāo)值。如果觸摸事件發(fā)生在View的左上角,getX()返回0,如果觸摸事件發(fā)生在View的右下角,getX()返回View的寬度。

  2. getRawX()方法返回的是相對(duì)于屏幕的坐標(biāo)值,即觸摸事件發(fā)生的絕對(duì)位置。不受當(dāng)前View的位置或滾動(dòng)等影響。

舉個(gè)例子來(lái)說(shuō),如果一個(gè)View在屏幕上的坐標(biāo)是(100, 200),用戶點(diǎn)擊了View的左上角,那么getX()返回0,getRawX()返回100。如果View發(fā)生了滾動(dòng),getX()仍然返回0,但getRawX()返回的值可能會(huì)發(fā)生變化。

因此,getX()和getRawX()提供了不同層級(jí)的坐標(biāo)信息,開(kāi)發(fā)者可以根據(jù)需要選擇使用哪一個(gè)。如果需要獲取相對(duì)于當(dāng)前View的坐標(biāo)值,使用getX();如果需要獲取觸摸事件的絕對(duì)位置,使用getRawX()。

0