안드로이드 프로그래밍에 있어서 기본적으로 화면 ui 구성은 activity_main.xml 로 구성된다.
코드형태로 구성되는것이 원칙이나 최근에는 android studio 상에 간단하게 클릭으로 구성할 수 있게 업데이트 되었다.
그리고 MainActivity.java 에서는 setContentView로 activity_main.xml 에 만들어진 layout을 받아와서 해당 ui에 java로 이벤트를 구성해준다..
마치 웹개발에서 html 과 javascript의 관계 처럼 이루어진다.
화면 ui 구성할 때 부여 받은 id로 MainActivity 에서 해당 컨텐츠를 찾아서 사용한다.
textView = findViewById(R.id.textView2);
view = findViewById(R.id.view);
위와 같이 findViewById(R.id. 해당되는 contents의 id) 형태로 객체를 만들어 준다.
1. 터치이벤트
화면이 터치되었을때 터치된 곳의 좌표를 scrollview 내에 textview로 출력해준다.
아래와 같이 코드를 구성하였다.
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;
}
터치가 이루어지는 view 에서 setOnTouchListener 에 OntouchLisner를 구성하면 아래의 onTouch 함수가 오버라이드되어 자동으로 형식이 생성된다.
그리고 매개변수로 받는 motionEvent의 getAction에서는 현재 터치가 어떤 터치인지 알려주는 int형식의 숫자를 반환한다.
이를 이용하여 현재 터치가 눌렸는지 움직였는지 뗐는지를 구분 하여 화면에 출력해준다.
아 , 그리고 여기서 println 함수는 하기와 같이 구성하였다.
TextView textView;
textView = findViewById(R.id.textView2);
public void println(String data){
textView.append(data + "\n");
}
선언부에 textView를 선언하고 onCreate 내에 해당 textView의 id로 초기화 해준다.
그리고 해당 textview에 appand를 이용하여 문자열을 표시해준다.
이어서 view2의 화면에서는 onLongPress(길게터치), onFling(터치한채로 움직임) 등의 디테일한 터치 상황에따른 분류가되어있는 gestureDetector 에 대해서 정의하였다.
하기와 같이 view2 setOntouchLisner 상황일때 gestureDetector에 onTouchEvent상에 motionEvent를 넣어줌으로 정의한다.
View view2 = findViewById(R.id.view2);
view2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
gestureDetector.onTouchEvent(motionEvent);
return true;
}
});
2. 키이벤트
터치에 이어서 키를 눌렀을 경우에도 이벤트를 넣을 수 있다.
대표적으로 가장 많이 눌려지는 Back 버튼에 대해서 정의하였다.
MainActivity class 내에 android studio의 generate 기능을 통해 onKeyDown(@Override) 메소드를 생성해준다.
그리고 keyCode가 keyEvent.KEYCODE_BACK 일때 문자열을 출력해주고 return true 를 통해 메소드에서 나온다.
KEYCODE_버튼명 을 통해 다양한 키이벤트를 정의할 수 있다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
println(" 시스템 [back] 버튼이 눌렸어요");
return true;
}
return false;
}
'개발일지' 카테고리의 다른 글
안드로이드 프로그래밍 - 화면전환 2 (0) | 2022.11.07 |
---|---|
안드로이드 프로그래밍 - 화면전환(가로,세로) (0) | 2022.11.07 |
자바 문법 뽀개기 1-1~15강 (0) | 2022.10.02 |
웹개발 왕초보 4주차 개발일지 (0) | 2022.09.27 |
웹개발 3주차 개발일지 (0) | 2022.09.18 |