Android开发之Ruby实现Android自动化屏幕适配

Ruby-China for Android客户端开源了 开源地址 https://github.com/gonjay/rubychina4android 点击下载APK 特性: 安卓原生的侧滑抽屉下拉刷新主页帖子列表下滑到头后自动获取新的内容浏览帖子详情并支持Markdown,左右侧滑分别展示帖子内容、回复列表、回复编辑(预览)登录、退出功能 为什么要开发安卓版本 我希望用自己掌握的技术在安卓上面提供优秀的体验探索HTM 阅读详情

背景:我相信对于Android开发者来说,屏幕适配一直是你心中的痛~,为了让Android开发者从屏幕适配的痛苦中解脱出来,我决定实现这个Android自动化屏幕适配的1.0版本。下面来讲一下思路。

  1. 首先以values-w360作为标准也就是360dp,对应的设备就是720×1080俗称的720P的屏幕,也就是说设计师给的设计稿是以720P的屏幕作为设计图的,那么如果设计图上面的尺寸是100px,那么我们就需要用100/2 = 50dp得到我们的这个标准值,以此类推,将app中所有需要适配的尺寸都写入到values目录的dimens.xml(标准值)中,Android程序员所需要做的工作就这么多了。

  2. 接下来的工作就交给脚本了,首先脚本会将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文件,如果有时候自动适配的效果不好偶尔需要人工做一些微调,但是执行这个脚本之后微调的值就会丢失掉,所以还需要改进。有兴趣的同学可以自己实现。


Appium移动端自动化测试:从原理到实战的完整指南 自动化测试是现代软件工程中提升效率、保障质量的核心实践,其原理在于通过脚本模拟用户操作,实现测试流程的自动化执行。在移动应用领域,跨平台测试需求催生了Appium这一关键技术,它基于WebDriver协议,通过客户端-服务器架构统一调用Android UIAutomator2和iOS XCUITest等原生框架,实现了“一次编写,多端运行”的技术价值。这显著降低了多平台应用的测试维护成本与学习门槛。在应用场景上,无论是原生、混合还是Web应用,Appium都能提供稳定支持。本文聚焦Appium环境搭建、元素 阅读详情

相关推荐

Ruby语言的移动应用开发

Ruby是一种动态、开放源代码的面向对象编程语言,由日本程序员松本行弘于1995年创建。Ruby的设计理念是使编程更加简单和愉快,因而它的语法优雅、易读。Ruby在Web开发领域尤其炙手可热,通过Ruby on Rails框架大大提高了开发效率。然而,Ruby作为一门主要用于后端开发的语言,如何在移动应用开发中发挥作用呢?接下来,我们将探讨Ruby在移动开发的实践。

2501_90571201的博客 1181

ruby android app,Ruby practical for Android Development? - Stack Overflow

Almost all the documentation on android development is focused on Java, and eclipse. While I'm not a big fan of Eclipse as an IDE (bloat); it is what the lot use, so it is what I use.Where you'll fin...

weixin_42445886的博客 121

RubyMotionTest:测试 RubyMotion for Android

RubyMotion 测试 测试 RubyMotion for Android

Ruboto IRB: Android上的互动Ruby控制台

Ruboto IRB: Android上的互动Ruby控制台 是一个开源项目,它允许您在Android设备上运行Ruby代码,并与Android系统进行交互。这为开发者提供了一个全新的方式来探索和调试Android应用程序。 Ruboto IRB能用来做什么? Ruboto IRB可以用来执行Ruby代码并与Android系统进行交互。例如,您可以使用它来: 在Android设备上运行Ruby脚...

gitblog_00009的博客 453

android-ruby:安卓系统Ruby

安卓系统Ruby 现在支持纸杯蛋糕 (Android 1.5) irbapp.apk 包含 libruby.so /sdcard/ruby 中的其他 ruby​​ 脚本和共享库。 和,原生 ruby​​ 命令 ruby: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped 截屏 如何构建 按照 构建 android-ruby $ cd android-ruby $ export TOP=$HOME/mydroid $ . $TOP/build/envsetup.sh $ mm 生成的文件 $TOP/out/target/product/generic/system/app/irbapp.apk pseudo irb app

Android代码-rubychina的安卓客户端

开源地址 https://github.com/yueyeweiming/MyRubyChinaAndroid 使用的开源库 Volley:完成网络通信 Gson: 完成json的解析 Android-PullToRefresh : 下拉刷新和到底部自动加载,以后可能换成SwipeRefreshLayout butterknife: view注入框架,简化开发,减少代码。 ListViewAnimations:ListView添加动画 AndroidStaggeredGrid:支持不同高度的gridview ActiveAndroid:ORM框架

Project-RainMan用户指南:轻松切换摄氏度与华氏度的实用技巧

Project-RainMan是一款开源天气应用,使用Swift语言开发,提供实时天气信息和温度显示功能。本指南将详细介绍如何在应用中快速切换摄氏度与华氏度,帮助用户根据习惯查看温度数据。 ## 为什么需要切换温度单位? 不同地区的用户对温度单位有不同偏好:中国等国家常用摄氏度(℃),而美国等国家则习惯使用华氏度(℉)。Project-RainMan支持双单位切换,让全球用户都能舒适使用。

gitblog_00001的博客 635

android ruby解释器

android ruby解释器

Ruby实现Android自动化屏幕适配

[b][color=green] 以后我将逐步在我的个人博客中写文章,有兴趣的同学可以访问[/color]:[url]http://vjson.com[/url][/b] 我相信对于Android开发者来说,屏幕适配一直是你心中的痛~,为了让Android开发者从屏幕适配的痛苦中解脱出来,我决定实现这个Android自动化屏幕适配的1.0版本。下面来讲一下思路。 [lis...

黑色的月牙 240

dimens资源文件实现px值与dp值、sp值之间的转化

里面有详细的px值在不同分辨率下对应的sp值、dp值,用于UI适配,直接导入项目的资源文件目录下,通过R.dimen.xxx来进行引用,从此不用写多套布局文件,一套layout搞定。

NLP自然语言处理:神经网络语言模型(NNLM)

目录 一、传统语言模型 1.1 稀疏性 1.2泛化能力差 二、神经网络语言模型 2.1 前馈神经网络模型(FFLM) 2.2 循环神经网络模型(RNNLM) 2.2.1循环神经网络模型示例 2.2.2RNN语言模型训练过程 2.2.3RNN语言模型反向传播 2.2.4语言模型评估 语言模型的构建目的是为了对语言中的各要素的分布进行估计,具有较长的研究历史和广泛...

陈宸的博客 1万+

Aya vs. Android Studio:图形化ADB调试,哪个更适合你的工作流?(多设备/UI检查/性能监控对比)

本文对比了Aya和Android Studio在图形化ADB调试方面的表现,包括多设备调试、UI检查和性能监控等核心场景。Aya以轻量级和快速响应见长,适合快速验证和实时监控;而Android Studio提供更专业的深度分析工具,适合复杂开发任务。根据实际需求选择合适的工具或组合使用,可显著提升Android开发效率。

weixin_30872499的博客 447

Abaqus仿真突然中断?手把手教你解决SIGTERM/SIGINT报错(附完整命令行方案)

本文深入解析Abaqus仿真中因SIGTERM或SIGINT信号导致进程意外中断的根本原因,并提供了一套完整的命令行解决方案。通过将作业提交方式从图形界面切换到命令行,并配合关键参数设置,可以有效避免因会话空闲超时或外部干扰引发的计算中断,保障长时间仿真任务的稳定运行。

devops8pract的博客 746

Android的Ruby解释器

使用NDK编译ruby相对比较容易,编译之后获得的共享库,可以在android中使用,这里是一个android的ruby解释器的例子,版本为ruby2.2,也可以是其它版本。这里的例子为了说明如何初始化ruby解释器,运行ruby脚本,例子中的界面比较简单,一个输入栏用于输入ruby脚,一个输出栏用于显示运行的结果。Android代码基于java,需要通过java调用ruby。例子的基本过程与之前

srplab's blog 2128

手把手教你为RK3588开发板适配RTL8211F网卡:设备树配置与PHY驱动匹配全流程

本文详细介绍了在RK3588开发板上适配RTL8211F千兆以太网PHY芯片的全流程,包括硬件原理图确认、设备树配置与PHY驱动匹配。通过实战案例和调试技巧,帮助开发者解决常见问题并优化网络性能,适用于嵌入式Linux开发中的Ethernet网络功能实现。

weixin_29184075的博客 526

5分钟搞定:用Ollama在MacBook上本地运行Qwen3大模型(附避坑指南)

本文详细介绍了如何在MacBook上使用Ollama快速部署和运行Qwen3大模型,包括安装步骤、性能优化技巧及常见问题解决方案。Ollama作为一款轻量级工具,特别适合M系列芯片的Mac用户,支持多种量化版本,显著降低资源消耗,提升推理速度。

sql99的博客 822

RubyMotion发布Android公开测试版

近日,RubyMotion宣布其Android支持已经开始公开测试。现在,早期用户已经可以开始用它为Android平台开发应用。RubyMotion是一个基于终端的工具链。通过它,开发人员可以使用流行的Ruby语言和工具创建原生iOS和Mac应用。而现在,他们可以借助该测试版本创建Android应用了。\u0026#xD;\u0026#xD;公开测试版对所有RubyMotion客户免费。对于即将到...

cpongo011702 404

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

android ruby,11年软件老兵说Ruby:对程序员最友好且可读性最强的语言

命名规则常量全都是大写字母.ANDROID_SYSTEM = 'android'变量如果不算@, @@, $的话,是小写字母开头.下划线拼接.例如: color, age, is_createdclass, module首字母大写,骆驼表达法: Apple, Human方法名小写字母开头. 可以以问号? 或者等号结尾,例如: name, created?, color=Class 的写法作为面向对...

weixin_34010875的博客 354

cursor AI代码编辑器IDE对接deepseek模型api;字节ai编辑器trae

参考: https://www.cursor.com/ https://platform.deepseek.com/https://www.cursor.com/下载安装后,注册账号登录即可 再高级里选择设置 再模型这注册模型: 模型名称一定要填正确,url地址填好,最后填上秘钥验证

weixin_42357472的博客 1万+

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1230

rubymotion3 android,最近用了一下 RubyMotion,一些使用心得

最近突然想学学 iOS 于是就选择了 RubyMotion。为什么不直接学 Swift,主要理由就是 Ruby 语言还没玩熟,避免用其他语言搞混;零 iOS 经验,一些 Ruby 和 Rails 开发经验;学了 2 周,感觉用 RubyMotion 上手 iOS 还是很方便的;至于学习 RubyMotion 是否需要会 iOS 经验,我觉得不用;这本书写的蛮好的可以先看下rubymotion-io...

weixin_33882158的博客 252

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

通过15个小例子学习ruby

以下都是从国外网站翻译过来,自己学习的时候总结了一下,希望对大家学习ruby有所帮助。 1. Problem: “Display series of numbers (1,2,3,4, 5….etc) in an infinite loop. The program should quit if someone hits a specific key (Say ESCAPE key).”  ...

研究Android技术,以及和Android相关的任何盈利模式 187

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 企业团队使用Git协同开发的一般流程
下一篇: Git使用基础
minimicall
博客等级 码龄18年 407粉丝 174原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值