안드로이드 개발 정보
(글 수 568)
Key events executed on key-up
안드로이드 2.0 부터는 HOME, MENU, BACK, SEARCH 키가 버츄얼키로 들어간 것을 지원합니다. 더 나은 사용자 경험을 위해 이 키들은 Key Up에 이 버튼들을 실행하게 됩니다.
만약 현재 애플리케이션이 Key-Down시에 버튼을 입력을 처리하고 있다면 영향을 미칠 수 있습니다. BACK키일 경우는 특히 그렇기 때문에 애플리케이션이 키를 잘 처리할 수 있도록 만들어주어야 합니다.
보통의 경우 BACK 키를 가로채서 처리하는 것은 좋지 않지만 만약 그런 것을 필요로 하고 현재 그 처리를 Key Down에 하고 있다면 코드를 수정할 필요가 있습니다.
안드로이드 2.0에서 새로 추가된 메소드들로 이것을 처리할 수도 있는데요. Dialog나 Activity에서는 onBackPressed() Method 를 구현하시고 View에서 처리할때는 onKeyDown을 다음과 같이 처리합니다.
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { // *** DO ACTION HERE *** return true; } return super.onKeyUp(keyCode, event); }
낮은 버전에서 동작하는 경우는 위 코드와 같이 처리하면 되구요. 트래킹 플래그를 하나 저장해놓고, 포커스가 변경되거나 할때 플래그를 클리어하면 됩니다.
BACK등의 동작을 덮어쒸우는 것은 많은 애플리케이션에서 하고 계실 것 같아서 참고하시라고 번역해놓았습니다. 보통 2.0 이전 예제들은 거의다 키처리를 keyDown에서 처리하고 있기에 많은 앱에 해당하는 내용인것 같아요.
http://developer.android.com/sdk/android-2.0.html#api
감기조심하세요.