getWindow().getDecorView().setSystemUiVisibility 中设置flag,aosp 是在哪里处理的
时间: 2024-04-03 08:36:21 浏览: 22
在 AOSP 中,`getWindow().getDecorView().setSystemUiVisibility` 方法中设置的系统 UI 标志是由 WindowManagerService 处理的。具体来说,当应用程序调用该方法时,WindowManagerService 会在系统 UI 标志中设置相应的标志位,并根据标志位来调整系统 UI 的可见性。例如,如果应用程序设置了 `SYSTEM_UI_FLAG_FULLSCREEN` 标志位,则 WindowManagerService 将隐藏状态栏和导航栏,以实现全屏显示。
相关问题
getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE 是在AOSP 11中哪里处理的
在AOSP 11中,getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)的处理方式与之前版本的处理方式基本相同,仍然是在PhoneWindow类中处理。
具体地说,在PhoneWindow类的setDecorView方法中,会调用WindowManager的addView方法将Activity的布局添加到Window中,并设置相应的系统UI标志位,其中就包括View.SYSTEM_UI_FLAG_LAYOUT_STABLE标志。这个标志位的作用仍然是在布局时考虑状态栏和导航栏的大小,使得布局稳定不会因为状态栏和导航栏的变化而发生抖动。
需要注意的是,AOSP 11中可能会对setSystemUiVisibility方法的使用做出一些限制,例如在全屏模式下可能无法使用该方法。但是,这个限制与View.SYSTEM_UI_FLAG_LAYOUT_STABLE标志位的处理方式没有直接关系。
getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE 是在AOSP 中哪里处理的
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)是在Android Framework中的PhoneWindow类中处理的。
在PhoneWindow类中,有一个名为"setDecorView"的方法,它是在Activity的onCreate方法中被调用的。setDecorView方法的作用是将Activity的布局添加到Window中,并设置相应的系统UI标志位。
在setDecorView方法中,会调用WindowManager的addView方法将Activity的布局添加到Window中,并设置相应的系统UI标志位。其中就包括View.SYSTEM_UI_FLAG_LAYOUT_STABLE标志,它表示在布局时要考虑状态栏和导航栏的大小,使得布局稳定不会因为状态栏和导航栏的变化而发生抖动。