원론적 이벤트 모델
폰의 키를 누르는 순간의 이벤트
•onKeyDown : 키가 눌린 순간의 이벤트
•onKeyUp : 키를 떼는 순간의 이벤트
•onKeyLongPress : 키를 오래 누르는 순간의 이벤트
//back button 이벤트를 위해
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
//back button 이 눌린거라면..
if (keyCode === KeyEvent.KEYCODE_BACK) {
//처음 back button 을 누르거나 누른지 3초가 지난거라면
if (System.currentTimeMillis() - initTime > 3000) {
Toast.makeText(this, "종료하려면 한번더 누르세요!!", Toast.LENGTH_SHORT).show()
initTime = System.currentTimeMillis()
return true
}
}
return super.onKeyDown(keyCode, event)
}
•유저가 화면을 터치해서 발생시키는 이벤트
•onTouchEvent() 이벤트 콜백함수 이용
•ACTION_DOWN : 화면을 터치한 순간의 이벤트
•ACTION_UP : 화면에서 터치를 떼는 순간의 이벤트
•ACTION_MOVE : 화면을 터치해 이동하는 순간의 이벤트
•x : 이벤트가 발생한 View 내에서의 좌표
•y : 이벤트가 발생한 View 내에서의 좌표
•rawX : 화면에서의 좌표
•rawY : 화면에서의 좌표
class MainActivity : AppCompatActivity() {
lateinit var resultView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
resultView = findViewById(R.id.resultView)
}
override fun onTouchEvent(event: MotionEvent?): Boolean {
var eventType = ""
when (event?.action){
MotionEvent.ACTION_DOWN -> eventType = "DOWN EVENT"
MotionEvent.ACTION_UP -> eventType = "UP EVENT"
MotionEvent.ACTION_MOVE -> eventType = "MOVE EVENT"
}
resultView.text = "$eventType : x - ${event?.x}, y - ${event?.y}"
return super.onTouchEvent(event)
}
}
OOP적 이벤트 : 이벤트가 발생한 객체의 명료성
뷰를 유저가 터치하는 순간의 이벤트