Android MotionEvent中getX()和getRawX()的區(qū)別實例詳解
更新時間:2017年03月20日 11:36:14 投稿:lqh
這篇文章主要介紹了Android MotionEvent中getX()和getRawX()的區(qū)別實例詳解的相關資料,需要的朋友可以參考下
Android MotionEvent中getX()和getRawX()的區(qū)別實例詳解
實例代碼:
public class Res extends Activity implements View.OnTouchListener {
Button btn = null;
int x = 0;
int y = 0;
int rawx = 0;
int rawy = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button);
btn.setOnTouchListener(this);
}
public boolean onTouch(View view, MotionEvent event) {
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
x = (int) event.getX();
y = (int) event.getY();
rawx = (int) event.getRawX();
rawy = (int) event.getRawY();
Log.d("DEBUG", "getX=" + x + "getY=" + y + "n" + "getRawX=" + rawx
+ "getRawY=" + rawy + "n");
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}
}
結論:
當你觸到按鈕時,x,y是相對于該按鈕左上點(控件本身)的相對位置。
而rawx,rawy始終是相對于屏幕的位置。

可知:
- getRowX:觸摸點相對于屏幕的坐標
- getX: 觸摸點相對于按鈕的坐標
- getTop: 按鈕左上角相對于父view(LinerLayout)的y坐標
- getLeft: 按鈕左上角相對于父view(LinerLayout)的x坐標
可以想象 getRight()等同于下面的計算:getLeft()+getWidth()。
getX()是表示Widget相對于自身左上角的x坐標,而getRawX()是表示相對于屏幕左上角的x坐標值(注意:這個屏幕左上角是手機屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一樣的道理
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
android中Invalidate和postInvalidate的更新view區(qū)別
Android中實現view的更新有兩組方法,一組是invalidate,另一組是postInvalidate,其中前者是在UI線程自身中使用,而后者在非UI線程中使用,感興趣的朋友可以了解下哦2013-01-01

