UI 이벤트 처리

old/UI Design 2010. 6. 15. 17:17
1. 이벤트 리스너(Listener)

   View.OnClickListener -> onClick()

   View.OnFocusChangeListener -> onLongClick(), onFocusChange()

   View.OnKeyListener -> onKey()

   View.OnTouchListener -> onTouch()

   View.OnCreateContextMenuListener -> onCreateContextMenu()


[사용법 1]

button.setOnClickListener(mListener);

private OnClickListener mListener = new OnClickListener() {
   public void onClick(View v) {
      }
};


[사용법 2]

public class exActivity extends Activity implements OnClickListener {
  ...
  button.setOnClickListener(this);
}

public void onClick(View v) {
 }
...
}


2. 이벤트 핸들러 (Handler)

  onKeyDown() - 신규 키 이벤트 발생 시 호출

  onKeyUp() - 키 up 이벤트 발생 시 호출

  onTrackballEvent() - 트랙볼 모션 이벤트가 발생할 시 호출

  onFocusChanged() - View가 Focus를 잃거나 얻을 때 호출

Activity.dispatchTouchEvent - 이벤트가 윈도우로 전달되기 전에 액티비티가 가로챌 수 있게 허용한다.
ViewGroup.onInterceptTouchEvent - 부모 뷰가 자식 뷰의 이벤트를 감시하도록 허용한다.
ViewParent.requestDisallowInterceptTouchEvent - 부모 뷰가 이벤트를 가로채면 안된다는 것을 가리킨다.


3. 터치(Touch) 모드

터치 디바이스에서는 스크린 터치 시 터치모드로 진입하게 되고 isFocusableTouchMode가 true인 뷰들만 포커스 될 것이다. isInTouchMode()를 호출하여 디바이스가 터치모드에 있는지 확인 할 수 있다.


4. 포커스(Focus) 처리

프레임워크는 사용자 입력에 반응하여 포커스의 움직임을 처리한다.
isFocusable()을 통해 포커스를 가지고자 하는지 확인할 수 있고 setFocusable()를 사용하여 포커스를 허용하게 변경할 수 있다. 포커스의 이동은 nextFocusDown~nextFocusUp으로 xml에서 정의할 수 있다.

[순환 포커스 이동] - 최상위와 최하위도 상하로 순환하도록 지정하는 xml 수정
<LinearLayout
   ...
   <Button android:id="@+id/Top"
               android:nextFocusUp="@+id/Bottom"
                .../>
   <Button android:id="@+id/Bottom"
               android:nextFocusDown="@+id/Top"
                .../>
</LinearLayout>

특정 뷰에게 포커스를 넘기도록 요청하려면 requestFocus()를 호출한다.

'old > UI Design' 카테고리의 다른 글

Style & Theme  (0) 2010.06.30
Notification  (0) 2010.06.17
style  (0) 2010.02.22
기본 UI 생성 순서  (0) 2010.02.22
R.anim  (0) 2010.02.22
Posted by jazzlife
,