3. 使用Car API获取车辆基本信息
任务目标
在车载Android应用中,屏幕尺寸与分辨率差异较大(如7英寸中控、12.3英寸仪表、15英寸副驾娱乐屏),且驾驶场景要求触控目标不小于48dp、关键信息在驾驶员视线偏移不超过20°的区域内。本案例将实现一个遵循车载UI间距规范、可自适应不同屏幕尺寸与分辨率的仪表盘首页布局,并验证其在多尺寸下的表现。
核心实现
采用ConstraintLayout配合百分比约束与最小触控尺寸约束,实现自适应布局。关键点:使用app:layout_constraintWidth_percent与app:layout_constraintHeight_percent让卡片区域随屏幕等比缩放;使用app:minWidth与app:minHeight保证触控目标不小于48dp;使用android:autoSizeTextType="uniform"让文字随视图缩放。
配套资源
卡片背景圆角与按压态需在res/drawable/bg_card.xml中定义(此处为必要依赖,非教学核心,仅给出接入位置):
运行与验证
运行方式:将布局文件放入Android工程res/layout/目录,在MainActivity的onCreate中调用setContentView(R.layout.activity_dashboard)即可。
多尺寸验证:在Android Studio中创建以下模拟器或使用Layout Validation工具同时预览:
- 7英寸 1024×600(中控入门)
- 10.1英寸 1920×1200(中控主流)
- 12.3英寸 1920×720(仪表/中控宽屏)
通过条件:
- 所有卡片在三种分辨率下均完整显示,无遮挡、无溢出;
- 主卡片与右侧控制区宽度比始终约为2:1(由百分比约束保证);
- 所有可点击元素(Button)实际高度≥48dp,可通过开发者选项开启“显示布局边界”检查;
- 文字随卡片缩放,无截断或重叠。
常见问题
- 百分比约束不生效:确认父布局为
ConstraintLayout,且子视图宽高设置为0dp。 - autoSizeText不缩放:仅当视图宽度为
0dp且设置了app:layout_constraintWidth_percent或match_parent时生效,wrap_content下不会触发自动缩放。 - 横竖屏切换异常:建议在
AndroidManifest.xml中锁定横屏(android:screenOrientation="landscape"),车载场景通常固定横屏。