더보기
-MainActivity.java-
package com.example.my15_touchevent;
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.EditText;
import android.widget.ScrollView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
View view1,view2;
ScrollView scrollView;
GestureDetector detector;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
view1 = findViewById(R.id.view1);
view2 = findViewById(R.id.view2);
scrollView = findViewById(R.id.scrollView);
view1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction(); //현재 이벤트 상태를 가져옴
float curX = event.getX();
float curY = event.getY();
if(action == event.ACTION_DOWN){
printString("손가락 눌림 : "+curX+", "+curY);
}else if(action == event.ACTION_MOVE){
printString("손가락 움직임 : "+curX+", "+curY);
}else if (action == event.ACTION_UP){
printString("손가락 뗌 : "+curX+", "+curY);
}
return true;
}
});
view2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return true;
}
});
detector=new GestureDetector(this, new GestureDetector.OnGestureListener() {
//화면이 눌렸을 때
@Override
public boolean onDown(MotionEvent e) {
String distannceX;
printString("onDown() 호출됨=>");
return true;
}
// 화면이 눌렸다 떼어지는 경우
@Override
public void onShowPress(MotionEvent e) {
printString("onShowPress() 호출됨");
}
//화면이 한손가락으로 눌렸다 떼어지는 경우
@Override
public boolean onSingleTapUp(MotionEvent e) {
printString("onsingleTapUp() 호출됨");
return true;
}
//화면이 눌린채 일정한 속도와 방향으로 움직였다 떼는 경우
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
printString("onScroll() 호출됨"+distanceX+", "+distanceY);
return true;
}
//화면을 손가락으로 오랫동안 눌렀을 경우
@Override
public void onLongPress(MotionEvent e) {
printString("onLongPress() 호출됨");
}
//화면이 눌린채 가속도를 붙여 손가락을 움직였다 떼는 경우
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
printString("onFling() 호출됨 =>"+velocityX+", "+velocityY);
return true;
}
});
}
private void printString(String s) {
textView.append(s +"\n");
scrollView.fullScroll(View.FOCUS_DOWN); //포커스가 젤 아래로 이동됨
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK ){
printString("시스템에서 [Back]버튼이 눌림");
return true;
}else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
printString("시스템에서 [VOLUME_UP]버튼이 눌림");
return true;
}else if(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
printString("시스템에서 [volume_down]버튼이 눌림");
return true;
}else if(keyCode == KeyEvent.KEYCODE_ENTER) {
printString("시스템에서 [Enter]버튼이 눌림");
return true;
}
/* else if(keyCode == KeyEvent.KEYCODE_V){
if(event.isAltPressed()){
printString("시스템에서 [ALT_V]버튼이 눌림");
return true;
}
}*/
return false;
}
}
'For developer > Android' 카테고리의 다른 글
(Android)my17_orientation,my18_orientation2(정리x) (0) | 2020.05.27 |
---|---|
(Android)my16_progress (0) | 2020.05.27 |
(Android)my14_smsservice (0) | 2020.05.27 |
(Android)my13_service (0) | 2020.05.21 |
(Android)my11_dialog_대화상자 (0) | 2020.05.21 |