问题场景

1)早期一般屏幕都是方形的,但是曲面屏,比如:好多车机Android产品、魔镜产品、手机产品,观察下他们的顶部左右是圆弧形的,为了美观。
2)现在大部分手机产品左上角是摄像头Camera 在顶部左边占据一定的位置,所以时间相关的就必须往右移动。比如,我截图如下:
3)好多Android产品有自己的私模,顶部左右有一些装饰的弧形遮挡物,导致左上角是看不到的。

解决问题

根据实际场景,我们需要解决的问题是,将Android顶部状态栏UI组件右移动
Android12_13左上角状态栏数字时间显示右移动-LMLPHP

一、基础资料

其实对SystemUI有几本了解,一看就知道这个UI的位置,具体就是一个Clock,我给出之前博客中的部分基础知识,方便了解SystemUI
Android12 SystemUI QS面板新增截屏功能

重点看一下基础知识储备部分
Android12_13左上角状态栏数字时间显示右移动-LMLPHP

二、代码追踪

我们找到顶层布局,

xref: /frameworks/base/packages/SystemUI/res/layout/status_bar.xml

Android12_13左上角状态栏数字时间显示右移动-LMLPHP

xref: /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java

Android12_13左上角状态栏数字时间显示右移动-LMLPHP

三、解决方案

所以根据二中的代码追踪,我们有三种解决方案:

布局的角度解决

更改paddingStart 的默认值

Android12_13左上角状态栏数字时间显示右移动-LMLPHP

设置marginLeft 值

硬编码的角度解决

Clock 类中,setText 地方,前面加空格不就可以了吗
Android12_13左上角状态栏数字时间显示右移动-LMLPHP

09-12 11:48