Android MotionEvent中getX()和getRawX()的区别

泡在网上的日子 / 文 发表于2014-07-30 14:45 次阅读 MotionEvent

RawX,RawY 相对于屏幕位置坐标
X,Y 相对于容器的位置坐标

测试代码:

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;
}
}


总结:

getX()是表示Widget相对于自身左上角的x坐标
而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理


收藏 赞 (4) 踩 (0)
上一篇:谈谈安卓中的下拉刷新,上拉加载ListView的实现
下拉刷新本是ios上的效果,后来在android中也大量采用,但是我一直没有找到一个在性能和效果上都可以比肩ios的那种控件,有些控件效果不错但是滑动不流畅,有些很流畅但是效果突兀,比如oschina的客户端,后来看了看oschina的下拉刷新代码,觉得他这个可以自
下一篇:Android文字测量与绘制的两个注意点
1、在用canvas绘制文字时需要测量文字的绘制范围,常用的方法是使用paint.getTextBound(),然后通过返回的Rect得到长宽,不过这个测量的宽度有些误差,导致计算位置坐标是偏移,使用paint.measureText()可以得到文字准确的宽度。 2、canvas.drawText(text, x