Android Studio 透明状态栏的实现示例

作者:FDR_Enterprise 时间:2022-12-06 21:44:23 

    最近正在学习使用Android Studio,发现默认的Hello World程序界面和我们平时使用的APP界面有很大的不同,多了Action Bar以及状态栏,比较影响用户体验。于是我上网搜索了一下怎么实现透明的App状态栏。在这里做一个记录。
    要求API 23以上。

透明状态栏


//插入到OnCreate()中
if(Build.VERSION.SDK_INT >= 21) {
           Window window = getWindow();
           window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                   | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
           window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                   | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                   | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
           window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
           window.setStatusBarColor(Color.TRANSPARENT);
           window.setNavigationBarColor(Color.TRANSPARENT);

以下是效果图

Android Studio 透明状态栏的实现示例

改变状态栏文字颜色

    我们发现由于背景是浅色的,状态栏改为透明后状态栏中的内容不好读出,那么我们可以把状态栏中的文字颜色改为深色


public void changeStatusBarTextColor(Window window, boolean isBlack) {
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
           View decor = window.getDecorView();
           int flags = 0;
           if (isBlack) {
           //更改文字颜色为深黑色
               flags = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
           }
           else {
      //更改文字颜色为浅色
               flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
           }
           decor.setSystemUiVisibility(flags);
       }
   }
   //记得调用。根据不同的背景色灵活调用函数

效果图如下

Android Studio 透明状态栏的实现示例

可以看到,文字变成了深黑色。

沉浸模式

如果我们根本就不想要状态栏的话,可以使用如下函数


public class MainActivity extends AppCompatActivity {

@Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
   }

@Override
   public void onWindowFocusChanged(boolean hasFocus) {
       super.onWindowFocusChanged(hasFocus);
       if (hasFocus && Build.VERSION.SDK_INT >= 19) {
           View decorView = getWindow().getDecorView();
           decorView.setSystemUiVisibility(
               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);
       }
   }
}

效果图如下,这时候需要滑动顶部才会显示状态栏

Android Studio 透明状态栏的实现示例

参考文献:网上的资料,他人博客

来源:https://blog.csdn.net/FDR_Enterprise/article/details/116243091

标签:Android,Studio,透明状态栏
0
投稿

猜你喜欢

  • WinForm中的几个实用技巧汇总

    2022-08-12 13:17:02
  • Android编程使用LinearLayout和PullRefreshView实现上下翻页功能的方法

    2023-06-30 02:16:15
  • SpringBoot如何集成PageHelper分页功能

    2022-10-22 03:18:34
  • 23种设计模式(7) java代理模式

    2023-01-28 21:57:20
  • 基于java配置nginx获取真实IP代码实例

    2023-07-15 12:32:46
  • Android Studio 2022.1.1创建项目的Gradle配置问题

    2022-05-05 21:45:36
  • C#byte数组与Image的相互转换实例代码

    2023-08-15 16:15:51
  • Android Support Library 标题栏(Toolbar)滚动效果实现方法

    2022-10-24 03:25:12
  • java WebSocket 服务端实现代码

    2022-09-28 00:30:52
  • Groovy的规则脚本引擎实例解读

    2023-07-11 21:24:04
  • C#异常处理总结及简单实例

    2022-10-02 13:48:30
  • 替换so文件来动态替换Flutter代码实现详解

    2023-06-23 16:24:06
  • java实现文件下载的两种方式

    2023-11-11 06:37:14
  • 详细分析Java内存模型

    2022-01-31 09:37:05
  • 详解JAVA中的Collection接口和其主要实现的类

    2021-06-20 19:14:08
  • 微信Android热更新Tinker使用详解(星空武哥)

    2023-06-08 04:08:17
  • SpringBoot配置文件中密码属性加密的实现

    2022-07-08 18:32:03
  • C++中的String的常用函数用法

    2023-03-26 17:52:45
  • Android常见控件使用详解

    2023-03-11 13:15:23
  • java面试题之数组中的逆序对

    2021-08-05 10:51:02
  • asp之家 软件编程 m.aspxhome.com