Wil*_*han 1 android statusbar navigationbar
我的目标是:用户触摸屏幕底部的导航栏(在某些平板电脑上的导航/状态栏)后,我捕获此事件并运行一个方法,在几秒钟后使该栏变暗。
但当我进行互联网研究时,这似乎是不可能的。我尝试解决这个问题,但每个触摸事件仅在栏上方的像素边界内起作用。
所以我的问题是:无法捕获导航/状态栏触摸事件的原因是什么?
首先,导航栏和状态栏不是应用程序窗口的一部分......它们是操作系统拥有的系统窗口,由完全独立的进程运行。未经操作系统的明确许可,无法将触摸侦听器附加到View另一个窗口中的触摸侦听器,因为这将使第三方应用程序可以拦截分派到其他应用程序的触摸事件。如果可能的话,这显然将是一个重大的安全漏洞。
效率是 Android 团队可能没有公开侦听导航/状态栏中触摸事件的功能的另一个原因。就像我之前所说的,导航/状态栏是单独进程中的窗口,因此即使它们有充分的理由为应用程序创建某种触摸事件侦听器,将触摸事件坐标分派到您的应用程序也会涉及大量的进程间操作沟通。因此,实现这样的功能可能需要谷歌做出一些重大的设计决策。
也就是说,当然您可以使用一些回调来侦听某些事件。例如,您可以覆盖onBackPressed()或onKeyUp()/KEYCODE_HOME分别侦听后退/主页按钮点击。除此之外,除非 Android 框架公开 API 方法来允许您实现您正在寻找的目标,否则您可能不会有太多运气。
| 归档时间: |
|
| 查看次数: |
1516 次 |
| 最近记录: |