Android开发之自动化屏幕适配方案

作为一位Android开发者,想必大家都应该遇到过由于Android设备碎片化带来的屏幕适配苦恼。经过工作实践和积累,我总结了一种轻松实现自动化屏幕适配的方案,现分享给大家。

首先来看一下Android各分辨率对应的标准设备的参数如下:

标识 屏幕分辨率 屏幕密度比
ldpi 240*320 120
mdpi 320*480 160
hdpi 480*800 240
xhdpi 720*1280 320
xxhdpi 1080*1920 480

由于屏幕密度比为160时,1px=1dp,
因此,px与dp的转换关系:px= density/160 * dp
故,dp=(160 / density) * px

通常UI设计师给出的产品UI设计图的尺寸都是用px标注,而为了更好的屏幕适配,我们开发者需要将UI中给出的px全部转成dp来表示。然而这个转换是一个极其麻烦的事情,需要计算各个分辨率下的尺寸的关系,然后在对应的目录下去修改对应的尺寸值。笔者愚钝,曾经就做过这样的傻事,硬是手动去各个value目录下定义尺寸值。这样做既费时,又没有任何技术含量。
通常,不懂得偷懒的程序员不是一个好的程序员。为了调高工作的效率,减少UI适配的麻烦,我写了一个AutoDimentsGenerator.jar的工具来自动完成这些工作。以下截图是生产的部分尺寸。

Android开发之自动化屏幕适配方案_第1张图片
Paste_Image.png
Android开发之自动化屏幕适配方案_第2张图片
Paste_Image.png
Android开发之自动化屏幕适配方案_第3张图片
Paste_Image.png

通过一下命令可以自动生成开发中UI所标记的各个尺寸值:
java -jar AutoDimentsGenerator.jar -uiwidth 1080 -uiheight 1920 -uidensity 320

另外,在实际开发中有时需要对某个特定分辨率的屏幕做单独的适配,通过这种自动化的方案也是非常简单的。只需要在上面的命令后面加上你想单独适配的分辨率(备注:对这种单独的适配笔者采用的是百分百适配的方式,这样就不用担心分辨率相同但密度比却不同带来的问题)。
比如开发中需要对2560x1440的分辨率单独适配,运行命令如下:
java -jar AutoDimentsGenerator.jar -uiwidth 720 -uiheight 1280 -uidensity 320 2560x1440 即可。
-uiwidth :UI设计图参考设备的宽度
-uiheight :UI设计图设备的高度
-uidensity :UI设计图参考设备的密度比

好了,就到这里了,也该休息了。
AutoDimentsGenerator.jar 使用该jar运行以上命令就可,是不是非常省事呢!喜欢的赶快用起来把。
以下为项目的Git地址:https://github.com/hardlove/AutoDiments.git

你可能感兴趣的:(Android开发之自动化屏幕适配方案)