Android 适配之dimens adapter

————字数统计 1.7k 字 | 阅读时长 6 分钟————

序言

大渣好,马上要过春节了,举国同庆的日子,在这里先祝大家:新年快乐,合家欢里,工作顺利,每天都旺、旺、旺!接下来,进入正题,今天我们的主题是适配,我们都知道 Android 屏幕碎片化特别严重,所以我们不止要开发一款好的应用,而且要在各种手机上都保持一样的效果,至少主流机型没问题,这是我们最头疼的问题,总之适配的工作是不可避免的,适配的方式包括很多内容,关于这一块的内容,我们简单聊一下!

适配常识

对于度量单位,有很多形式,android 中提到的类型有:dppspxinchptmm,也就是你可以使用这几种形式的单位,在不同的分辨率下,显示的效果是截然不同的,所以在 Android 中提倡以 dp (与像素无关)来作为统一单位,在实际使用中1dp大约等于1/160 in,而文字统一使用 sp 作为单位,以达到显示的一致性。关于单位的换算,可以看 Android 源码或者百科一下

所以,适配是一个很复杂的工作,简单罗列一下适配的几种形式:

  • 基础适配
    • 使用 dp 而非其他单位
    • 使用 wrap_content, match_parentweight 权重,尽量不写固定尺寸
    • 使用相对布局
    • 配合使用 .9 图片
    • 使用矢量图
  • 资源适配
    • 多套 drawable 资源
    • 多套 layout 资源
    • 多套 values 资源
  • 百分比布局

关于软件

以上就是关于适配的一些方式,这里就不再一一详细说明了,接下来重点说一说 values 中 dimens.xml 适配的问题,这就是我来做这个软件的关键所在。

我们在适配 values 时会创建如:values-720×1280values-sw720dpvalues-w720dp 等针对不同分辨率下的尺寸适配方案,我们都知道 dimens.xml 中保存了各种尺寸值,所以,当存在多套 values 适配时,需要将默认的 dimens.xml 尺寸值转换为对应分辨率下的尺寸,无论是 dp 、ps 、px 等,都需要根据不同的比例转换,当 dimens.xml 文件中尺寸越来越多,单位不同时,如果一个个的计算很麻烦,这是发生在我身边的事,维护的以前的项目,现在要重新作适配,很多分辨率下的适配,就 dimens 这一块的适配就好几天(可能有同学会说,写程序的时候就写好,但是试问谁是这么做的,一开始没有人设定适配的方案,而且在第一套方案没有完成之前,谈适配不是太早了吗,每一次的调整都要改好几套,累死不讨好),呵呵…… 而且最后还找了一些软件,但是很不好用,还要把所有的单位统一之后才可以使用,很鸡肋,所以我决定自己写一个统一的方案,可以一键转换的那种,最终,今天的主角,就是来做这件事的,我暂且叫作:Dimens Adapter

WEB

本着方便的原因,我将这个功能提供了两种形式的使用方式,PC端(Windows) 和 Web端,同样的使用效果。

**Web版的入口:http://devtools.net.cn/dimens/ **

**Web版的入口:http://devtools.net.cn/dimens/ **

**Web版的入口:http://devtools.net.cn/dimens/ **

这款软件,我使用了强大的 Python 语言,至于为什么,自行了解,就边学习边使用,之前已经看过很多遍了,其实还是很好上手的,哈…… ,Web 版本使用的是:阿里ECS云服务器 + Django + uwsgi,在部署的过程中,遇到了很棘手的问题,问题并不多,但是搜不到相关的答案,不过最终还是很幸运的说,换个思路,部署成功了,效果很不错的说

  • 效果如下:

dimens_web

  • 使用
    1. 填写目标分辨率 density
    2. 填写目标分辨率 sacle density
    3. 填写目标分辨率 xdpi
    4. 将默认的 dimens.xml 文件的内容复制到这里
    5. 这里是转换后的文件内容,没有提供文件下载,自行复制
    6. 当1、2、3、4 填写好之后,点击转换,最终展示在 5 里面

PC

核心代码变化不大,面对的输出环境不一样,区别于读写操作,本身的 python 文件可以通过追加参数本地运行,也可以作为正常模块使用,最后在UI 方面,使用 Qt,最后打包,一款图形化的软件就诞生了,只需要一个 exe 文件,不需要安装,绿色环保,所见即所得。但是话说遇到了很多的坑,主要在于打包工具的兼容性问题,开发环境安装卸载了很多遍,各种姿势都试过了,但是软件开发或者对程序员来说,就是这样一个不断调试完善的过程,不断填坑的过程。虽然UI丑了点,但是核心功能具备,这就说明了软件迭代的重要性了,哈……

下载地址:密码un9w

下载地址:密码un9w

下载地址:密码un9w

  • 效果如下

​ 其实软件的使用很简单,都是一键式的傻瓜操作:

dimens_soft

  • 功能讲解:
  1. 填写目标分辨率 density
  2. 填写目标分辨率 sacle density
  3. 填写目标分辨率 xdpi
  4. 填写默认的 dimens.xml 文件地址
  5. 日志输出区域,成功后会显示目标文件的地址
  6. 如果不手动填写 dimens.xml 文件地址,可以浏览选择文件
  7. 都填写完毕之后,点击该按钮执行转换

菜单讲解:

  1. 主要的说明就是 选项(options) 功能,默认提供了几种比例方案,只要选择对应的方案,就可以填写到指定内容,并选择默认的 dimens.xml 转换即可
  2. 可以转换语言(英语、中文)
  3. 简单的使用说明、作者信息

使用参考

关于密度、分辨率的比例参考如下:

屏幕密度 范围(dpi) 标准分辨率 dp与px 图标尺寸
ldpi(QVGA) ~ 120 240 * 320 1dp=0.75px 36 * 36
mdpi(HVGA) 120 ~ 160 320 * 480 1dp=1px 48 * 48
hdpi(WVGA) 160 ~ 240 480 * 800 1dp=1.5px 72 * 72
xhdpi(720P) 240 ~ 320 720 * 1280 1dp=2px 96 * 96
xxhdpi(1080p) 320 ~ 480 1080 * 1920 1dp=3px 144 * 144
xxxhdpi(2K) 480 ~ 640 1440 × 2560 1dp=4px 192 * 192

提示:图标大小 = px数 * 4 * 12

总结

不管是Web还是pc,从专业的角度讲,有点简陋和丑陋,纯属个人爱好和需要,没什么比较的,愿意使用就放心使用,不想用绕道即可,不接受喷子,没有产品经理、项目经理,还不能任性一回?如果有遇到任何问题,可以随时联系:xiaofeng355@sina.com

×

大吉大利,晚上吃鸡

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 序言
  2. 2. 适配常识
  3. 3. 关于软件
    1. 3.1. WEB
    2. 3.2. PC
  4. 4. 使用参考
  5. 5. 总结
| | 总字数统计:93.5k