1. 이벤트 리스너(Listener)
View.OnClickListener -> onClick()
View.OnFocusChangeListener -> onLongClick(), onFocusChange()
View.OnKeyListener -> onKey()
View.OnTouchListener -> onTouch()
View.OnCreateContextMenuListener -> onCreateContextMenu()
[사용법 1]
[사용법 2]
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 수정
특정 뷰에게 포커스를 넘기도록 요청하려면 requestFocus()를 호출한다.
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) {
}
};
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) {
}
...
}
...
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>
...
<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 |