Code Monkey home page Code Monkey logo

Comments (5)

vodLee avatar vodLee commented on July 22, 2024 1

是不是setDarkModesetSystemUiVisibility这个地方的问题,这地方直接强制全屏了

这个要怎么改?

`
@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}

@TargetApi(Build.VERSION_CODES.M)
public static void setDarkMode(Activity activity) {
    setMIUIStatusBarDarkIcon(activity, false);
    setMeizuStatusBarDarkIcon(activity, false);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
}

`

我遇到的问题是 util 的源代码中直接set导致,所以先vis = getSystemUiVisibility(),然后setSystemUiVisibility (vis & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR),当时大概是这么写的,demo找不到了。

思路的话当时看 setDarkModesetLightMode 的差距,在 View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 这个常量上,看源码这个常量是只有一位是1的整形,盲猜底层是靠位运算去判断的。

所以这个地方先通过 get 方法获取原 activity 的 SystemUi,通过位运算去设置View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 对应的值,然后再通过set方法设置到 activity 的 SystemUi 上,解决了我当时的问题

from statusbarutil.

vodLee avatar vodLee commented on July 22, 2024

是不是setDarkModesetSystemUiVisibility这个地方的问题,这地方直接强制全屏了

from statusbarutil.

guobinAndroid avatar guobinAndroid commented on July 22, 2024

是不是setDarkModesetSystemUiVisibility这个地方的问题,这地方直接强制全屏了

这个要怎么改?

from statusbarutil.

vodLee avatar vodLee commented on July 22, 2024

是不是setDarkModesetSystemUiVisibility这个地方的问题,这地方直接强制全屏了

这个要怎么改?

`
@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}

@TargetApi(Build.VERSION_CODES.M)
public static void setDarkMode(Activity activity) {
    setMIUIStatusBarDarkIcon(activity, false);
    setMeizuStatusBarDarkIcon(activity, false);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
}

`

我遇到的问题是 util 的源代码中直接set导致,所以先vis = getSystemUiVisibility(),然后setSystemUiVisibility (vis & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR),当时大概是这么写的,demo找不到了。

思路的话当时看 setDarkModesetLightMode 的差距,在 View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 这个常量上,看源码这个常量是只有一位是1的整形,盲猜底层是靠位运算去判断的。

所以这个地方先通过 get 方法获取原 activity 的 SystemUi,通过位运算去设置View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 对应的值,然后再通过set方法设置到 activity 的 SystemUi 上,解决了我当时的问题

刚才找到了以前的代码

@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int visibility = activity.getWindow().getDecorView().getSystemUiVisibility();
if (visibility != (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) {
visibility = visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
}
}
@TargetApi(Build.VERSION_CODES.M)
public static void setDarkMode(Activity activity) {
    setMIUIStatusBarDarkIcon(activity, false);
    setMeizuStatusBarDarkIcon(activity, false);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int visibility = activity.getWindow().getDecorView().getSystemUiVisibility();
        if (visibility == (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) {
            visibility = visibility ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
        }
        activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
    }
}

from statusbarutil.

guobinAndroid avatar guobinAndroid commented on July 22, 2024

是不是setDarkModesetSystemUiVisibility这个地方的问题,这地方直接强制全屏了

这个要怎么改?

`
@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}

@TargetApi(Build.VERSION_CODES.M)
public static void setDarkMode(Activity activity) {
    setMIUIStatusBarDarkIcon(activity, false);
    setMeizuStatusBarDarkIcon(activity, false);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
}

我遇到的问题是 util 的源代码中直接set导致,所以先vis = getSystemUiVisibility(),然后setSystemUiVisibility (vis & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR),当时大概是这么写的,demo找不到了。 思路的话当时看 setDarkModesetLightMode的差距,在View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 这个常量上,看源码这个常量是只有一位是1的整形,盲猜底层是靠位运算去判断的。 所以这个地方先通过 get 方法获取原 activity 的 SystemUi,通过位运算去设置View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR` 对应的值,然后再通过set方法设置到 activity 的 SystemUi 上,解决了我当时的问题

刚才找到了以前的代码

@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int visibility = activity.getWindow().getDecorView().getSystemUiVisibility();
if (visibility != (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) {
visibility = visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
}
}
@TargetApi(Build.VERSION_CODES.M)
public static void setDarkMode(Activity activity) {
    setMIUIStatusBarDarkIcon(activity, false);
    setMeizuStatusBarDarkIcon(activity, false);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int visibility = activity.getWindow().getDecorView().getSystemUiVisibility();
        if (visibility == (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) {
            visibility = visibility ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
        }
        activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
    }
}

谢谢哈,我已经解决了。

from statusbarutil.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.