需求
- 全屏展示APP内容,包括刘海屏区域。
- 确保刘海屏下,按钮、重要信息等UI元素不被遮挡
难点
- 状态栏要隐藏掉
- 设置全屏来实现 ( 我用的4.4之前的技术方案,简单 有效)
- 有Window flag
- 主题
- DecorateView. ui visibility
- 刘海屏手机,默认不允许全屏显示
- API 28、Android P之后才有 刘海屏判断的API,官方成为CutOut。28之前要用反射调用厂商的API判断,我会把方法写后面
- 按钮等不可被遮挡的UI元素,要统一下移 规避刘海屏区域 (通过自定义View实现, 刘海height < statusbar height)
方法步骤
- Activity 属性声明
res/styles.xml
<!--android:fitsSystemWindows 为true,在全屏下。将自动添加 statusBar高度的padding来,下移 我们的contentView-->
<style name="CameraActivityTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:navigationBarColor">@android:color/white</item>
<item name="android:fitsSystemWindows">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
ActivityManifest.xml
<activity
android:name=".YouCameraActivity"
android:theme="@style/CameraActivityTheme" />
- 代码
YouCameraActivity
@Override
protected void onCreate(Bundle savedInstanceS