Android 개발 중 MotionEvent 좌표 획득 방법 분석
3200 단어 AndroidMotionEvent
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()와 같은 이치
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.