android车载支持格式,安卓全面屏适配攻略(适配超长车载主机)

前言

2017年9月,拜腾的横空出世,打破了车载主机界一直以来的沉寂,各大媒体也是不吝词藻的对它的超长中控屏进行了大肆的报道。这个时候作为同为车机供应者的诸位友商心里却不那么的平静,恨不得在发布会现场带上一把尺子。要知道,咱们国人的借鉴能力,那在世界上都是有一号的,很快的各大厂商也纷纷开始推广起了自己的超长屏。

谁的锅?

所谓超长屏,即在中控主机上既能显示汽车仪表,同时又可以显示地图导航的一块屏幕,对于应用的显示是可以做全屏展示和半屏展示切换的,即App从3840720分辨率到1280720分辨率的切换。做这块长屏适配的时候,我们本以为只要做好长屏切换短屏的时候UI界面的适配就可以高枕无忧,没想到在实机调试的时候,我们却被一个很尴尬的问题困了许久,首先让我们来看一下在3840*720屏幕上我们的显示效果。

f4e5a5cf3ea2

超长屏显示截图.png

从图片中可以看到,我们的应用并没有能够充满屏幕而只是占据了左边很窄的一个部分,这的确是一个非常离奇的现象,因为我们的布局使用的是填充结构,也就是match_parent,按逻辑来说应该会是拉伸至屏幕整个宽度。

f4e5a5cf3ea2

layout布局文件.png

因为用手机和夜神模拟器模拟器(3840*720分辨率)我们的应用都是有进行调试过的,于是乎,我们开始怀疑是主机厂的FrameWork定制层出了问题,因为前文提到过主机厂是可以动态控制我们应用3840与1280的显示空间的。

论证自己的假设

为了证明自己的“清白”,我们特意在新的版本中增加了对rootView的Log打印信息,方法如下:

private void printRootViewWidthAndHeight(){

fmParent.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {

@Override

public boolean onPreDraw() {

fmParent.getViewTreeObserver().removeOnPreDrawListener(this);

int width = fmParent.getWidth();

int height = fmParent.getHeight();

Logger.t(TAG).d("ParentView_width_is: "+width+" height_i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值