Android dp方式的屏幕适配工具使用(bat批处理方式)

来源:互联网 发布:花都金蝶软件代理商 编辑:程序博客网 时间:2024/05/18 15:08

之前写过一篇文章《Android屏幕适配dp、px两套解决办法》介绍两种方式做屏幕UI适配,主要讲的是dp方式。

还有一篇更详细的ppt文档解析dp方式适配的原理(csdn下载需要积分,系统搞的鬼,没积分去下载就直接Q我吧)。

不用怀疑dp方式的可行性,我做过实验,并且在我带过的两家大公司实践过,得到了认可。

dp方式适配的java源码地址:https://github.com/mengzhinan/PhoneScreenMatch  自己去研究吧,很简单。


复述原理:

如果你发现你手机的widthDP值(widthPixels / density)是411.948dp,怎么办?那就取整411,千万别取412。因为系统是往下寻找对应的值(如果你写成values-w412dp,则与values-w411.948dp不匹配,系统会寻找小点的,比喻找到了比下一个values-w392dp的dimens.xml文件,那就差很远了)。

此时,如果你写个按钮,layout_width="411dp",就几乎宽度沾满屏幕了,但是还有一点点边线,那点边线的宽度是0.948dp,可以忽略。

也就是你把按钮的layout_width值给@dimen/dp_360,系统会去寻找res/values-w411dp/dimens.xml文件的dp_360变量的值,其实这个值就是411dp。

故,你只要认为任何手机的宽度都是dp_360这个变量,即可。要适配什么widthDP的手机,只需要在生成对应的dimens文件,res/values-wXXXXdp/dimens.xml。即可完成不同尺寸的手机上app的UI不变形,等比缩放的效果。

建议美工给1080x720的图,因为720/2即360,比喻,给了一个按钮width是90px,那么就给@dimen/dp_45的值,方便计算。

如果美工给的是1920x1080的图呢?1080/3=360。



那么怎么使用呢,往下看:

1、需要的文件。

需要在项目对应module下存在一个dimens.xml、screenMatchDP.jar和screenMatchDP.bat三个文件,dimens.xml文件不要更名,否则找不到。

后面的jar文件也不要更名,如果真要改,记得把bat文件中对应的内容也修改。bat文件就是一个windows的批处理文件,调用java -jar命令。

这些文件随便你放在哪个module下,但是相对的路径别错了,

dimens.xml路径:   ..../res/values/dimens.xml

screenMatchDP.jar:这个文件与res目录同层级

screenMatchDP.bat:这个文件与res目录也同层级



好了,废话这么多,就是怕你不会用。

最新的bat jar 和xml文件去github下载吧:https://github.com/mengzhinan/PhoneScreenMatch


2、dimens.xml文件内容格式。

建议dimens.xml文件中如屑定义dimen值:

<dimen name="dp_m_10">-10dp</dimen><dimen name="dp_m_8">-8dp</dimen><dimen name="dp_m_1">-1dp</dimen><dimen name="dp_0">0dp</dimen><dimen name="dp_0_1">0.1dp</dimen><dimen name="dp_0_5">0.5dp</dimen><dimen name="dp_1">1dp</dimen><dimen name="dp_2_5">2.5dp</dimen><dimen name="dp_3">3dp</dimen><dimen name="dp_4_5">4.5dp</dimen>

负值变量名:dp_m_xxx

带小数的变量名:dp_xxx_xxx。如果写成dp_xxx.xxx时,在java类中引用会报错的。

如果是0.1的变量名:dp_0_1


总之,建议dp变量名定义为 dp_xxx,sp的定义为  sp_xxx。简单明了。如果你非要别样定义也随便,如果出问题了自己去修改源码,自己去用Eclipse打包jar包即可。

你可以去我的博客或者源码中copy我默认提供的一套dimens值,免得你自己一个一个写。


3、解析bat文件内容和设置。

@echo off:: Call java jar file to make dimens.xml files.:: After screenMatchDP.jar,the first param is base dp.:: And stitching the parameters that you need to fit later.:: For example:java -jar screenMatchDP.jar 360 411 480:: Default dps is 384 392 400 410 411 480 533 592 600 640 662 720 768 800 811 820 960 961 1024 1280 1365@java -jar %~dp0\screenMatchDP.jar 360@rem "If you are not want to make some dimens.xml files below: "@echo Be deleting files of 1365dp ...@rmdir /q /s .\res\values-w1365dp@echo Delete complete!pause

核心代码就两行:

java -jar %`dp0\screenMatchDP.jar 360

后面的360位基准dp值,也可以不写

写法1:

java -jar %`dp0\screenMatchDP.jar   默认以手机width 为360dp基准,

默认适配384 392 400 410 411 480 533 592 600 640 662 720 768 800 811 820 960 961 1024 1280 1365  等手机width的dp值。


写法2:

如果你想适配653dp和668dp宽度的手机,请写成:java -jar %`dp0\screenMatchDP.jar 360 653 668

第一个值为基准值,后面的为待适配的值。其实这么调用jar文件,是调用main函数,String[] args参数接收值,理解吗?看我的源码这么处理这个数组的吧。


补充:

因为我默认适配了一堆的值,都是个人经验的积累。如果你觉得不需要,则可删除,比喻你想删除1365  1280两个的dimens.xml适配文件:

@rmdir /q /s .\res\values-w1280dp

@rmdir /q /s .\res\values-w1365dp

完事,强制删除目录的代码。免得你每次手动删除,还骂我。


4、运行。


在硬盘上找到这个bat文件(不要在AS中双击打开,那只是查看文件内容,编辑)。双击执行即可,显示内容如下:






再去看看你的res目录下面结果:



生成了,这不是你想要的吗?!  很简单。









阅读全文
0 0
原创粉丝点击