MotionEvent的getRawX和getX方法的区别

main.xml如下:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="测试MotionEvent的 getRawX(Y)()和 getX(Y)()方法 "
        android:layout_centerHorizontal="true"
    />
    <Button
        android:id="@+id/button" 
        android:layout_width="220dip"
        android:layout_height="180dip"
        android:text="Touch    ME "
        android:layout_centerInParent="true"
     />

</RelativeLayout>

 

MainActivity如下:

package cn.testtouchevent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.app.Activity;
/**
 * Demo描述:
 * 测试MotionEvent的 getRawX(Y)()和 getX(Y)()两个
 * 方法的区别
 * 
 * 测试结果:
 * getX(Y)    表示的是相对于控件自身左上角的坐标
 * getRawX(Y) 表示的是相对于设备屏幕左上角的坐标
 */
public class MainActivity extends Activity {
    private Button mButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
	private void init(){
		mButton=(Button) findViewById(R.id.button);
		mButton.setOnTouchListener(new TouchListenerImpl());
	}
	private class TouchListenerImpl implements OnTouchListener{
		@Override
		public boolean onTouch(View v, MotionEvent event) {
			switch (event.getAction()) {
			case MotionEvent.ACTION_DOWN:
				float x=+event.getX();
				float rawX=+event.getRawX();
				float y=+event.getY();
				float rawY=+event.getRawY();
				System.out.println("x="+x+",rawX="+rawX);
				System.out.println("y="+y+",rawY="+rawY);
				break;
			default:
				break;
			}
			return false;
		}
		
	}
}


 

你可能感兴趣的:(MotionEvent的getRawX和getX方法的区别)