4、布局与栅格:车载屏幕分辨率适配、栅格系统应用、安全区域与避让区

好,咱们进入第四章。这一章我特别想跟你聊聊,因为布局和栅格这东西,看着简单,但真到了车机上,坑特别多。

你想想看,手机屏幕就那么几种尺寸,但车载屏幕呢?从8寸到17寸,从横屏到竖屏,从方形到带鱼屏,五花八门。我刚开始做车机那会儿,就吃过这个亏——一套UI在10寸屏上看着挺好,换到12.3寸的屏上,按钮全跑偏了。

所以这一章,咱们就把分辨率适配、栅格系统、安全区域这几个硬骨头啃下来。

4.1 车载屏幕分辨率适配

先说说分辨率适配。车机屏幕的分辨率,说白了就是像素点的数量。常见的分辨率有:

  • 1280×720(720p)—— 老款车机、低配车型常见
  • 1920×1080(1080p)—— 目前主流,大部分中高端车型在用
  • 1920×720 —— 带鱼屏,长条形的,很多新能源车喜欢用
  • 3840×2160(4K)—— 高端车型,比如奔驰EQS、宝马i7

嗯,这里要注意:分辨率高不代表屏幕大。比如1920×720的带鱼屏,虽然宽度有1920像素,但高度只有720,实际显示面积并不大。

我个人习惯的做法是:先确定设计基准分辨率。我一般选1920×1080作为基准,因为这个分辨率覆盖了大部分主流车型。然后通过等比缩放来适配其他分辨率。

核心原则:不要用固定像素值,用百分比或相对单位。比如按钮宽度不要写“200px”,要写“占屏幕宽度的15%”。

我在项目中遇到过一个问题:同样是1920×1080的屏幕,有的车机系统是Android,有的是Linux,它们的渲染机制不一样,导致同样的像素值在不同系统上显示效果有差异。怎么办?我的建议是:用dp(密度无关像素)或sp(缩放无关像素),而不是直接用px。

4.2 栅格系统应用

栅格系统,说白了就是把屏幕分成若干列,然后元素按列来排列。这样做的好处是:对齐、统一、好维护

车机上的栅格系统和网页不太一样。网页栅格一般是12列或24列,但车机屏幕宽高比变化大,我建议用动态栅格

什么叫动态栅格?就是列数不固定,根据屏幕宽度自动调整。比如:

  • 屏幕宽度 < 800px:用4列栅格
  • 屏幕宽度 800-1200px:用8列栅格
  • 屏幕宽度 > 1200px:用12列栅格

这样做的好处是,不管屏幕多宽,内容都能自适应排列。

举个例子,一个音乐播放界面,左边是专辑封面,右边是歌曲列表。在窄屏上,封面和列表上下排列;在宽屏上,左右排列。这就是栅格系统的功劳。

小技巧:栅格间距(gutter)我一般设16px或24px。太小了内容挤在一起,太大了浪费空间。你可以根据屏幕尺寸调整,但保持一致性。

我曾经犯过一个错误:在12列栅格上,把一个按钮设成了“占满整行”。结果在1920宽的屏上,按钮拉得特别长,丑得不行。后来我改成“占6列”,两边留白,视觉效果好了很多。

4.3 安全区域与避让区

安全区域,这是车机UI里最容易忽略、但最要命的部分。

你想想看,车机屏幕不是手机,它周围有边框、有物理按键、有出风口。而且,驾驶员在开车时,手可能会遮挡屏幕边缘。所以,重要内容必须放在安全区域内

安全区域怎么定?我一般这样设置:

方向 安全区域边距 说明
顶部 40-60px 避开状态栏、摄像头、出风口
底部 60-80px 避开物理按键、手写区域
左侧 30-50px 避开边框、驾驶员视线遮挡
右侧 30-50px 避开边框、副驾视线遮挡

嗯,这里要注意:不同车型的安全区域不一样。比如特斯拉Model 3的屏幕是横屏,底部有物理按键,所以底部安全区域要更大。而理想L9的屏幕是竖屏,顶部有摄像头,顶部安全区域要留足。

警告:千万不要把交互按钮放在屏幕边缘!我曾经见过一个设计,把“返回”按钮放在屏幕左上角,结果驾驶员开车时根本够不着,差点出事故。重要操作按钮,一定要放在安全区域内,且距离边缘至少50px。

避让区呢?就是屏幕上有一些“不能碰”的区域。比如:

  • 摄像头区域:很多车机屏幕上方有摄像头,用于人脸识别或手势控制。这个区域不能放任何内容。
  • 物理按键区域:屏幕边缘如果有物理按键(比如音量旋钮、Home键),附近区域要留白,避免误触。
  • 驾驶员视线盲区:屏幕左下角或右下角,如果被方向盘遮挡,就不要放重要信息。

我曾经在做一个项目时,客户要求把导航的“确认”按钮放在屏幕右下角。我说不行,那个位置被方向盘挡住了。客户不信,结果实车测试时,驾驶员每次都要歪头才能看到按钮。最后改到了屏幕中央下方,问题解决。

4.4 实战:一个栅格布局示例

说了这么多,咱们来点实际的。假设我们要设计一个车机主界面,包含导航、音乐、空调三个模块。用栅格系统怎么布局?

我建议这样:

  • 屏幕分成12列
  • 导航模块占8列(左侧)
  • 音乐模块占4列(右上)
  • 空调模块占4列(右下)

代码示例(伪代码,用于理解布局逻辑):

/* 栅格容器 */
.grid-container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 16px;
  padding: 40px 30px; /* 安全区域边距 */
}

/* 导航模块:占8列 */
.nav-module {
  grid-column: span 8;
}

/* 音乐模块:占4列 */
.music-module {
  grid-column: span 4;
}

/* 空调模块:占4列,放在音乐模块下方 */
.ac-module {
  grid-column: span 4;
}

你看,这样布局,不管屏幕多宽,导航模块始终占2/3,音乐和空调各占1/3。而且因为有安全区域边距,内容不会跑到屏幕边缘去。

个人经验:在开发阶段,我习惯在屏幕上画一个“安全区域框”,用半透明的红色覆盖。这样一眼就能看出哪些内容越界了。等开发完成,再把这个框去掉。

4.5 总结一下

布局和栅格,说白了就是两件事:内容怎么放内容放哪里

  • 分辨率适配:用相对单位,别用固定像素
  • 栅格系统:动态列数,自适应排列
  • 安全区域:重要内容别放边缘
  • 避让区:摄像头、物理按键、视线盲区要避开

嗯,这一章就到这儿。下一章咱们聊聊交互手势和触控反馈,那个更有意思。你想想看,开车时手指在屏幕上滑动,和坐在沙发上玩手机,感觉能一样吗?