适配三星Galaxy S8及S8+

针对三星S8独特的18.5:9屏幕比例带来的显示问题,本文详细介绍了如何通过简单修改AndroidManifest.xml中的android.max_aspect属性,实现应用在三星S8上的全屏显示,提升用户体验。

Galaxy S8及S8+分别搭载“5.8”与“6.2”大屏,高达84%的屏幕占比为Galaxy S8及S8+在游戏娱乐、观看视频时带来深度沉浸式视觉体验。但是与此同时S8却有着一个奇葩的屏幕比例:18.5比9,屏幕分辨率:2960×1440。通常我们在开发过程中android的标准设计图为1920×1080,ios为1334×750,默认采用16比9的比例来设计效果图。android机型众多,分辨率千奇百怪,这回三星又来添乱了,实际开发过程中还真遇到了三星S8的适配问题。

先来看一些案例:

这是适配前的王者农药

1187237-ad1b60ba04c446ce.png
Screenshot_20170630-190449.png

这是适配后的王者农药

1187237-bf9b65d4d14f6194.png
Screenshot_20170630-223124.png

再来看看竖屏的效果:

这是未适配的网易新闻

1187237-a09f7bc53642b43e.png
Screenshot_20170630-125811.png

这是适配过了的今日头条

1187237-1428fc1682e9a0f6.png
Screenshot_20170630-125802.png

所以从案例可以看出来,如果不去做适配的话,屏幕的两端就会留有黑边,相当讨厌,真机体验是酱紫的,大家可以感受下:


1187237-c3289aa215c0f0de.jpeg
WechatIMG185.jpeg

甚至据说这上下感人的大黑边逼死了处女座。


1187237-952393ae49a6f1a5.jpg
网络图片

其实解决APP显示问题,除了第三方应用自行适配S8之外,S8自己也可以进行调节,S8有一个功能叫做“全屏应用程序”;通过设置“全屏应用程序”既节省了用户等待应用适配的过程,也大大增加了用户体验。

1187237-bdcf9172eebd4d5f.jpg
网络图片

打开全屏应用之后,效果显而易见:

1187237-b13d1de3149a177a.jpeg
WechatIMG189.jpeg

无奈Android手机就是这样,不是太省心,用户要有点小智商才行,还是iphone比较省心,但是大部分人应该还是跟上面那位处女座一样的,我们不能要求每个用户都去手动打开全屏应用来适配APP显示,作为开发者我们还是要主动去做好适配。

下面我们以开发者的身份去分析下这个问题,究其根本这个适配不过是个显示的问题,我们只需要让APP充满全屏就可以,所以我做了如下尝试:

1:给Activity设置各种noTitlebar,FullScreen,不起作用;
2:替换各种style样式,不起作用;
3:修改targetSdkVersion, compileSdkVersion为高版本,依然不起作用。

通过观察发现,凡是完美适配了18.5比9屏幕的App,在系统中已经默认是全屏应用程序了,选择框灰掉无法点击。

1187237-32a780c42209fbfa.png
Screenshot_20170701-161359.png

而没有做好适配的App默认是没有打开全屏应用的,用户可以自行随意选择打开或者关闭,从截图我们看出很多大厂出品的App还没有做好适配

1187237-ef7fcb847d2286a0.png
Screenshot_20170701-162730.png

所以判断系统应该是通过检测某个属性或者权限来区分当前App是否做好了适配。最后我们找到了"android.max_aspect"这个属性。
开发者只需在App的AndroidManifest.xml文件<application> </application>中添加如下代码:
<meta-data android:name="android.max_aspect" android:value="2.1" />

1187237-8f82517235709a11.png
android.max_aspect.png

对只要这一行代码就搞定三星S8的适配,所以前面都是废话,你要的代码就这一行,快快粘贴复制到你的代码中吧。

Android 标准接口中,支持应用声明其支持的最大屏幕高宽比(maximum aspect ratio)。具体声明如下,其中的 ratio_float 被定义为是高除以宽,以16:9为例,ratio_float = 16/9 = 1.778 (18.5:9则为2.056)。
<meta-data android:name="android.max_aspect"
android:value="ratio_float" />
若开发者没有声明该属性,ratio_float 的默认值为1.86,小于2.056,因此这类应用在三星S8上,默认不会全屏显示,屏幕两边会留黑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值