Android - 十分钟理解手机适配 与 lib工程生成包

1. 手机适配方式
1.1 适配方式之 dp

名词解释 : 分辨率:eg:480*800,1280*720。表示物理屏幕区域内像素点的总和。(切记:跟屏幕适配没有任何关系)
因为我们既可以把 1280*720 的分辨率做到 4.0 的手机上面。我也可以把 1280*720 的分辨率做到 5.0 英寸的手机
上面,如果分辨率相同,屏幕越小越清晰

px(pix) : 像素, 就是屏幕中最小的一个显示单元
dip(像素密度) : 即每英寸屏幕所拥有的像素数,像素密度越大,显示画面细节就越加丰富
计算公式 : 像素密度 = {长度像素 ^ 2 + 宽度 ^ 2 } / 屏幕尺寸
注:屏幕尺寸单位为英寸 例:分辨率为 1280*720 屏幕宽度为 6 英寸 计算所得像素密度约等于 245,屏幕尺寸
指屏幕对角线的长度。

在 Android 手机中 dpi 分类:
这里写图片描述
在我们的 Android 工程目录中有如下 drawable-*dpi 目录,这些目录是用来适配不同分辨率手机的。

这里写图片描述

Android 应用在查找图片资源时会根据其分辨率自动从不同的文件目录下查找(这本身就是 Android 系统的适配
策略),如果在低分辨的文件目录中比如 drawable-mdpi 中没有图片资源,其他目录中都有,当我们将该应用部署
到 mdpi 分辨率的手机上时,那么该应用会查找分辨率较高目录下的资源文件,如果较高分辨率目录下也没有资源则
只好找较低目录中的资源了。

常见手机屏幕像素及对应分别率级别:
    ldpi 320*240
    mdpi 480*320
    hdpi 800*480
    xhdpi 1280*720
    xxhdpi 1920*1080

dp 和 px 之间的简单换算关系:
    ldpi 的手机 1dp=0.75px
    mdpi 的手机 1dp=1.0px
    hdpi 的手机 1dp=1.5px
    xhdpi 的手机 1dp=2.0px
    xxhdpi 的手机 1dp=3.0px

这里写图片描述

根据上面的描述我们得出如下结论,对于 mdpi 的手机,我们的布局通过 dp 单位可以达到适配效果。

1.2 适配方式之 dimens
跟 drawable 目录类似的,在 Android 工程的 res 目录下有 values 目录,这个是默认的目录,同时为了适配不同尺寸
手机我们可以创建一个 values-1280x720 的文件夹,同时将 dimens.xml 文件拷贝到该目录下。

这里写图片描述
在 dimens.xml 中定义一个尺寸,如下图所示。

这里写图片描述

在 values-1280x720 目录中的 dimens.xml 中定义同样的尺寸名称,但是使用不同的尺寸,如下图所示。

这里写图片描述

当我们在布局文件中使用长或者宽度单位时,比如下图所示,应该使用@dimen/width 来灵活的定义宽度。

这里写图片描述

在 values-1280x720 中,中间的是大写字母 X 的小写形式 x,而不是加减乘除的乘号。如果我们在
values-1280x720 中放置了 dimens 常量,一定记得也将该常量的对应值在 values 目录下的 dimens.xml 中放一份,
因为该文件是默认配置, 当用户的手机不是 1280*720 的情况下系统应用使用的是默认 values 目录中的 dimens.xml。

1.3 适配方式之 layout

跟 values 一样,在 Android 工程目录中 layout 目录也支持类似 values 目录一样的适配,在 layout 中我们可以
针对不同手机的分辨率制定不同的布局,如下图所示。

这里写图片描述

1.4 适配方式之 java 代码适配

为了演示用 java 代码控制适配的效果,因此假设有这样的需求,让一个 TextView 控件的宽和高分别为屏幕的宽和高的一半。

我们新创建一个 Android 工程,修改 main_activity.xml,布局文件清单如下:

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值