Android 개발 중 MotionEvent 좌표 획득 방법 분석

3200 단어 AndroidMotionEvent
이 사례 는 안 드 로 이 드 개발 에서 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()와 같은 이치
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기