2014-11-25 3 views
1

목표 : 사용자가 화면 하단의 탐색 표시 줄 (일부 태블릿 탐색/상태 표시 줄)을 터치 한 후이 이벤트를 잡아 내고 몇 초 후에이 막대를 흐리게 표시하는 메소드를 실행합니다.탐색/상태 표시 줄 터치 리스너가 없습니다. 이유가 무엇입니까?

그러나 인터넷 연구를 진행하면서 이것이 가능하지 않은 것처럼 보입니다. 나는이 문제를 해결하려고 노력했지만, 모든 터치 이벤트는 바 위에있는 픽셀 경계에서만 작동합니다.

제 질문은 탐색/상태 표시 줄 터치 이벤트를 수신 할 수없는 이유는 무엇입니까?

+1

Google은 사용자가 액세스 권한이 필요하지 않기 때문에 – tyczj

+0

전혀 이유가 없습니다. –

+0

탐색 및 상태 표시 줄은 응용 프로그램의 UI 일부가 아니기 때문에. 그것들은 시스템 UI의 일부입니다. 시스템은 터치 이벤트에 응답 할 수 있습니다. 따라서 ROM 모드는 당신이 추구하는 것을 제공 할 수 있습니다. – CommonsWare

답변

1

우선 탐색 바 및 상태 표시 줄은 응용 프로그램 창의 일부가 아닙니다 ... OS가 소유하고 완전히 별도의 프로세스로 실행되는 시스템 창입니다. 타사 응용 프로그램이 다른 응용 프로그램에 전달 된 터치 이벤트를 가로 챌 수 있으므로 OS에서 명시 적으로 허가하지 않고 다른 창에있는 View에 터치 리스너를 부착 할 방법이 없습니다. 이것은 가능하다면 분명히 주요 보안 취약점이 될 것입니다.

Android 팀이 탐색/상태 표시 줄에서 터치 이벤트를 수신하는 기능을 공개하지 않은 이유 중 하나가 효율입니다. 앞서 말했듯이, 네비게이션/상태 표시 줄은 별도의 프로세스에있는 창이므로 응용 프로그램에 대한 일종의 터치 이벤트 수신기를 만드는 데 좋은 이유가 있다고하더라도 터치 이벤트 좌표를 응용 프로그램에 전달하는 데는 많은 프로세스가 필요합니다 통신. 따라서 이러한 기능을 구현하려면 Google에서 중요한 디자인 결정을해야 할 것입니다.

물론, 특정 이벤트를 수신하는 데 사용할 수있는 콜백이 있습니다. 예를 들어, onBackPressed() 또는 onKeyUp()/KEYCODE_HOME을 다시 지정하여 뒤로/집 버튼 클릭을 각각 청취 할 수 있습니다. 그것 이외에, 안드로이드 프레임 워크가 당신이 찾고있는 것을 성취 할 수있게 해주는 API 메소드를 드러내지 않는 한, 당신은별로 행운이 없을 것입니다.

+0

감사합니다, 당신의 대답은 나의 호기심을 만족 시켰습니다. –

+0

@WillNeithan 아무런 문제가 없으며 물어봐 줘서 고마워. :) –