文章目录
- 问题场景
- 解决问题
- 一、基础资料
- 二、代码追踪
- 三、解决方案
- 布局的角度解决
- 更改paddingStart 的默认值
- 设置marginLeft 值
- 硬编码的角度解决
问题场景
1)早期一般屏幕都是方形的,但是曲面屏,比如:好多车机Android产品、魔镜产品、手机产品,观察下他们的顶部左右是圆弧形的,为了美观。
2)现在大部分手机产品左上角是摄像头Camera 在顶部左边占据一定的位置,所以时间相关的就必须往右移动。比如,我截图如下:
3)好多Android产品有自己的私模,顶部左右有一些装饰的弧形遮挡物,导致左上角是看不到的。
解决问题
根据实际场景,我们需要解决的问题是,将Android顶部状态栏UI组件右移动
一、基础资料
其实对SystemUI有几本了解,一看就知道这个UI的位置,具体就是一个Clock,我给出之前博客中的部分基础知识,方便了解SystemUI
Android12 SystemUI QS面板新增截屏功能
重点看一下基础知识储备部分
二、代码追踪
我们找到顶层布局,
xref: /frameworks/base/packages/SystemUI/res/layout/status_bar.xml
xref: /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
三、解决方案
所以根据二中的代码追踪,我们有三种解决方案:
布局的角度解决
更改paddingStart 的默认值
设置marginLeft 值
硬编码的角度解决
Clock 类中,setText 地方,前面加空格不就可以了吗