2022. 12. 6. 17:07ㆍ_Study/AndroidStudio
터치와 키 이벤트 🐇¸.•*¨*•¸.•*¨*•¸.•*¨*•¸.•*¨*•
해당 자료는 강의 학습자료이며, Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린을 참고하였습니다.
터치 이벤트
앱의 화면에서 발생하는 사용자 이벤트를 터치 이벤트라고 하며 액티비티에 콜백 함수인 onTouchEvent()를 재정의하여 처리한다. 매개변수는 MotionEvent 객체이며, 이 객체이 터치의 종류와 발생지점(좌푯값)이 담긴다.
override fun onTouchEvent(event: MotionEvent?): Boolean {
return super.onTouchEvent(event)
} // onCreate 밑에 만들기 MainActivity 안이다.
터치 이벤트의 종류
- ACTION_DOWN : 화면을 손가락으로 누른 순간의 이벤트
- ACTION_UP : 화면을 손가락으로 떼는 순간의 이벤트
- ACTION_MOVE : 화면을 손가락으로 누른 채로 이동하는 순간의 이벤트
package com.example.ch3
import android.os.Bundle
import android.util.Log
import android.view.MotionEvent
import android.view.View
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.example.ch3.databinding.ActivityMainBinding
import org.w3c.dom.Text
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root) // 뷰 객체 생성
}
override fun onTouchEvent(event: MotionEvent?): Boolean {
when(event?.action){
MotionEvent.ACTION_DOWN ->{
Log.d("kkang","Touch down")
}
MotionEvent.ACTION_UP -> {
Log.d("kkang","Touch up event")
}
}
return super.onTouchEvent(event)
}
}
터치 이벤트 발생 좌표를 얻으려면 onTouchEvent() 함수인 매개변수 MotionEvent 객체로 획득한다.
- x : 이벤트가 발생한 뷰의 x 좌표
- y : 이벤트라 발생한 뷰의 y 좌표
- rawX : 화면의 X 좌표
- rawY : 화면의 Y 좌표
뷰를 나누었는데도 좌표가 화면좌표로 나왔다.
절대좌표와 상대좌표인지 더 찾아보기로 했다. view 상으로 Y 경로도 다르게 나와야하는데 같이 나와서 수정중이다.
키 이벤트 (키보드 사용 시 필요)
사용자가 폰의 키를 누르는 순간 발생한다.
콜백 함수
- onKeyDown : 키를 누른 순간의 이벤트에 호출된다.
- onKeyUp : 키를 떼는 순간의 이벤트에 호출된다. (드래그할때 좌표가 달라짐)
- onKeyLongPress: 키를 오래 누르는 이벤트에 호출된다.
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return super.onKeyDown(keyCode, event)
}
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
return super.onKeyUp(keyCode, event)
}
override fun onKeyLongPress(keyCode: Int, event: KeyEvent?): Boolean {
return super.onKeyLongPress(keyCode, event)
}
첫 번째 매개변수(keyCode)는 키의 코드이며 이 값으로 사용자가 어떤 키를 눌렀는지 식별한다.
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when(keyCode){
KeyEvent.KEYCODE_0 -> Log.d("kkang","0 키")
KeyEvent.KEYCODE_A -> Log.d("kkang","A 키")
}
return super.onKeyDown(keyCode, event)
}
소프트 키보드는 안드로이드 시스템에 등록된 앱으로서 키를 누르면 글은 입력되지만 키 이벤트는 발생하지 않는다.
하드웨어 키보드의 키를 입력하면 키 이벤트로 처리할 수 있다.
안드로이드 시스템 버튼은 5종류이다.
- 뒤로가기, 볼륨조절 버튼은 키 이벤트로 처리가능한 하드웨어 키보드
- 전원, 홈, 오버뷰 버튼은 키이벤트로 처리할 수 없다. (하드웨어이긴 함)
뒤로 가기 버튼 이벤트에는 onKeyDown(), onKeyUp() 함수 뿐만 아니라 onBackPressed() 함수도 이용 가능하다.
키를 누르는 순간 호출된다.
'_Study > AndroidStudio' 카테고리의 다른 글
시계 앱의 스톱워치 기능 만들기 코틀린 (0) | 2022.12.06 |
---|---|
안드로이드 스튜디오 뷰 이벤트 (0) | 2022.12.06 |
안드로이드 스튜디오 전화 앱의 키패드 화면 만들기 / 번호 누르기 가능 (0) | 2022.12.06 |
안드로이드 스튜디오 뷰를 배치하는 레이아웃 (0) | 2022.12.05 |
안드로이드 스튜디오 카카오톡 비밀번호 확인 화면 만들기 코틀린 (0) | 2022.12.05 |