歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android MotionEvent 坐標獲取

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;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  btn = (Button) findViewById(R.id.btn);
  btn.setOnTouchListener(this);
 }

 @Override
 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.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 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved