700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android隐藏底部虚拟导航栏及系统状态栏终极方案

Android隐藏底部虚拟导航栏及系统状态栏终极方案

时间:2020-06-03 09:49:01

相关推荐

Android隐藏底部虚拟导航栏及系统状态栏终极方案

前言:

笔者最近做一个平板的项目需要彻底隐藏系统状态栏及底部虚拟导航栏从而达到全屏的效果,试了很多方案都不太好,有些虽然能达到类似效果,但会因为其他因素例如弹框,手上滑而失去效果。在大部分项目是够用的,但像我这种特殊情况,就得用特殊方法去解决了,首先小伙伴们得明确自己的需求,我这里使用的方法是让它永远不出现,即全屏,因为我做的是launcher定制项目,所以有类似需求伙伴,你们的福利来了。使用这些方法,有一个前提,那就是需要root权限,好了,下面我直接亮代码了。

一,隐藏SystemUI(即状态栏及底部虚拟导航栏)

//隐藏SystemUIpublic static boolean hideNavigation(Context context){boolean ishide;try{String command;command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib service call activity 42 s16 com.android.systemui";Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c",command });proc.waitFor();ishide = true;}catch(Exception ex){Toast.makeText(context, ex.getMessage(),Toast.LENGTH_LONG).show();ishide = false;}return ishide;}

二,显示SystemUI

//显示SystemUIpublic static boolean showNavigation(){boolean isshow;try{String command;command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService";Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c",command });proc.waitFor();isshow = true;}catch (Exception e){isshow = false;e.printStackTrace();}return isshow;}

三,普通方法(不需root适合大部分项目)

protected void hideBottomUIMenu() {int flags;int curApiVersion = android.os.Build.VERSION.SDK_INT;// This work only for android 4.4+if(curApiVersion >= Build.VERSION_CODES.KITKAT){// This work only for android 4.4+// hide navigation bar permanently in android activity// touch the screen, the navigation bar will not showflags = View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;}else{// touch the screen, the navigation bar will showflags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;}// must be executed in main thread :)getWindow().getDecorView().setSystemUiVisibility(flags);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。