KK上全屏界面如何实现禁止状态栏下拉?

[SOLUTION]

Google从KK开始增加了状态栏透明以及全屏
界面有通知可以下拉状态栏的设计,而这个设计出现的隐患是设置了FULL_SCREEN的界面是无法禁止状态栏下拉的,这样对一些工程测试app可能会造
成一定的影响,但是以google默认的设计,应用端无法修改此设计来满足自己的需求。

MTK
内部已经开发提供新的接口来实现全屏界面禁止下拉状态栏,如果贵司的代码还没有这部分逻辑,请参考如下:

1.
frameworks\base\core\java\android\view\View.java
    public
static final int SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 0x00001000;

+    /**
+     * @hide

+     *
+     * NOTE: Flag for {@link #setSystemUiVisibility(int)}: It help user to
disable transient
+     * status bar triggered by
gesture
+     */
+    public static
final int SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED = 0x00002000;

2.
frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java

  // monitor for system gestures

        mSystemGestures = new
SystemGesturesPointerEventListener(context,

               
new SystemGesturesPointerEventListener.Callbacks() {

                   
@Override

                   
public void onSwipeFromTop() {

+                       
if (isGestureIsolated())

+                           
return;

                       
if (mStatusBar != null) {

                           
requestTransientBars(mStatusBar);

                       
}

                   
}

                   
@Override

                   
public void onSwipeFromBottom() {

+                       
if (isGestureIsolated())

+                           
return;

                       
if (mNavigationBar != null && mNavigationBarOnBottom) {

                           
requestTransientBars(mNavigationBar);

                       
}

                   
}

                   
@Override

                   
public void onSwipeFromRight() {

+                       
if (isGestureIsolated())

+                           
return;                   


                       
if (mNavigationBar != null && !mNavigationBarOnBottom) {

                           
requestTransientBars(mNavigationBar);

                       
}

                   
}

                   
@Override

                   
public void onDebug() {

                       
// no-op

                   
}

+                   
private boolean isGestureIsolated() {

+                       
WindowState win = mFocusedWindow != null ? mFocusedWindow :
mTopFullscreenOpaqueWindowState;

+                       
if (win != null && (win.getSystemUiVisibility() &
View.SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED) != 0)

+                           
return true;

+                       
else

+                           
return false;

+                   
}

               
});

3.
請在修改完framework后,將測試app用setSystemUiVisibility的API加上SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED的flag

private View mView;

mView =
getWindow().getDecorView();
mView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED);

KK上全屏界面如何实现禁止状态栏下拉?

时间: 2024-12-22 08:41:59

KK上全屏界面如何实现禁止状态栏下拉?的相关文章

android4.4上全屏界面实现禁止状态栏下拉

附上我改动的方法:PhoneWindowManager.java里面的改动 --- a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -2863,7 +2863,9 @@ public cla

Android 禁止状态栏下拉

概述 因为需求所以贴出该代码,该源码需要系统共享,且开源板子上才能安装,其次需要将编译的apk进行platform签名,仅仅是记录一下开发过程. public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Object statusBarManagerService; private Method methodDisable; private TextView tvIn

android禁止状态栏下拉

[html] view plaincopyprint? public void onWindowFocusChanged(boolean hasFocus) { // TODO Auto-generated method stub System.out.println("hasfocus--->>>" + hasFocus); super.onWindowFocusChanged(hasFocus); try { Object service = getSystemS

仿QQ视频全屏界面旋转实现

// 实现效果:界面支持系统自动转屏和点击转屏 // ViewController.m // rotatoTest // Copyright © 2016年 yaoyao. All rights reserved. // 1.关闭系统自动转屏 // 2.获取设备方向,设置转屏, // 3.点击按钮,设置转屏 #import "ViewController.h" #import <UIKit/UIKit.h> #import <CoreGraphics/CoreGrap

一步使你的asp.net网站在手机浏览器上全屏显示

一步使你的asp.net网站在手机浏览器上全屏显示 1.问题 公司的asp.net网页在手机浏览器上初始化时显示的是缩放的页面,用户必须手动放大才能看清页面的字体,这样体验不好 2.解决 前段时间学习JQuery mobile 看到所有的demo页面都能全屏显示在手机上,页面上面都有这样一段代码: ? 1 <meta name="viewport" content="width=device-width, initial-scale=1"> 参数说明:

自定义锁屏界面,锁定系统,禁止返回和home键关闭界面

本文提供一个实现将自定义的界面显示在系统最顶层,达到锁定系统,禁止返回和home键关闭界面的解决方案. 在手机黑屏状态,也能够弹出解锁界面 1添加权限 <!-- 系统窗口,显示在最顶层 --> < uses-permission android:name= "android.permission.SYSTEM_ALERT_WINDOW" /> 2创建界面布局文件lock_screen.xml <LinearLayout xmlns:android=&quo

asp.net网站在手机浏览器上全屏显示

前段时间要把asp.net 网站,在手机上全屏浏览,发现总是小小的一块,不能全屏 后来发现 JQuery Mobile  中在开头都用 <meta name="viewport" content="width=device-width, initial-scale=1"> 然后在项目中加上以后就可以全屏显示了 参数说明: width - viewport的宽度 height - viewport的高度 initial-scale - 初始的缩放比例 mi

x5webview 自定义全屏界面

集成X5WEBVIEW可以选择全屏模式为标准全屏还是x5全屏,而不设置默认为false. 首先看看标准全屏的基本设置, if (webView.getX5WebViewExtension() != null) { Bundle data = new Bundle(); data.putBoolean("standardFullScreen", false);// true表示标准全屏,false表示X5全屏:不设置默认false, data.putBoolean("suppo

HTML_后台框架全屏界面_fixed形式布局

<!DOCTYPE html> <html> <head>  <meta charset="UTF-8">  <title>Document</title>  <style>   html, body {    width:100%;    height:100%;    padding: 0;    margin: 0;    background-color: #f3f3f3;    font-fa