`
heisedeyueya
  • 浏览: 97709 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Ruby实现Android自动化屏幕适配

阅读更多
    以后我将逐步在我的个人博客中写文章,有兴趣的同学可以访问: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自动化脚本实现网络拓扑映射”这一主题,然而,实际的部分内容却似乎与自动化脚本或网络拓扑映射没有直接关联,而更像是一个自动化操作的脚本示例,可能用于...

    腾讯Android自动化测试实战电子书

    除此之外,Appium是一个跨平台的自动化测试框架,支持Android和iOS,允许开发者使用JavaScript、Python、Ruby等多种语言编写测试脚本。它通过WebDriver协议与设备进行交互,能够实现更高级的自动化测试场景。 在...

    开放Ruby+watir 自动化测试工具介绍+安装说明

    Ruby和Watir(Web Application Testing in Ruby)是一个强大的自动化测试框架,主要用于Web应用程序的测试。Ruby是一种面向对象的、动态的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者的喜爱。...

    ruby 自动化框架watir

    Ruby 自动化框架Watir(Web Application Testing in Ruby)是一个强大的工具,专为进行Web应用程序的端到端测试而设计。这个框架允许开发者使用Ruby语言编写测试脚本,与浏览器进行交互,模拟真实用户的行为,从而...

    appium+android自动化测试源码

    本资源“appium+android自动化测试源码”提供了一个基于Appium进行Android应用自动化测试的实际示例,适用于那些想要了解或实践Appium与Android自动化测试的开发者。 【描述】:“这是一个安卓基于appium自动化测试...

    基于Ruby的Web自动化测试框架平台应用.pdf

    本文主要介绍了基于 Ruby 的 Web 自动化测试框架平台应用,着重讨论了 Web 自动化测试的基础理论和 Ruby 自动化测试 Watir 框架。同时,文章还介绍了山西科技资源共享平台的实际项目,对平台应用自动化测试进行了...

    基于Ruby的fastlane iOS和Android开发自动化工具设计源码

    fastlane是一个基于Ruby开发的自动化工具,专为iOS和Android开发人员设计,包含2840个文件,其中包括1251个Ruby源文件、333个JSON文件、138个PNG图片文件、104个Plist文件、93个Markdown文件、71个MATLAB文件、66个...

    Appium mac/android自动化

    Appium的设计避免了移动自动化中的重复工作,提供了扩展的移动端自动化API,并且支持云服务部署,从而实现远程控制和自动化脚本的执行。 在进行Appium自动化之前,需要做一些准备工作,比如安装Java环境、Android...

    Android 自动化框架 appium

    Appium是一款开源的自动化测试框架,专为移动应用(iOS和Android)设计,它允许开发者使用多种编程语言(如Java、Python、Ruby等)编写测试脚本,实现跨平台的自动化测试。Appium的核心理念是遵循W3C的WebDriver协议...

    基于Ruby的Web自动化测试框架平台应用.rar

    学习这份资料,读者可以深入了解如何利用Ruby实现Web测试自动化,包括安装和配置所需的库、编写测试脚本、运行和调试测试,以及如何整合到持续集成/持续部署(CI/CD)流程中。此外,还可能涵盖了如何处理测试报告、...

    Android 自动化测试框架

    在Android平台上,自动化测试是确保应用质量和性能的关键环节。本文将详细介绍几个常见的自动化测试框架,包括Monkey、MonkeyRunner、UIAutomator、Robotium以及Appium,帮助开发者理解它们的功能、优缺点及其适用...

    Android自动化测试

    在Android开发过程中,自动化测试是不可或缺的一环,它能够帮助我们高效、准确地验证应用程序的功能,确保产品质量。本文将深入探讨“Android自动化测试”,特别是针对UI层面的自动化测试。 首先,我们要理解...

    深入浅出Android 自动化测试1

    Android自动化测试是提升应用质量与开发效率的关键环节。本文将深入探讨Android自动化测试的不同方面,包括测试工具、分类、实践以及代码覆盖率。 首先,我们来看看常见的Android自动化测试工具。Monkey、...

    ruby + watri 自动化部署集成Eclipse 全量安装包

    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程序.zip

    ruby-on-lambda, 自动化脚本,帮助运行 ruby 2.1程序 上的 ruby为什么?因为:AWS的Lambda具有巨大的潜在意义和有趣的含义AWS的Lambda还没有正式支持 ruby,因为ruby 具有巨大的潜在意义和有趣的含义 !?通过:将一...

    android ruby解释器

    Android Ruby解释器的实现通常是基于JRuby,这是一个用Java编写的Ruby解释器,能够与Android的Dalvik或ART虚拟机无缝集成。JRuby不仅实现了Ruby标准库,还提供了与Java平台的互操作性,使得Android的API可以直接在...

    基于ruby环境部署的自动化模块化小项目.zip

    在Ruby环境中部署自动化模块化小项目是一个现代软件开发的关键步骤,尤其对于提升开发效率和保持代码组织有序至关重要。Ruby作为一种动态、面向对象的编程语言,常常用于构建Web应用和服务,而自动化和模块化的实践...

    全网最全Appium自动化测试教程,一篇就够了

    全网最全Appium自动化测试教程,一篇就够了 Appium是开源的、跨平台的测试自动化测试框架; 主要用于测试移动端应用; Appium支持模拟器和真机上的原生应用、混合应用、Web应用; Appium使用WebDriver的JSON wire...

Global site tag (gtag.js) - Google Analytics