caidiehuang 2014-10-21
以后我将逐步在我的个人博客中写文章,有兴趣的同学可以访问:http://vjson.com
我相信对于Android开发者来说,屏幕适配一直是你心中的痛~,为了让Android开发者从屏幕适配的痛苦中解脱出来,我决定实现这个Android自动化屏幕适配的1.0版本。下面来讲一下思路。
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文件,如果有时候自动适配的效果不好偶尔需要人工做一些微调,但是执行这个脚本之后微调的值就会丢失掉,所以还需要改进。有兴趣的同学可以自己实现。