以后我将逐步在我的个人博客中写文章,有兴趣的同学可以访问: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文件,如果有时候自动适配的效果不好偶尔需要人工做一些微调,但是执行这个脚本之后微调的值就会丢失掉,所以还需要改进。有兴趣的同学可以自己实现。
分享到:
相关推荐
Appium是一款开源的自动化测试框架,它允许开发者使用多种编程语言(如Java、Python、Ruby等)来编写测试脚本,进行Android和iOS平台上的应用测试。这本书详细讲解了如何利用Appium进行高效且可靠的手机应用自动化...
9. **移动适配**:随着移动设备的普及,ArtPalace可能有移动端应用,需要适应不同尺寸的屏幕,实现响应式设计或开发原生Android和iOS应用。 10. **数据分析与跟踪**:使用Google Analytics或其他分析工具监控用户...
第2章微型计算机系统基础知识.pptx
计算机视觉_OpenCV455图像处理库_MinGW-W64跨平台编译工具链_基于Windows11系统使用CMake3213构建的x86_64-posix-seh架构动态链接库版本_包含SS.zip
计算机视觉_OpenCV_C_图像处理_机器学习_深度学习_计算机图形学_图像识别_图像分割_边缘检测_轮廓提取_形状识别_正方形检测_四边形检测_透视变换_图像校正_特征提取_霍夫变换_阈值.zip
yolov10-main-pred-liver-disease_3976通过医学图像分析肝脏状况-辅助肝脏疾病的诊断+数据集+训练好的模型,包含有使用教程 1. 内部包含标注好的目标检测数据集,分别有yolo格式(txt文件)和voc格式标签(xml文件), 共3976张图像, 已划分好数据集train,val, test,并附有data.yaml文件可直接用于yolov5,v8,v9,v10,v11,v12等算法的训练; 2. yolo目标检测数据集类别名:liver-disease(肝脏疾病),包括 ballooning(气球样变)、fibrosis(纤维化)、inflammation(炎症)、steatosis(脂肪变性)等 3. yolo项目用途:通过医学图像分析肝脏状况,辅助肝脏疾病的诊断 4. 可视化参考链接:https://blog.csdn.net/weixin_51154380/article/details/126395695?spm=1001.2014.3001.5502
知识图谱_自然语言处理_机器学习_深度学习_图数据库_语义分析_实体识别_关系抽取_车音数据_语音识别_文本挖掘_智能问答_行业知识库_汽车领域_语音交互_大数据分析_人工智能_多.zip
内容概要:本文详细介绍了基于PLC(可编程逻辑控制器)的换热站自动控制系统的设计与实现。主要内容涵盖PLC的选择、PID温度控制模块的应用、组态画面设计的艺术、通信配置的注意事项以及系统的调试技巧。作者分享了实际项目经验,强调了比例系数和积分时间对温度控制的影响,提出了合理的组态画面分层设计方案,并讨论了MODBUS通信的心跳检测机制。此外,还提到了调试阶段的乐趣和注意事项,最后预告了后续关于Python进行换热站数据分析的内容。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对换热站自动化感兴趣的从业者。 使用场景及目标:适用于需要提升换热站自动化水平的企业和个人。主要目标是帮助读者掌握PLC在换热站自动化中的应用方法,提高系统的稳定性和效率。 其他说明:文中提供了具体的代码示例和实践经验,有助于读者更好地理解和实施相关技术。同时,强调了在实际操作前进行充分的虚拟测试的重要性。
C51单片机的PPT内容,可以看看
内容概要:该报告深入探讨了微盘股策略的表现及其背后的驱动因素。历史数据显示,微盘股指数多数年份能战胜主流宽基指数,尤其在剩余流动性充裕或通胀因子下行区间时表现更佳。微盘股超额收益的本质在于低PB和小市值个股未来获得高收益的概率较大。换手率维度显示调仓频率对超额收益贡献有限,而盈利维度表明盈利并非主要贡献因素,估值维度则揭示超额收益主要来自PB修复和高估值向低估值的切换。基于此,报告建议通过小市值优选个股并辅以低PB筛选来把握微盘股机会。此外,报告还分析了当前微盘股拥挤度和估值均处于历史高位,提醒投资者注意风险。 适用人群:具备一定金融市场知识,特别是对A股市场感兴趣的投资者和金融从业者。 使用场景及目标:①理解微盘股
内容概要:本文详细介绍了如何利用组态王6.55软件进行3×4立体仓库的动画仿真。主要内容涵盖堆垛机的移动控制脚本,通过微步进移动和延时来模拟真实的设备动作;货位状态管理采用二维数组记录并更新货位情况,结合颜色变化直观展示货位状态;以及通过状态机实现指令队列的有序执行,确保动画流畅无冲突。此外,还讨论了调试过程中遇到的问题及其解决方案。 适合人群:从事自动化仓储系统开发的技术人员,特别是熟悉组态王软件的开发者。 使用场景及目标:适用于需要构建和优化自动化立体仓库系统的场合,旨在提高仓储效率和管理水平。通过学习本文,可以掌握组态王6.55的具体应用技巧,如脚本编写、动画制作和故障排除方法。 其他说明:文中提供的代码片段和调试经验对于实际项目实施有重要参考价值,特别是在处理复杂运动控制和动画同步方面。
数据库以及U安装教程.ppt
计算机专业英语专业知识.pptx
内容概要:本文介绍了基于6.1版本的隧道围岩变形流固耦合动态分析模型,该模型综合考虑了浆液黏度时变性与重力效应对注浆压力的影响。通过流体力学、岩土力学及数值模拟技术,建立了详细的数学模型并进行了可视化展示,主要包括位移大小和应力分布。研究表明,这种模型可以更准确地预测围岩变形和应力分布,从而优化注浆工艺,确保隧道施工安全。 适合人群:从事隧道工程、岩土工程及相关领域的研究人员和技术人员。 使用场景及目标:适用于需要进行隧道围岩变形和应力分布预测的实际工程项目,旨在提高注浆工艺的科学性和安全性。 其他说明:尽管当前模型已经取得了一定成果,但仍有改进空间,如更精准地描述浆液黏度时变性及其他因素对注浆过程的影响。
计算机视觉_OpenCV4NodeJS_Express_EJS_SocketIO_Webcam_视频流处理_NodeJS_实时传输_图像处理_深度学习_前端开发_后端开发_网络通信_Web应用.zip
计算机视觉与嵌入式系统开发_树莓派相机控制库_基于C11和OpenCV的Raspberry_Pi_Camera_硬件接口封装_提供RaspiCam_RaspiCam_Cv_RaspiCam_S.zip
内容概要:本文档是一份详细的10bit 50MHz SAR(逐次逼近寄存器)模数转换器(ADC)的设计与仿真指南,旨在帮助新手掌握从基础理论到实际电路设计的全过程。文档涵盖了多个关键模块的设计,如栅压自举开关、CDAC(电荷再分配数模转换器)、比较器和SAR逻辑,并提供了完整的Cadence仿真指导以及SMIC 40nm工艺库的应用实例。此外,还包括了测试电路的设计和优化技巧,确保设计的可靠性和性能。文中不仅介绍了各模块的工作原理,还提供了一些实用的仿真技巧和注意事项,如动态衬底偏置技术、蒙特卡洛仿真设置、自动归零相位控制等。 适合人群:对模拟集成电路设计感兴趣的电子工程专业学生、初入职场的研发工程师及其他希望深入了解SAR ADC设计的技术爱好者。 使用场景及目标:① 学习并掌握10bit 50MHz SAR ADC的基本原理及其各组成部分的功能;② 掌握Cadence仿真工具的使用方法,特别是针对SMIC 40nm工艺库的仿真设置;③ 提升实际电路设计能力,能够独立完成类似复杂电路的设计与验证。 其他说明:文档提供了丰富的实战经验和技巧,有助于提高设计效率和成功率。同时,对于希望进一步提升ADC速度的读者,文档还提到了TI-ADC扩展接口的相关信息。
内容概要:本文详细介绍了利用模型预测控制(MPC)技术,在给定圆形道路条件下,通过Carsim和Simulink联合仿真的方式,实现车辆轨迹跟踪的研究。文章首先概述了MPC的基本原理及其在车辆轨迹跟踪中的应用,接着阐述了圆形道路的轨迹规划方法,包括道路半径、车辆初始状态等参数的设定。随后,重点讲解了MPC控制器的设计步骤,涉及车辆动态模型、约束条件及优化目标的选择。最后,展示了如何在Simulink中构建MPC控制器并与Carsim中的车辆模型进行联合仿真,验证了MPC控制器的有效性和优化效果。 适合人群:从事车辆工程、自动化控制领域的研究人员和技术人员,特别是对MPC技术和联合仿真感兴趣的读者。 使用场景及目标:适用于希望深入了解MPC在车辆轨迹跟踪中的具体应用,掌握Carsim和Simulink联合仿真的操作流程,提升车辆控制系统设计能力的专业人士。 其他说明:文中提供了部分Python代码片段,帮助读者更好地理解和实现MPC控制器的设计。同时,展望了MPC在未来智能驾驶和自动驾驶技术中的潜在应用和发展方向。
内容概要:本文详细介绍了基于Matlab的蔡氏混沌电路(Chua's circuit)系统分析,包括电路的设计、仿真及其混沌行为的表现。首先,文章提供了蔡氏电路的基础模型代码,解释了其微分方程以及非线性项的作用。接着,展示了如何计算Lyapunov指数,验证系统的混沌性质。然后,通过绘制分岔图,展示了系统从周期运动到混沌的转变过程。最后,通过相图直观地展示了系统的双涡卷吸引子特征。此外,还提到了硬件实现的效果。 适合人群:对混沌理论、非线性动力学感兴趣的科研人员、电子工程学生及爱好者。 使用场景及目标:适用于研究混沌系统的行为特点,探索非线性电路设计的实际应用,以及进行相关教学演示。 其他说明:文中提供的Matlab代码可以直接运行,帮助读者更好地理解和实验蔡氏电路的混沌现象。
内容概要:本文详细介绍了如何在MATLAB环境中使用Transformer自注意力机制进行数据回归预测。首先解释了Transformer模型的基本架构,重点在于其捕捉数据长期依赖的能力。接着展示了具体的MATLAB代码实现,包括创建Transformer模型、设置训练选项以及数据预处理步骤如标准化。文中还提供了详细的评价指标计算方法,如RMSE、MSE、MAE、MBE、MAPE和R²,并讨论了不同情况下选择合适指标的重要性。此外,提到了一些实用技巧,例如学习率调整策略和避免常见错误的方法。最后简述了模型部署注意事项。 适合人群:对机器学习尤其是深度学习感兴趣的科研人员和技术开发者,熟悉MATLAB编程环境者优先。 使用场景及目标:适用于需要进行高精度数据回归预测的研究项目或实际应用场景,特别是在处理长序列或多特征点的时间序列数据时,能够显著提高预测准确性。 其他说明:虽然本文主要针对MATLAB用户,但对于Python或其他编程语言使用者也有一定的借鉴意义,因为所涉及的技术概念和方法具有通用性。