DownOL 软件仓库– 软件下载,字节世界与新知

安卓APP项目级适配,看这篇文章就够了

发表于:2024-04-26 作者:创始人
编辑最后更新 2024年04月26日,目前安卓适配对安卓开发者来说是一个特别头疼的问题,那么多的机型,每次适配总有一些比较特殊的机型不适配。网络上也有一大堆的资料概念,看完之后还是不知道怎么适配,所以特写了这篇文章,来分享一下自己的经验。

目前安卓适配对安卓开发者来说是一个特别头疼的问题,那么多的机型,每次适配总有一些比较特殊的机型不适配。网络上也有一大堆的资料概念,看完之后还是不知道怎么适配,所以特写了这篇文章,来分享一下自己的经验。

目前小编在职于一家比较大型的金融公司,主要负责安卓APP项目的开发,项目已经上线,那么本文就结合项目来讲一下我们所使用的适配方法。

接下来我们先看一些概念,这也是适配必须要了解的(网上一大堆的资料我直接就复制粘贴啦)

屏幕尺寸:是指屏幕对角线的长度。单位是英寸,1英寸=2.54厘米

屏幕分辨率:是指在横纵向上的像素点数,单位是px,1px=1像素点,一般是纵向像素横向像素,如1280×720

屏幕像素密度:是指每英寸上的像素点数,单位是dpi,即"dot per inch"的缩写,像素密度和屏幕尺寸和屏幕分辨率有关

我们可以根据这个公式,可以求出屏幕的像素密度,当然我们也可以参考手机的参数,或者通过代码的方式而获取到相关的参数。一般常用的dpi有320dpi,360dpi等等。

目前Android适配提供了五种的适配方式,我们一般都是混合结合著用,来达到完全是配的效果。

接下来我们还要了解一下各个单位的含义(也直接粘贴啦)

dip:Density Independent Pixels(密度无关像素)的缩写。以160dpi为基准,1dp=1px

dp:dip

dpi:屏幕像素密度的单位,"dot per inch"的缩写

px:像素,物理上的绝对单位

sp:Scale-Independent Pixels的缩写,可以根据文字大小首选项自动进行缩放。Google推荐我们使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇数和小数。

了解完之后那么我就开始结合项目说说我目前开发项目的适配,一般项目为了更好的适配,我们都是用match_parent,wrap_content,weight等属性在所有的设备上的都适配,还有采用.9图片的方式适配等。遵循以上规则之后,我们来说说具体的dp值的适配。

一般情况下我们会发现在res目录下有很多的文件夹,drawable、mipmap、layout、values等等。一般情况drawable目录下放置的一些选择器,默认图片。我们还发现在drawable后面还多了很多的后缀,xhdpi、hdpi等等。先粘贴一张我们项目res的截图

res目录截图

我们看到了有很多的文件夹,而且很多相似的文件名称,其实这些不同的文件夹就是为了适配。一般情况下我们会在drawable目录下放置一些我们项目中需要使用的图片。

UI设计师切图的时候有时候会给我们切一套图,有时会给我们两套图,就看UI妹妹懒不懒了,当我们拿到切图之后放置到对应的drawable目录中,注意命名不同文件夹相同图片要一致。不同的dpi分辨代表什么像素密度我们看下图

像素密度

当我们项目运行的时候,会根据设备分辨率的不同,去载入不同文件夹的图片。

mipmap文件夹一般放置logo,或者是图标,所以,我们拿到图标的切图后分别放置到对应的文件夹中。

values文件夹一般我们放置颜色,国际化文件,style文件和dimens文件,这个dimens文件就是我们这个项目适配的关键,项目采用的values-wxxxdp的方式适配。

values文件下分别放置不同的dimens文件,不同分辨率设备然后载入不同的文件夹。那么我们到底要怎么用呢,首先我们看一下-wxxxdp是什么意思。w代表width宽度,xxx是宽度为多大,单位为dp。也就是说,我们项目的适配是根据设备的最小宽度是配的。

项目适配我们首先适配一种分辨率的手机进行完美适配,然后再计算出不同分辨率对应的值。项目模拟器使用的是Google的nexus5 Android6.0 dpi为420dp,分辨率为1920*1080.

我们知道了这些参数怎么才能求出最小宽度呢,第一种方式就是通过代码的方式,看下面的代码:

获取项目密度转换率

我们直接可以通过代码获取到屏幕像素密度的转换率 得出的是2.625,我们可以知道屏幕的最小宽度为1080,所以我们就可以求出最小的宽度为1080/2.625=411dp,所以设备会载入values-410dp的dimens.xml文件

第二种方式是我们自己计算不通过代码的方式:

最小宽度(dp)=屏幕最小宽度像素值(px)/((像素密度dpi)/160)我们也可以求出最小的宽度,而且得出的结果和我们通过代码的方式一模一样。

我们知道了最小的宽度之后,就剩下填写这些dimen值。我们从UI拿到标注图之后,看看是720dp的切图还是1080p的如果是1080的切图,我们直接除以我们刚才得出的转换率,来获取到我们控件的宽度。720的也是同样的原理。

当我们把第一个设备完美适配了,也就是我们的410dp已经完美适配了,那么我们可以根据360dp,480dp与410的比值,来得到对应文件的dp值,这样我们就兼容到了所有的设备。

这样我们的适配就完成了,是不是Android适配没有那么难呢,欢迎大家一块交流~

最新最热的技术,资讯,视频,开源项目每天都会更新~

2022-05-09 22:55:33
0