Ass*_*iel 90
首先,如果你真的想要禁用Home按钮或任何其他按钮(例如Back按钮),请考虑很长很难,这不是应该做的事情(至少大多数时候,这是一个糟糕的设计).我只能为自己说话,但如果我下载的应用程序不允许我点击操作系统按钮,我接下来要做的就是卸载该应用并留下非常糟糕的评论.我也相信你的应用程序不会在App Store上展示.
现在...
请注意,MX Player要求在其他应用程序之上绘制权限:
由于您无法覆盖设备Home上的按钮Android(至少在最新的OS版本中没有).MX Player当您"锁定"应用程序并单击Home按钮时,将自己绘制在启动器的顶部.
要看到一个更简单和直接理解的例子,你可以看到Facebook Messenger App.
当我被要求提供有关MX Player Status Bar和Navigation Bar"overriding"的更多信息时,我正在编辑我的答案以包含这些主题.
首先,MX Player正在使用沉浸式全屏模式(DevBytes Video)KitKat.
Android 4.4(API Level 19)为setSystemUiVisibility()引入了一个新的SYSTEM_UI_FLAG_IMMERSIVE标志,让你的应用真正"全屏".此标志与SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN标志结合使用时,会隐藏导航和状态栏,让您的应用程序捕获屏幕上的所有触摸事件.
启用沉浸式全屏模式后,您的活动将继续接收所有触摸事件.用户可以通过沿系统条通常出现的区域向内滑动来显示系统条.这将清除SYSTEM_UI_FLAG_HIDE_NAVIGATION标志(以及SYSTEM_UI_FLAG_FULLSCREEN标志,如果应用),以便系统栏变为可见.这也会触发您的View.OnSystemUiVisibilityChangeListener(如果已设置).但是,如果您希望系统栏稍后自动隐藏,则可以改为使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY标志.请注意,标志的"粘性"版本不会触发任何侦听器,因为在此模式下临时显示的系统栏处于瞬态状态.
第二:隐藏状态栏
第三:隐藏导航栏
请注意,虽然使用沉浸式全屏仅用于KitKat隐藏Status Bar,Navigation Bar但不仅仅是KitKat.
关于第二和第三,我没有太多话要说,你得到了我相信的想法,无论如何都是快速阅读.请确保密切关注View.OnSystemUiVisibilityChangeListener.
我添加了一个Gist,它解释了我的意思,它不完整,需要一些修复,但你会得到这个想法.https://gist.github.com/Epsiloni/8303531
祝你好运,实现这一目标,玩得开心!
Lê *_*Duy 13
我按照shaobin0604的回答,我终于设法锁定HOME按钮,添加:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Run Code Online (Sandbox Code Playgroud)
到AndroidManifest.xml所有你需要做的就是复制HomeKeyLocker.java从杨少斌的lib到项目,并实现它就像在杨少斌的例子.BTW:我的AVD的Android版本是Android 4.0.3.
只是一个猜测,但我认为使用SYSTEM_ALERT_WINDOW权限(显示为"绘制其他应用程序",请参见此处)可能:将您的应用程序显示为全屏,系统警报类型窗口.这样,它会隐藏任何其他应用程序,即使是主屏幕,所以如果你按Home键,它不会真的被禁用,只是没有任何明显的效果.
MX Player已经宣布了这个权限,并且Facebook Messenger也有它用于显示任何东西的" 聊天头 " - 所以它可能是解决方案.
更新(从我的评论中添加):接下来,使用SYSTEM_UI_FLAG_HIDE_NAVIGATION结合捕获触摸事件/使用OnSystemUiVisibilityChangeListener覆盖默认行为(触摸时出现导航栏).此外,由于您说退出沉浸式手势不起作用,您也可以尝试设置SYSTEM_UI_FLAG_IMMERSIVE_STICKY(使用SYSTEM_UI_FLAG_FULLSCREEN和SYSTEM_UI_FLAG_HIDE_NAVIGATION).
| 归档时间: |
|
| 查看次数: |
152393 次 |
| 最近记录: |