[챕터 2-2-5] 이벤트
2020. 2. 9. 12:18ㆍAndroid/Android 챕터 2-2
반응형
결과화면
하늘색 영역
손가락 뗌, 손가락 눌림, 손가락 움직임 상태 이벤트 감지
연노란색 영역
onDown 상태 이벤트 감지
onFling 상태 이벤트 감지
하단의 흰색 영역
표시
하단의 백버튼(<) 클릭 시
이전 화면으로 돌아가지 않고
시스템[BACK] 버튼이 눌렸어요. 메세지
균등 3분할
MainActivity
더보기
package org.minokuma.myevent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
View view = findViewById(R.id.view);
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int action = motionEvent.getAction();
float curX = motionEvent.getX();
float curY = motionEvent.getY();
if(action == MotionEvent.ACTION_DOWN){
println("손가락 눌림 : " + curX + ", " + curY);
}else if(action == MotionEvent.ACTION_MOVE){
println("손가락 움직임 : " + curX + ", " + curY);
}else if(action == MotionEvent.ACTION_UP){
println("손가락 뗌 : " + curX + ", " + curY);
}
return true;
}
});
detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent motionEvent) {
println("onDown 호출됨");
return true;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
println("onLongPress 호출됨");
}
@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
println("onFling 호출됨 : " + v + ", " + v1);
return true;
}
});
View view2 = findViewById(R.id.view2);
view2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
detector.onTouchEvent(motionEvent);
return true;
}
});
}
public void println(String data){
textView.append(data + "\n");
}
}
오버라이드 메소드를 이용해 재정의
onKeyDown 선택
더보기
package org.minokuma.myevent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
View view = findViewById(R.id.view);
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int action = motionEvent.getAction();
float curX = motionEvent.getX();
float curY = motionEvent.getY();
if(action == MotionEvent.ACTION_DOWN){
println("손가락 눌림 : " + curX + ", " + curY);
}else if(action == MotionEvent.ACTION_MOVE){
println("손가락 움직임 : " + curX + ", " + curY);
}else if(action == MotionEvent.ACTION_UP){
println("손가락 뗌 : " + curX + ", " + curY);
}
return true;
}
});
detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent motionEvent) {
println("onDown 호출됨");
return true;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
println("onLongPress 호출됨");
}
@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
println("onFling 호출됨 : " + v + ", " + v1);
return true;
}
});
View view2 = findViewById(R.id.view2);
view2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
detector.onTouchEvent(motionEvent);
return true;
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
println("시스템 [BACK] 버튼이 눌렸어요.");
return true;
}
return false;
}
public void println(String data){
textView.append(data + "\n");
}
}
반응형
'Android > Android 챕터 2-2' 카테고리의 다른 글
[챕터 2-2-7] 오리엔테이션 (방향전환) 2 (0) | 2020.02.09 |
---|---|
[챕터 2-2-6] 오리엔테이션 (0) | 2020.02.09 |
[챕터 2-2-4] Drawable 3 (0) | 2020.02.09 |
[챕터 2-2-3] Drawable 2 (0) | 2020.02.09 |
[챕터 2-2-2] Drawable 1 (0) | 2020.02.09 |