移动端适配最佳实践(中)

上篇谈到了一些基础概念:屏幕密度、逻辑像素什么的,接下来继续探讨

常见设备尺寸

更全的数据请参考Google 统计

说明:图中的 iPhone 6 Plus 数据看起来有些蹊跷,414 x 736 * 3 = 1242 x 2208,而物理像素却是 1080 x 1920 ,这是为何?实际上 iPhone 6 Plus 渲染出的图片尺寸为 1242 x 2208 px,但屏幕只有 1080 x 1920 px,所以系统会对渲染出的图进行压缩。

附:iOS对欢迎页的尺寸说明

从表中数据可以看出:

  1. 虽然物理像素各种各样,但是逻辑像素还是相对统一的。
  2. 逻辑像素相接近的,屏幕尺寸也比较接近。

实际上,逻辑像素就是为了使 UI 在不同的屏幕上的表现一致。即:相同单位的逻辑像素,在不同的屏幕上的物理尺寸相同。来张图吧,一图胜前言。

UI 元素的高度为200逻辑像素,在倍率为1的屏幕上,高度为200 px,在倍率为2的屏幕上,高度为400px;但他们的物理尺寸都是一样的。

说了这么多,该切入正题了!

如何适配

前面做了很多铺垫,逻辑像素、倍率等等,是时候展现他们的用武之地咯

  • 为不同倍率的屏幕提供对应的图片资源

iOS 平台的 @2X , @3X

Android 平台的 drawable-mdpi , drawable-hdpi , drawable-xhdpi , drawable-xxhdpi 等等

Web 平台,JavaScript 根据倍率请求不同的图片

  • 使用逻辑像素作为 UI 元素的长度单位

iOS : pt , Android : dp , Web : px

  • 为不同尺寸的屏幕提供不同的布局

Android 平台支持根据尺寸来选用不同的布局,其他平台不太清楚。题外话:比如 适配平板和手机,国内大部分的应用都是一套布局,平板就是手机的放大版,可能大部分团队都疲于产品的迭代吧。Google 的应用在这块做的是标杆。

各个平台的一些细节肯定有些区别,但是原理如上所述。

下篇将讲一讲:如何让设计师和攻城狮更好的协同作业

时间: 2024-10-11 10:58:47

移动端适配最佳实践(中)的相关文章

移动端布局最佳实践(viewport+rem)

通过前几天写的两篇博客(浅谈移动端三大viewport和移动端em和rem区别),我们现在来总结一下如何实现一个最佳方案. 之前在第二篇博客中提到过我们可以使用媒体查询来针对不同设备及做适配,如下图 但是这个可能不会太精准,比如我的设备布局viewport可能是370px,这样只能使用320这一版本.而事实上,他们的viewport并不相同,所以他们的布局也得不一样.也就是说我们如果用css媒体查询只能说是可以用,但不是最佳实践.其实通过看某些牛逼的移动端网站,可以看到他们的共同点,他们都是使用

JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践

任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题. 为了避免这样或那样的情况发生,最好是将验证逻辑与相应的数据模型进行绑定. 1. JSR-303 Bean Validation JSR 是Java Specification Requests 的缩写,是指向 JCP(Java Community Proces

Android 屏幕适配最佳实践

参考该文章理论知识加代码 Android 屏幕适配方案 但是呢,该篇博文里个人觉得代码封装的不是很好,于是自己封装了下,使用XStream生成xml.上面那篇文章里没有对横竖屏进行适配,代码里完善了这一点,对横竖屏进行了适配. 在开始码代码前,贴一张图,结合前面那篇文章的理论知识一起看. 然后呢看最终适配的效果,这里以320*480为基准,屏幕上放一个TextView,宽度为x160,高度为y240,效果图如下 然后呢,不要惊讶,你会发现里面的两个pad并没有适配,其实呢,我也母鸡呀,但是我开了

移动端WEB前端开发最佳实践

移动端WEB前端开发最佳实践 Safari,Android Browser,Chrome都是以WebKit为核心的 移动设备和PC之间的页面现实存在差异(Safari中定义了viewport) 在移动设备和桌面端WEB前端开发中,事件绑定存在差异(移动触点) 页面控件设计存差异(点触不灵敏,虚拟键盘弹出框) 移动设备的网络带宽普遍比PC慢,移动页面要设置更简洁 PC页面兼容移动设备 使用流式布局 借助CSS Media queries(媒体查询)技术 使用合适的图片显示兼容方案 保持页面简洁,不

彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践

"描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的行为,唯有一个形容词表现它的特征.要做的,就是用心去寻找那个名词.那个动词.那个形容词--" -- 福楼拜 (Gustave Flaubert) 我想讲个故事. 很久很久以前(一般讲故事都是这样开头吧), 两个老工程师在一起聊天,谈各自生涯中最自豪的工程.其中一个先讲述了他的杰作: " 我们建造的桥,横跨一个峡谷,峡谷很宽很深.我们花了两年时间研究地质,选择材料.聘请了最好的工程师团队来设计方案,而这又花了五年时间

规模化敏捷开发的10个最佳实践(上)

[编者按]软件开发和採购人员常常会对现有软件开发方法.技巧和工具产生一些疑问.针对这些疑问,Kevin Fall 整理了五个软件方面的话题:Agile at Scale,Safety-Critical Systems.Monitoring Software-Intensive System Acquisition Programs,Managing Intellectual Property in the Acquisition of Software-Intensive Systems.以及

前端性能优化最佳实践

最佳实践1:使用DocumentFragments或innerHTML取代复杂的元素注入 DOM操作在浏览器上是要付税的.尽管性能提升是在浏览器,DOM很慢,如果你没有注意到,你可能会察觉浏览器运行非常的慢.这就是为什么减少创建集中的DOM节点以及快速注入是那么的重要了. 现在假设我们页面中有一个<ul>元素,调用AJAX获取JSON列表,然后使用JavaScript更新元素内容.通常,程序员会这么写: Javascript代码 var list = document.querySelecto

最重要的 Java EE 最佳实践

参考:IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 2004 年 IBM? WebSphere? 开发者技术期刊中曾发表过一篇名称类似的文章,本文是其更新版本.这个修正版中考虑了一些不断变化的技术趋势,更重要的是推荐了一些作者认为应当广泛遵循.但尚未广泛遵循的实践. 2 评论: Keys Botzum, 高级技术人员 , EMC Kyle Brown, 杰出工程师, EMC Ru

Confluence 6 用户宏最佳实践

这个页面为你在创建用户宏的最佳实践中包含了一些小技巧和建议. 为你的宏添加一个简短的描述 我们鼓励你为你的宏在 模板(Template )添加一个备注的描述,可以参考下面的显示的内容: ## Macro title: My macro name ## Macro has a body: Y or N ## Body processing: Selected body processing option ## Output: Selected output option ## ## Develop