アンドロイド3)イベント処理
Concepts of Event Programming
1. Event ModelHierarchyイベントモデル:元のイベント、ユーザーがアプリケーションで実行できる元のイベント ex) Touch Event, Key Event ActivityはonTouchEvent関数などを上書きして定義するだけで呼び出すことができます Delegationイベントモデル:OOPイベントは、OOPによってイベントを再解釈して処理される(OOPプログラム自体が重要) TouchEventはすべてのイベントを処理することができるが、OOPの明瞭性 に従って1)イベントが発生したビューオブジェクトを明確に指定 2)イベントタイプを性質別に区分
Key Event携帯電話のボタンを押した瞬間のイベント;オリジナルイベント タイプ onKey Down:キーを押した瞬間のイベント onKeyUp:キーを押した瞬間のイベント onKeyLongPress:ロングボタンの瞬間のイベント
※KakaoTalkなどで文字を入力する際のキーボードをSoft Keyboardといいます.アプリケーションでは、Soft Keyboardはボタンにすぎません.そのため、Key Eventは機能しません.
※では、Key Eventはいつ使いますか?アンドロイド携帯電話の下端にあるback、home、overviewボタン、デバイス上のpower、volume up/downボタンをシステムボタンと呼びます.これらのボタンは、アンドロイドシステムではキーイベントとみなされます.特にbackボタンの処理に用いられる.
Touch Eventユーザによるタッチスクリーンによるイベント onTouchEvent()イベントコールバック関数 タイプ ACTION DOWN:画面をタッチした瞬間のイベント ACTION UP:画面上のタッチ瞬間イベント ACTION MOVE:タッチスクリーンの瞬間イベント イベント座標 x:イベントビューの座標 y:イベントビューの座標 rawX:画面上の座標 rawY:画面上の座標 ユーザがビューをタッチした瞬間のアクティビティ Viewクラスで宣言されたイベント.必要に応じて、チェックボックスはステータス変更イベントをリストビューのItemClickEvent として再定義します.ClickEventとLongClickEvent ビュー内のイベントは常にイベントソースとイベントHandlerオブジェクトに分割されて処理される Event Source:Eventオブジェクト;ビューオブジェクト Event Handler:Event処理オブジェクト、開発者作成オブジェクト Event SourceはどのようにEvent Handlerを起動しますか?リスナに接続して起動します.すなわち、イベントがイベントソースで発生すると、リスナーとして登録されたイベントHandlerコードが実行される. 上記のコードでは、buttonがイベントソース、リスナーパラメータ()の内部でインタフェースを実装するオブジェクトは、イベントHandlerである.
SAM技術(単一抽象方法) しかし、いつもこのように記入するのは面倒ではないでしょうか. したがって、Cottlin言語で提供されるSAMテクノロジーを使用して実装できます. 実装インタフェースのオブジェクトをパラメータとして指定した場合、そのインタフェースの抽象関数は、関数内部の論理を括弧に記入するだけでよい.
1. Event Model
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when(keyCode){
KeyEvent.KEYCODE_0 -> Log.d("key", "0번 키가 눌렸어요")
KeyEvent.KEYCODE_A -> Log.d("key", "A 키가 눌렸어요")
}
return super.onKeyDown(keyCode, event)
}
ユーザキー→onKeyDown関数call→パラメータを介してキーコード値を渡す→キーコード値でユーザがどのキーを押したかを知る→アクティブにする※KakaoTalkなどで文字を入力する際のキーボードをSoft Keyboardといいます.アプリケーションでは、Soft Keyboardはボタンにすぎません.そのため、Key Eventは機能しません.
※では、Key Eventはいつ使いますか?アンドロイド携帯電話の下端にあるback、home、overviewボタン、デバイス上のpower、volume up/downボタンをシステムボタンと呼びます.これらのボタンは、アンドロイドシステムではキーイベントとみなされます.特にbackボタンの処理に用いられる.
Touch Event
override fun onTouchEvent(event: MotionEvent?): Boolean {
when(event?.action){ //action 속성으로 이벤트 종류 확인
MotionEvent.ACTION_DOWN -> {
// ...
}
MotionEvent.ACTION_UP -> {
// ...
}
}
return super.onTouchEvent(event)
}
ユーザがアクティブ画面に触れる→onTouchEvent関数呼び出し→パラメータトリガポイントの座標値やタッチイベントの種類を渡す→パラメータを利用して多様なビジネスロジックを実現override fun onTouchEvent(event: MotionEvent?): Boolean {
when(event?.action){
MotionEvent.ACTION_DOWN -> {
Log.d("location x", "Touch down event... x:${event.x}, rawX:${event.rawX}")
}
}
return super.onTouchEvent(event)
}
Click Eventbutton.setOnClickListener(object : View.OnClickListener {
override fun onClick(p0: View?){
// ...
}
})
button.setOnClickListener {
// ...
}
Reference
この問題について(アンドロイド3)イベント処理), 我々は、より多くの情報をここで見つけました https://velog.io/@alsgk721/안드로이드-3-Event-처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol