以后我将逐步在我的个人博客中写文章,有兴趣的同学可以访问:http://vjson.com
我相信对于Android开发者来说,屏幕适配一直是你心中的痛~,为了让Android开发者从屏幕适配的痛苦中解脱出来,我决定实现这个Android自动化屏幕适配的1.0版本。下面来讲一下思路。
- 首先以values-w360作为标准也就是360dp,对应的设备就是720×1080俗称的720P的屏幕,也就是说设计师给的设计稿是以720P的屏幕作为设计图的,那么如果设计图上面的尺寸是100px,那么我们就需要用100/2 = 50dp得到我们的这个标准值,以此类推,将app中所有需要适配的尺寸都写入到values目录的dimens.xml(标准值)中,Android程序员所需要做的工作就这么多了。
- 接下来的工作就交给脚本了,首先脚本会将values/dimens.xml拷贝到需要适配的屏幕分辨率对应的目录,例如values-w400,然后用正则匹配出每一个尺寸,进行计算然后重新写入适配之后的值,这里以360dp为标准,400dp为需要适配的目标设备,以100px为例,那么(400/360)× 100 = 111,那么在values-w400dp这个目录中的dimens的该项目的值就是111dp了。
require 'fileutils'
BASE_DP=360
def adapte_dimens(dimens_file,alpha)
puts "adapter #{dimens_file}"
File.open dimens_file,'a+' do |f|
str =""
f.each_line{|line|
value = /(?<=>)\d+(?=(dp|sp))/.match(line).to_a[0]#匹配出尺寸的项目包括dp和sp
if value
value = value.to_f * alpha#计算适配后的值
str += line.gsub(/(?<=>)\d+(?=(dp|sp))/,value.to_i.to_s)#将新值写入
else
str += line
end
}
f.truncate(0)
f.puts str
end
end
values_list = Dir.entries("./").find_all{|f|
#通过修改这里的正则表达式,可以控制具体适配哪一个屏幕比如将正则改为/values-w400dp/那么就只会适配400dp的屏幕了
/values-w|values-sw/.match(f)
}
values_list.each do |v|
FileUtils.cp("values/dimens.xml",v)
dest_file = "#{v}/dimens.xml"
dp = /(\d{3})/.match(v)
alpha = dp[0].to_f/BASE_DP#计算比率系数
adapte_dimens(dest_file,alpha)
end
总结:
好了简单的Ruby自动化适配脚本就完成了,当然还有很多需要改进的地方,现在是每一次运行脚本就会覆盖目标目录中的dimens.xml文件,如果有时候自动适配的效果不好偶尔需要人工做一些微调,但是执行这个脚本之后微调的值就会丢失掉,所以还需要改进。有兴趣的同学可以自己实现。
分享到:
相关推荐
Ruby自动化脚本实现网络拓扑映射
开放Ruby+watir 自动化测试工具介绍+安装说明
ruby,自动化框架watir,是windows版本的,机不可失哦,赶快啊
ruby + watri 自动化部署集成Eclipse 全量安装包 (包括:watir-1.5.4、ruby186-26、WatirRecorder_Setup_lite、dltk-core-ruby、dotnetfx、rubygems-1.3.7、安装说明)
自动化测试的一些简单总结及介绍,纯属于个人的一点心血之作,总结了单元测试
ruby-on-lambda, 自动化脚本,帮助运行 ruby 2.1程序 上的 ruby为什么?因为:AWS的Lambda具有巨大的潜在意义和有趣的含义AWS的Lambda还没有正式支持 ruby,因为ruby 具有巨大的潜在意义和有趣的含义 !?通过:将一...
基于Ruby的Web自动化测试框架平台应用.pdf
基于Ruby的Web自动化测试框架平台应用.rar
ruby实现邮件收发
代码仅供参考学习! 基于ruby环境部署的自动化模块化小项目 该项目中前端自动化及模块化目前只是最简单的实现方式,简化及更多文件合并/压缩还有待提高
twitter-cldr-rb - ICU的Ruby实现
Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。 它支持当前流行的浏览器。 它是免费的开源库,而且使用起来非常的方便。
android ruby解释器
前几天做了一个loadrunner结合tesseract-ocr来识别验证码,尽管识别精度不是太高,甚至有些验证码图片不能被识别,但是...但是在功能自动化测试中我是100%赞成使用的,功能自动化不像性能自动化那样对同一个操作(登录)
Ruby自动化测试回购包含用于测试UI / API的ruby自动化框架。 使用Cucumber,SitePrism,水豚CucumberCucumber是计算机程序员用来测试其他软件的软件工具。 它运行以行为驱动开发(BDD)风格编写的自动化验收测试。 ...
ruby-snmp, SNMP ( 简单网络管理协议)的ruby 实现 用于 ruby的 SNMP库摘要这里库实现 SNMP ( 简单网络管理协议) 。 它在纯 ruby 中实现,因此不依赖于的外部库( 如 ) 。 你可以在 ruby 可以运行的任何地方运行这里库...
Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还不错,准备下一步在公司推广使用。因为 Watir 的网站...
ruby watir 框架 自动化ruby watir 框架 自动化ruby watir 框架 自动化
本资源是飞机大战类射击游戏的ruby实现,需要安装rpg maker xp 1.03才可打开本游戏。