LFZ
LFZ
  • 发布:2016-07-17 17:12
  • 更新:2016-07-18 11:28
  • 阅读:4657

【报Bug】设置fullscreen为true只有状态栏隐藏,导航栏显示

分类:5+ SDK

详细问题描述
[内容]
设置fullscreen为true只有状态栏隐藏,导航栏显示,不知道官方的沉浸式代码如何写的。

自己写了隐藏代码,可是例如

plus.nativeUI.showWaiting("正在处理...");

//弹出系统组件时底部的导航栏就会弹出

private static Handler sHandler;   
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        requestWindowFeature(Window.FEATURE_NO_TITLE);  

        //隐藏操作菜单  
        sHandler = new Handler();    
        sHandler.post(mHideRunnable); // hide the navigation bar    

        final View decorView = getWindow().getDecorView();    
        decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener(){    
            @Override    
            public void onSystemUiVisibilityChange(int visibility){    
               if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {  
                 //现在系统状态栏,导航栏处于显示状态。  
                   Log.e("屏幕", "导航栏处于显示状态");  
                   sHandler.post(mHideRunnable); // hide the navigation bar    
               }else {  
                 //系统状态栏,导航栏处于 消失 状态  
                   Log.e("屏幕", "导航栏处于消失状态");  
               }  
            }    
        });       
        if (mEntryProxy == null) {  
            FrameLayout f = new FrameLayout(this);  
            // 创建5+内核运行事件监听  
            WebappModeListener wm = new WebappModeListener(this, f);  
            // 初始化5+内核  
            mEntryProxy = EntryProxy.init(this, wm);  
            // 启动5+内核  
            mEntryProxy.onCreate(this, savedInstanceState, SDK.IntegratedMode.WEBAPP, null);  
            setContentView(f);  
        }  
    }  

@Override  
    public void onWindowFocusChanged(boolean hasFocus) {  
        super.onWindowFocusChanged(hasFocus);  
        if (hasFocus) {  
            sHandler.post(mHideRunnable);  
        }  
    }  
    Runnable mHideRunnable = new Runnable() {    
        @Override    
        public void run() {    
            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 show    
                flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE  
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
                        | View.SYSTEM_UI_FLAG_FULLSCREEN  
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;    

            }else{    
                // touch the screen, the navigation bar will show    
                flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;    
            }    

            // must be executed in main thread :)    
            getWindow().getDecorView().setSystemUiVisibility(flags);    
        }    
    };  

运行环境
[系统版本]
安卓4.4.2

2016-07-17 17:12 负责人:无 分享
已邀请:
Android_磊子

Android_磊子

确实是 只对状态通知栏进行操作,设置全屏也只是操作通知栏。

  • LFZ (作者)

    我想知道如何监听弹窗?还有不知道为什么监听到了不是全屏的时候(弹窗的时候),然后动态设置全屏不生效,必须是弹窗消息才生效变为全屏。我想知道你们是如何动态设置状态来隐藏的。

    2016-07-18 11:39

该问题目前已经被锁定, 无法添加新回复