Android開発のRuby Android自動化画面対応


背景: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プログラマーが必要とする仕事はこれだけです.
  • 次の作業はスクリプトに渡されます.まず、スクリプトは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ファイルは、自動適合の効果が悪い場合、たまに手動で微調整する必要がありますが、このスクリプトを実行すると微調整の値が失われるため、改善が必要です.興味のある学生は自分で実現することができます.