Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别

getX() : 是获取相对当前控件(View)的坐标

getRawX() : 是获取相对显示屏幕左上角的坐标

演示示例代码

Java代码:

public class MainActivity extends Activity implements OnTouchListener {private Button btn;private int x = 0, y = 0;private int rawX = 0, rawY = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn = (Button) findViewById(R.id.btn);btn.setOnTouchListener(this);}@Overridepublic 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.e("homer", "x = " + x + "; y = " + y + "; rawX = " + rawX + "; rawY = " + rawY);break;case MotionEvent.ACTION_UP:break;}return false;}}


xml 代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    tools:context=".MainActivity" >    <TextView        android:id="@+id/txt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="@string/hello_world" />    <Button        android:id="@+id/btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/txt"        android:layout_centerInParent="true"        android:text="button me" /></RelativeLayout>


运行结果:

结果说明:

x,y : 分别获取的相对Button控件的坐标 getX(), getY()

rawX,rawY : 分别获取的相对显示屏幕左上角的坐标 getRawX(), getRawY()

总结:

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

参考推荐:

Android 获取屏幕尺寸与密度

Android的计量单位px,in,mm,pt,dp,dip,sp

Bitmap 之 getPixels() 的 stride

更多相关文章

  1. [Network]Android(安卓)N Ethernet新IP获取机制—IpManager
  2. Android(安卓)获取当前设备的IP地址
  3. android定时获取数据更新
  4. android 多媒体之 MediaStore 学习记录
  5. android点滴3
  6. android基于Xmpp的即时通讯开发
  7. android 完美获取状态栏高度
  8. Android获取应用程序的信息
  9. Android获取版本号

随机推荐

  1. eclipse中运行android工程启动失败的问题
  2. android amlogic系统源码中去除屏保
  3. android 申请移动应用的签名生成方法
  4. android查看异常技巧
  5. Eclipse下android相关设置
  6. ProgressBar背景的改变
  7. android framework 低电量关机处理流程
  8. Android(安卓)开发技巧之Log发送UDP报文,S
  9. Android(安卓)滑动效果基础篇(四)—— Gall
  10. Flutter开始干系列-一个完整的登录实践