Android 启动图适配

3.15更新,项目上线后,在华为某些机型上出现了崩溃的情况

崩溃日志

原因是高分辨率的图片放置到了低dpi的drawable文件夹中的,对应就是我们的drawable-long文件夹,但为什么其他机型不会出问题呢?我摸索了一下,发现这台华为机型被用户调节了显示设置

这里显示大小调大了,相当于把屏幕的dpi调小了,从而加载drawable-long中的图片时会把图片放大,导致bitmap too large的问题。

一般别的机型只能调节字体大小,但无奈华为市场份额较高,肯定要兼容,所以这种方案不能用了。

我的解决方法是用回9.png的方案,之前测试不成功是因为自己制作9.png图的时候底部和右边的线画错了,导致显示区域出现问题,重新制作就好了。


原文


众所周知,安卓不同机型的屏幕尺寸千差万别,百花齐放,但在很长一段时间里,安卓手机屏幕的长宽比大致都在16:9上下浮动。所以我们之前做APP启动图的时候,设计往往只会出一张16:9的图给我们,在不同机型上不会有太明显的拉伸效果。

直到出现了全面屏的机型,特别是屏幕比例在2:1以上的机型,如果还是用一张16:9的图去显示,那么拉伸效果是很明显的,我以微信的启动图为例子,在1440*2960的Pixel 3XL机型上,用16:9的启动图是这样的效果(地球都变成椭圆了)

1440*2960的Pixel 3XL显示16:9的图片

这种情况一般有几种解决办法

1、把启动图制作成9.png图,9.png是我们安卓开发的老朋友了,一般这种图片拉伸问题都可以用9.png来解决,但启动图有点特殊,显示完启动图后常常会显示开屏广告,如果开屏页面的布局和广告逻辑比较复杂(像我司项目的开屏,既有半屏广告又有全屏广告,还有gif、视频广告等),在原有布局不改动的情况下,用了9.png会导致各种奇怪的问题

2、把开屏图制作成layer-list的drawable文件,底层layer设置成纯色(如纯白纯黑,根据开屏图颜色而定),上层放置关键元素(如项目logo),这种方式适合开屏图比较简单,而且开屏图背景可以和底层颜色融合的情况

3、制作多种尺寸的开屏图,分别放到不同的drawable文件夹下,考虑到资源打包的大小和UI的工作量,我们分别准备16:9和2:1的开屏图也够用了,然后问题在于,我们应该把16:9和2:1的图分别放到哪个文件夹下?我在模拟器选取了覆盖主流屏幕的机型

16:9的启动图我们根据图片实际分辨率放置在drawable-xhdpi或者drawable-xxhdpi文件夹是比较合适的,那么2:1的应该放在哪里呢? 查阅官方文档,发现有这样的限定符

即drawable-long和drawable-notlong,分别对应宽屏和非宽屏,但是这个限定符是API 4中增加的,描述中的WQVGA、WVGA、FWVGA在现今主流手机中也不存在了,本着试一试也不会亏的精神,我尝试在工程中增加了drawable-long文件夹,并把2:1的启动图放进去,运行,奇迹出现了,Pixel 3和Pixel 3 XL这种全面屏的手机居然可以取到这个文件夹里的图片,而Nexus 4、Nexus5、Nexus6等接近16:9的手机仍然是取drawable-xhdpi或者drawable-xxhdpi的文件夹,这就解决了全面屏手机启动图拉伸的问题。看起来,虽然drawable-long的文档描述有点旧,但谷歌应该是有不断更新它的适配逻辑的,我测试用的模拟器全部都基于Android5.1,而用我自己的Android 10真机测试也是没有问题,大致得出结论这个方案是可行的

1440*2960的Pixel 3XL显示drawable-long里2:1的图片


1440*2560的Nexus 6显示 drawable-xxhdpi里16.9的图片
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353