出处不明= =!总之是转的。。感谢原作者。
RawX,RawY 相对于屏幕位置坐标 X,Y 相对于容器的位置坐标 |
在学习android时候,看到MotionEvent类里有两个方法,getX getRawX,看解释,很模糊,看不太懂,这到底什么意思?肯定有区别.具体什么区别呢?
一看,两个函数都是返回了整型直,那好办了,把这两个直打印出来,分析下,估计能有收获.好.问题是怎么把这两个直打印出来呢?
哎,这就要求系统不断的丢出MotionEvent,这好办,上篇文章不写了,具体看代码,代码是最好的说明.
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class Res extends Activity implements View.OnTouchListener {
Button btn = null;
ImageView control;
int x=0;
int y=0;
int rawx=0;
int rawy=0;
ImageView mouse=null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mouse=(ImageView)findViewById(R.id.imageview);
btn=(Button)findViewById(R.id.button);
btn.setOnTouchListener(this);
// mGestureDetector = new GestureDetector(this, new LearnGestureListener());
}
public boolean onTouch(View view, MotionEvent event) {
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.qisda changerACTION_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"+"suzhou zangchunjie"+"getRawX="+rawx+"getRawY="+rawy+"/n");
break;
case MotionchangerEvent.ACTION_UP:
break;
}
return false;
}
}
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageview"
android:src="@drawable/bitmap"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="press"
android:layout_gravity="right"
/>
</LinearLayout>
这样通过打印直就可以比较结果了.
具体结果如下:
01-06 02:20:35.862: DEBUG/DEBUG(716): getX=22getY=10
01-06 02:20:35.862: DEBUG/DEBUG(716): getRawX=286getRawY=286
01-06 02:20:35.893: DEBUG/DEBUG(716): getX=23getY=10
01-06 02:20:35.893: DEBUG/DEBUG(716): getRawX=287getRawY=286
01-06 02:20:35.991: DEBUG/DEBUG(716): getX=24getY=10
01-06 02:20:35.991: DEBUG/DEBUG(716): getRawX=288getRawY=286
01-06 02:20:36.023: DEBUG/DEBUG(716): getX=25getY=10
01-06 02:20:36.023: DEBUG/DEBUG(716): getRawX=289getRawY=286
01-06 02:20:36.093: DEBUG/DEBUG(716): getX=26getY=10
01-06 02:20:36.093: DEBUG/DEBUG(716): getRawX=290getRawY=286
01-06 02:20:36.121: DEBUG/DEBUG(716): getX=27getY=10
01-06 02:20:36.121: DEBUG/DEBUG(716): getRawX=291getRawY=286
01-06 02:20:36.242: DEBUG/DEBUG(716): getX=28getY=10
01-06 02:20:36.242: DEBUG/DEBUG(716): getRawX=292getRawY=286
这就比较明显了,我画的是直线,getX是获取以widget左上角为坐标原点计算的X轴坐标直.
getRawX 获取的是以屏幕左上角为坐标原点计算的X轴坐标直.