Android開発のRuby Android自動化画面対応
3785 ワード
背景:Android開発者にとって、スクリーンフィットはずっとあなたの心の痛みだと信じています~、Android開発者がスクリーンフィットの苦しみから解放されるように、このAndroid自動化スクリーンフィットの1.0バージョンを実現することにしました.次に考えを述べます.まずvalues-w 360を標準とする360 dpであり、対応するデバイスは720である.×1080の通称720 Pのスクリーン、つまりデザイナーからの設計原稿は720 Pのスクリーンを設計図としているので、設計図の上のサイズが100 pxであれば、私たちは100/2=50 dpで私たちのこの標準値を得る必要があり、このようにしてappの中のすべての適切なサイズをvaluesディレクトリのdimensに書き込む.xml(標準値)では、Androidプログラマーが必要とする仕事はこれだけです. 次の作業はスクリプトに渡されます.まず、スクリプトは
まとめ:簡単なRuby自動化アダプティブスクリプトが完成しました.もちろん、改善すべき点はたくさんあります.今はスクリプトを実行するたびにターゲットディレクトリのdimensを上書きします.xmlファイルは、自動適合の効果が悪い場合、たまに手動で微調整する必要がありますが、このスクリプトを実行すると微調整の値が失われるため、改善が必要です.興味のある学生は自分で実現することができます.
values/dimens.xml
を適切な画面解像度が必要なディレクトリ、例えばvalues-w400
にコピーし、その後、各サイズを正規でマッチングし、計算を行い、適切な値を再書き込みます.ここでは360 dpを基準とし、400 dpを適切なターゲットデバイスとし、100 pxを例にとると、(400/360)× 100=111であれば、values-w400dp
というディレクトリ内のdimensのこの項目の値は111 dpである.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ファイルは、自動適合の効果が悪い場合、たまに手動で微調整する必要がありますが、このスクリプトを実行すると微調整の値が失われるため、改善が必要です.興味のある学生は自分で実現することができます.