android 11 及以下 android 11 deprecation warning not going 设置灯状态栏的代码

Code for setting light status bar in android 11 and below android 11 deprecation warning not going

 Window window = MainActivity.this.getWindow();
                   window.setStatusBarColor(MY_COLOR_IT_CAN_BE_ANY);

                   if (Build.VERSION.SDK_INT < 30)
                   {
                       window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
                   }
                   else {
                       window.setDecorFitsSystemWindows(false);
                       WindowInsetsController controller = getWindow().getInsetsController();
                       if(controller != null) {
                           controller.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
                                   WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS);
                       }
                   }

我正在使用此代码在 android 11 及以下 android 11 中设置灯光状态栏。一切正常,只是一个小问题,弃用警告不会出现。

当您使用已弃用的代码时会显示弃用警告,而您没有 - 您有正确的 if 声明,导致在 < 30 上使用 not-yet-deprecated 方法,在 [=12= 上使用新方法=]

我只做了一件事,因为我的 if 语句没问题,我只是通过使用来抑制警告 @SuppressWarnings("弃用")

我只是将此注释用于包含此代码的特定方法。

还有另一个选项也很好: 只需添加

//noinspection deprecation

以上代码行已弃用。这将允许检查整个函数中的其他警告。哪个好我更喜欢

弃用 //noinspection 相对于 @SuppressWarnings("deprecation") 有什么优势?

这防止了@SupressWarnings 的问题,它忽略了方法中的所有警告。因此,如果您有一些您不知道的已弃用内容,@SupressWarnings 将隐藏它并且您不会收到警告。这就是 //noinspection

的优点

在这个 post 答案中求助并检查更多细节: How to suppress specific Lint warning for deprecated Android function?

if(fullScreen)
{
    getWindow().getDecorView().getWindowInsetsController().hide(WindowInsets.Type.statusBars());
    getWindow().getDecorView().getWindowInsetsController().setSystemBarsBehavior(BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
else
{
    getWindow().getDecorView().getWindowInsetsController().show(WindowInsets.Type.statusBars());
    getWindow().getDecorView().getWindowInsetsController().setSystemBarsBehavior(BEHAVIOR_SHOW_BARS_BY_SWIPE);
}

以上代码用于 Android 11 的全屏显示,重要的是设置 setSystemBarsBehavior(BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE) 否则在向下滑动状态栏时获得显示和在不重新创建 activity 之前不会消失。