๐ SeSAC์ 'JetPack๊ณผ Kotlin์ ํ์ฉํ Android App ๊ฐ๋ฐ' ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ ๊ธ ์ ๋๋ค.
ํฐ์ ํค๋ฅผ ๋๋ฅด๋ ์๊ฐ์ ์ด๋ฒคํธ
onKeyDown : ํค๊ฐ ๋๋ฆฐ ์๊ฐ์ ์ด๋ฒคํธ
onKeyUp : ํค๋ฅผ ๋ผ๋ ์๊ฐ์ ์ด๋ฒคํธ
onKeyLongPress : ํค๋ฅผ ์ค๋ ๋๋ฅด๋ ์๊ฐ์ ์ด๋ฒคํธ
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when (keyCode) {
KeyEvent.KEYCODE_0 -> Log.d("kotdev99", "0๋ฒ ํค๊ฐ ๋๋ ธ๋ค์.")
KeyEvent.KEYCODE_A -> Log.d("kotdev99", "Aํค๊ฐ ๋๋ ธ๋ค์.")
}
return super.onKeyDown(keyCode, event)
}
ํค๊ฐ ๋๋ฆฌ๋ฉด ํด๋น ํจ์๊ฐ ํธ์ถ๋๋ค.
๋งค๊ฐ๋ณ์๋ก KeyCode ๊ฐ์ด ์ ๋ฌ๋๊ณ , ์ด๊ฒ์ผ๋ก ์ ์ ๊ฐ ๋๋ฅธ ํค๋ฅผ ์์๋ผ ์ ์๋ค.
์ฑ์ ์ด๊ธฐํ๋ฉด์์ back ๋ฒํผ์ ๋๋ ์ ๋ '์ฑ์ด ์ข ๋ฃํฉ๋๋ค' ๋ผ๋ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ ์ถ๋ ฅ ๋ฑ
์ ์ ๊ฐ ํ๋ฉด์ ํฐ์นํด์ ๋ฐ์์ํค๋ ์ด๋ฒคํธ
override fun onTouchEvent(event: MotionEvent?): Boolean {
return super.onTouchEvent(event)
}
ํฐ์น ์ ํด๋น ํจ์๊ฐ ํธ์ถ๋๋ค.
๋งค๊ฐ๋ณ์๋ก ์ขํ๊ฐ ํน์ ํฐ์น ์ด๋ฒคํธ์ ์ข
๋ฅ๊ฐ ์ ๋ฌ๋๋ค.
override fun onTouchEvent(event: MotionEvent?): Boolean {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
}
MotionEvent.ACTION_UP -> {
}
}
return super.onTouchEvent(event)
}
๋งค๊ฐ๋ณ์๊ฐ MotionEvent ๋ผ๋ ๊ฐ์ฒด๋ค.
์ด ๋งค๊ฐ๋ณ์.action
์ด๋ผ๋ ํ๋กํผํฐ๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฒคํธ ์ข
๋ฅ๋ฅผ ํ์ธํ ์ ์๋ค.
ACTION_DOWN : ํ๋ฉด์ ํฐ์นํ ์๊ฐ์ ์ด๋ฒคํธ
ACTION_UP : ํ๋ฉด์์ ํฐ์น๋ฅผ ๋ผ๋ ์๊ฐ์ ์ด๋ฒคํธ
ACTION_MOVE : ํ๋ฉด์ ํฐ์นํด ์ด๋ํ๋ ์๊ฐ์ ์ด๋ฒคํธ
x : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ View ๋ด์์์ ์ขํ
y : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ View ๋ด์์์ ์ขํ
rawX : ํ๋ฉด์์์ ์ขํ
rawY : ํ๋ฉด์์์ ์ขํ
override fun onTouchEvent(event: MotionEvent?): Boolean {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
Log.d("kotdev99", "Touch down event.... x: ${event.x}, rawX: ${event.rawX}")
}
}
return super.onTouchEvent(event)
}
๋ทฐ๋ฅผ ์ ์ ๊ฐ ํฐ์นํ๋ ์๊ฐ์ ์ด๋ฒคํธ
์ต์์ ํด๋์ค์ธ View์ ์ ์ธ๋ ์ด๋ฒคํธ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ทฐ์์ ์ฌ์ฉ ๊ฐ๋ฅ
๋ฌผ๋ก ์ฒดํฌ๋ฐ์ค์์๋ StateChange Event, ๋ฆฌ์คํธ๋ทฐ์์๋ ItemClick Event ๋ผ๊ณ ์ฌ์ ์ํ์ฌ ์ฌ์ฉํ์ง๋ง, ๋ณธ์ง์ Click Event ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ClickEvent๋ฅผ ์ฌ์ฉํ๊ณ ,
๋ทฐ๊ฐ ์ค๋ ๋๋ฆฌ๋ ์๊ฐ์ ์ฒ๋ฆฌํ๊ณ ์ถ๋ค๋ฉด LongClickEvent ์ฌ์ฉ
ํญ์ Event Source
์ Event Handler
๋ผ๋ ๊ฐ์ฒด๋ก ๊ตฌ๋ถ๋์ด ์ฒ๋ฆฌ๋๋ค.
Event Source : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฐ์ฒด
Event Handler : ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ด์ฉ
๋ฆฌ์ค๋๋ก ์ฐ๊ฒฐํ๋ค.
open fun setOnClickListener(I: View.OnClickListener?): Unit
open fun setOnLongClickListener(I: View.OnLongClickListener?): Unit
button.setOnClickListener(object: View OnClickListener {
override fun onClick(p0: View?) {
//...........
}
})
๋งค๊ฐ๋ณ์๋ก ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด ์ฃผ์ด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค.
Kotlin์์๋ ์ธ์ด์์ ์ ๊ณตํ๋ ๊ธฐ๋ฒ์ผ๋ก ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
button.setOnClickListener {
//..........
}
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ง์ ํ ๋ ๊ทธ ์ธํฐํ์ด์ค์ ์ถ์ํจ์๊ฐ ๋ฑ 1๊ฐ๋ผ๋ฉด,
ํจ์ ๋ด๋ถ์ ๋ก์ง๋ง ๋ฐ๋ก ์ฝ๋ ๋ธ๋ก์ ์์ฑํ ์ ์๋ค.
์๋๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋๋ ์ธํฐํ์ด์ค View OnClickListener๋ฅผ ๊ฐ์ฒด๋ก ๊ตฌํํ๊ธฐ ์ํด
onClick()์ ์ฌ์ ์ ํด์ฃผ์ด์ผ ํ๋ค.