[android] focusable과 focusableInTouchMode의 차이점은 무엇입니까?

각각의 실제 차이점을 알고 싶습니다. 각각을 언제 사용해야하며, 각각을 어떻게 사용해야하며, 어떤 상황에서 도움이됩니까?

몇 가지 예를 제시하고 자세히 설명하십시오.



답변

Android 개발자 블로그 : http://android-developers.blogspot.co.at/2008/12/touch-mode.html에 설명되어 있습니다.

다음 인용문을 통해 명확하게 알 수 있습니다.

그 자체로 터치 모드는 마지막 사용자 상호 작용이 터치 스크린으로 수행되었는지 여부를 표시하기 때문에 이해하기 매우 쉽습니다. 예를 들어, G1 휴대폰을 사용하는 경우 트랙볼이있는 위젯을 선택하면 터치 모드가 종료됩니다.

터치 모드에서는 초점과 선택이 없습니다. 그리드의 목록에서 선택한 항목은 사용자가 터치 모드로 들어가는 즉시 선택 취소됩니다. 마찬가지로, 사용자가 터치 모드에 들어가면 초점이 맞춰진 위젯은 초점이 맞지 않습니다.

이제 터치 모드에서는 초점이 존재하지 않는다는 것을 알았으므로 전적으로 사실이 아니라는 점을 설명해야합니다. 포커스는 터치 모드에서 존재할 수 있지만 매우 특별한 방식으로 터치 모드에서 포커스 가능이라고 부릅니다. 이 특수 모드는 EditText 또는 필터링이 활성화 된 경우 ListView와 같은 텍스트 입력을받는 위젯을 위해 만들어졌습니다.

터치 모드에서 포커스 가능은 코드 또는 XML에서 직접 설정할 수있는 속성입니다. 그러나 Android 정상 동작과의 일관성을 깨뜨리기 때문에 매우 특정한 상황에서만 드물게 사용해야합니다. 게임은 focusable in touch mode 속성을 잘 활용할 수있는 응용 프로그램의 좋은 예입니다. Google지도에서와 같이 전체 화면에서 사용되는 경우 MapView는 터치 모드에서 초점을 올바르게 사용할 수있는 또 다른 좋은 예입니다.


답변

몇 가지 예를 들어 자세히 설명하십시오.

제 경험을 드릴게요.

많은 ImageButton이있는 활동이있는 Google TV 애플리케이션이 있습니다.

ImageButton을 선택할 수 있기를 원했습니다.

따라서 사람이 마우스 나 리모컨으로 클릭하면 선택 만됩니다 (제 경우 강조 표시됨). 그런 다음 사용자가 선택한을 누르면 ImageButton작업이 트리거됩니다. 이 정확한 동작은 focusableInTouchModeXML 레이아웃을 통해 속성을 활성화함으로써 달성되었습니다 .

내가해야 할 일은 평범한 onClickListener ImageButton과 짜잔 뿐 !

핸드셋에서 내 응용 프로그램을 확인하지 않았지만 익숙한 결과를 제공 할 것 같습니다.

편집하다

언제?

제가 테스트 한 사용 사례를 말씀 드렸습니다. onClickListener두 번째 클릭시 버튼이 액션을 트리거 하기를 원할 때 , 처음 클릭하고 선택한 후Button .

첫 번째 클릭을 사용하여 “초점”을 얻고 내 버튼에 확대 배율 애니메이션을 표시했습니다.

어떻게?

XML 레이아웃 파일에서 버튼의 속성 focusableInTouchModetrue로 설정하기 만하면 됩니다.


답변

Focused는보기를위한 상태이며 일반적으로 포커스는 트랙볼과 dpad로 변경할 수 있습니다. 상태에 초점이 맞춰지면 뷰의 배경이 다를 수 있습니다.

터치 모드에서 Focusable을 사용하면 사용자가 뷰를 터치 할 때 뷰에 초점을 맞출 수 있습니다 EditText. 이러한 구성 요소의 좋은 예는 .

Button또는 클릭 할 수있는 구성 요소 프레스 상태에 관심이 무엇 일반적이다.


답변

사용자는 하드웨어 키 또는 버튼을 사용하거나 화면을 터치하여 장치와 상호 작용할 수 있습니다. 화면을 터치하면 장치가 터치 모드로 전환됩니다. 그런 다음 사용자는 화면의 가상 버튼, 이미지 등을 터치하여 상호 작용할 수 있습니다.

장치가 터치 모드인지 확인하려면 View 클래스의 isInTouchMode () 메서드를 호출하십시오 .


답변