728x90
반응형
Key Event
- 키 이벤트는 사용자가 하드웨어 키보드 또는 소프트 키보드를 사용할 때 발생한다.
- Android 기기에서는 볼륨 키, 백 버튼, 엔터 키 등이 키 이벤트를 발생시킨다.
주요 메서드
메서드 | 설명 |
setOnKeyListener() | View에 키 이벤트 리스너 등록 |
onKeyDown() | 키를 눌렀을 때 호출 |
onKeyUp() | 키를 뗄 때 호출 |
onKeyLongPress() | 키를 길게 눌렀을 때 호출 |
주요 키 코드 (KeyCode)
키 | 상수 (KeyCode) |
Back 버튼 | KeyEvent.KEYCODE_BACK |
Enter 키 | KeyEvent.KEYCODE_ENTER |
볼륨 업 | KeyEvent.KEYCODE_VOLUME_UP |
볼륨 다운 | KeyEvent.KEYCODE_VOLUME_DOWN |
방향키 (위) | KeyEvent.KEYCODE_DPAD_UP |
방향키 (아래) | KeyEvent.KEYCODE_DPAD_DOWN |
키 이벤트 처리 예시 (setOnKeyListener 사용)
val editText = findViewById<EditText>(R.id.editText)
editText.setOnKeyListener { v, keyCode, event ->
if (event.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
Toast.makeText(this, "엔터 키 입력됨", Toast.LENGTH_SHORT).show()
true // 이벤트 소비
} else {
false
}
}
- 엔터 키를 누를 때 Toast 메시지 출력
- true를 반환하면 이벤트가 소비되어 더 이상 전달되지 않는다.
키 이벤트 처리 예시 (onKeyDown, onKeyUp 오버라이드)
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return when (keyCode) {
KeyEvent.KEYCODE_BACK -> {
Toast.makeText(this, "뒤로 가기 버튼 눌림", Toast.LENGTH_SHORT).show()
true // 뒤로 가기 기본 동작 방지
}
KeyEvent.KEYCODE_VOLUME_UP -> {
Toast.makeText(this, "볼륨 업!", Toast.LENGTH_SHORT).show()
true
}
else -> super.onKeyDown(keyCode, event)
}
}
- super.onKeyDown() 호출 시 기본 동작 유지
Focus Event
- 포커스 이벤트는 사용자가 입력을 위해 특정 View(주로 EditText)에 포커스를 줄 때 발생한다.
- 입력 필드에 포커스를 주면 키보드가 표시되고, 포커스를 잃으면 키보드가 사라지는 등의 동작을 처리한다.
주요 메서드
메서드 | 설명 |
setOnFocusChangeListener() | 포커스 변경 이벤트 리스너 등록 |
hasFocus() | View가 현재 포커스를 가지고 있는지 확인 |
requestFocus() | 프로그래밍적으로 포커스를 요청 |
clearFocus() | 현재 포커스 제거 |
포커스 이벤트 처리 예시 (포커스 변경 감지)
val editText = findViewById<EditText>(R.id.editText)
editText.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) {
Toast.makeText(this, "포커스 얻음", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "포커스 잃음", Toast.LENGTH_SHORT).show()
}
}
- hasFocus가 true면 포커스를 얻은 것이고, false면 포커스를 잃은 상태
포커스 이벤트 처리 예시 (코드로 포커스 제어)
val editText = findViewById<EditText>(R.id.editText)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
editText.requestFocus() // EditText에 포커스 강제 설정
}
- requestFocus()를 통해 프로그래밍적으로 포커스를 이동할 수 있다.
포커스 제거 및 키보드 숨기기
fun hideKeyboard(view: View) {
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
}
editText.setOnFocusChangeListener { v, hasFocus ->
if (!hasFocus) {
hideKeyboard(v) // 포커스를 잃으면 키보드 숨기기
}
}
- InputMethodManager를 사용하여 소프트 키보드 숨기기 처리
728x90
반응형
'안드로이드 학습(Kotlin)' 카테고리의 다른 글
15. ViewPager의 개념과 구조 (0) | 2025.02.04 |
---|---|
14. RecyclerView와 Adapter, ViewHolder에 대해 (0) | 2025.02.04 |
12. View 이벤트 (터치) (0) | 2025.02.04 |
11. Activity와 Fragment의 개요 (1) | 2025.02.03 |
10. 버튼 클릭 이벤트, Toast 메시지, Logcat 사용법 (0) | 2025.02.03 |