市面上各种高宽比的手机越来越多,产品不断追求更高纵横比,更好的用户沉浸体验时,给开发者带来了更多的挑战。开发者都希望一个APP覆盖尽可能多的横纵比手机,同时可以呈现完美的视觉效果。据安卓官方资料和最近发现的问题,为开发者提供简单易用的适配方案。
一.适配问题
下面是适配过程中发现的问题,在页面上方或下方出现了黑条和异常,影响用户的使用体验:
二.推荐适配方案
对于屏幕纵横显示问题,影响因素主要有两点:
1)App targetSdkVerion
2)分屏模式:android:resizeableActivity="true"表示支持分屏模式,此设置只针对Activity有效。
针对适配中的问题,推荐以下适配方案进行优化:
1. App targetSdkVerion >= 26或者支持分屏模式,删除最大纵横比设置:
删除最大纵横比方法:
将下面的代码删除即可,Android会自动根据屏幕调节(推荐)
2. App targetSdkVerion >= 26且不支持分屏模式时,删除最大纵横比设置或者将其设置为最大值:
1)删除最大纵横比方法:
将下面的代码删除即可,Android会自动根据屏幕调节(推荐)
2)设置最大纵横比方法:
在AndroidManifest.xml中进行如下配置
可为或者设置最大纵横比,目前可设置为2.4,以后根据市场上的最大纵横比及时修改。
3. App targetSdkVerion <= 25且不支持分屏模式时:
默认的apsect ratio为1.86,必须对最大纵横比进行设置,否则在大于1.86的手机上运行App会出现黑条的现象。
设置最大纵横比方法:
在AndroidManifest.xml中进行如下配置,可为设置最大纵横比,目前可将ratio_float替换为2.4,以后根据市场上的最大纵横比及时修改。
三.安卓官方参考
以上内容可参考安卓官网:(https://developer.android.com/guide/practices/screens-distribution#MaxAspectRatio)
四.适配支持
如果您在适配过程中遇到任何技术问题,可以发邮件至:rdtpservice@samsung.com
邮件主题:三星屏幕适配+APP名
史上最简单易懂的Android Pad手机屏幕适配方案
如果app需要实现字体大小根据手机设置而改变的话用字体单位用sp表示,如果不需要实现这个功能的话可以直接用dp来表示字体大小。
综上所述可以知道dp在android设备里的重要性了。
介绍一个自动计算的插件:ScreenMatch 。
1. 安装:setting——》plugins搜索插件ScreenMatch;安装并重启Android studio
2)选择您要适配的项目。(确保该项目有dimen.xml文件)
3) 点击OK生成, 会看到
* 在res文件夹下面增加了很多values-swxxdp的文件夹。里面的dimen是根据values文件夹下的dimen计算出的结果,运行到所有Android设备会看到一个比较好的适配效果。
* 项目根目录增加了两个文件:
- screenMatch_example_dimen.xml文件:是一个通用的dimen文件。
- screenMatch.properties文件:是ScreenMatch插件的配置文件可查看注解。
如果您是新项目
可以直接将screenMatch_example_dimen.xml该文件里的内容拷贝的values下面的dimen文件里做开发。然后通过ScreenMatch插件适配其他设备。
使用swdp的原因:默认设备swdp数是360,当设备的swdp大于360时才有存在的意义。从而固定dp大小的控件,显示不会太小。
开发安卓APP如何考虑机型适配问题?
开发安卓app考虑机型适配,主要从以下三个方面考虑适配:
1.操作系统适配,即适配Android2.X,4.X,5.X??每个版本的操作系统,都有其特定的变化,对于App开发者而言,最重要的一点就是要明确每一个版本APIChangedList。
2.厂家型号,即适配三星、小米、Note5、米2??这块有两种适配方式,一是公版适配,二是定制开发。我们先从公版适配说起,这也是大多数App在用的方式。
公版适配这里指的是只存在一套代码,一个APK,要适配所有的厂商或机型。比较差的方式通常就是在代码中涉及到不同厂商或型号的地方通过if语句利用Build里的厂商标识等进行不同的策略,其结果就是适配得越多,if语句越复杂,越难维护。其实只要利用一个工厂模式就可以做得更灵活一些,
3.硬件兼容。主要是对包括屏幕分、CPU、内存、外存、传感器等进行适配,其主要思路也是抽象隔离。 在数据层,最主要的是进行外部存储的适配,即考虑数据存储的位置、格式、易失性等。通常这种持久化的数据存储,都要考虑存储位置及其易失性问题,不要把关键数据保存在易失的外部存储当中,还有Android5.X开始的外卡的不可访问性,进而,可以根据存储空间和数据特点考虑明文格式还是密文格式,压缩还是不压缩。
由于android手机的碎片化,没有像ios那样只有固定的机型和尺寸,所以要做到全部适配是不可能,合适的做法是适配市场上流行的机型尺寸、厂商和硬件设备。