android - 多屏UI设计实现
问题描述
我过去 6 个月从事 android 开发,最近从客户那里得到了一个设计。我实现了设计,他说这与设计师所做的不完全一样。然后他又给了我以下规格的设计
我的问题是 - 像他给出的那样添加间距是否正确
请纠正我是我错了还是他错了
解决方案
您应该考虑 3 件事:
Px - dp 比例: 阅读此答案:https ://stackoverflow.com/a/2025541/5884956 (实际上整个帖子很有用)
Percentage 对您不起作用: 您通过使用
dp
而不是改进的px
是,对于具有相同aspect ratio
和不同的屏幕pixel density
,布局看起来完全相同(dp 密度独立像素)。这意味着屏幕内的所有内容都将具有相同的比例(按钮、图像视图、边距……等)。然后,你会想象所有的安卓手机都具有相同的纵横比(例如 16:9)。这意味着对于每 16dp
个高点,他们有 9 个dp
的宽度,或者换句话说,如果您将手机的高度除以手机的宽度,您将获得与 16/8 相同的解决方案。但这与现实相去甚远。最常见的是 16:9,但某些手机(如“Samsung Galaxy S8”)有 18,5:9 并且有更多的纵横比:https ://material.io/tools/devices/ 。如果你使用 %,当你以不同的纵横比看到你的设计时,你的项目看起来会被拉伸。这不是我们想要的。大小确实很重要 到这个时候,您应该确信这
dp
是最好的解决方案,如果不是,请有人改进我的答案。Buuuuuut,随着屏幕大小的不同,数量dp
也有所不同。所以对于更大尺寸的手机(即使是相同的纵横比),我们有更多的 dp。然后你应该知道某些部分将被拉伸(它应该是项目和边距之间的空间)。
理想情况下(Android Studio 应该为您完成所有这些工作)使用相同aspect ratio
,% of dp
应该是衡量标准,并且在更改纵横比时,这种更改必须反映在视图之间的空间中。但这是一项艰苦的工作。
TL;博士
- 选择设计人员将用于设计的标准设备(使用通用设备)。
- 告诉他们每个设备的设计看起来并不完全相同(除非您为每个设备设计不同的布局)。
- 他们需要决定设计的哪些部分将被拉伸(请拉伸空间和边距,而不是按钮或图像)。
- 让他们使用
px
,他们可能会感觉更舒服(同时您必须将其转换为dp
并使用dp
)。此外,如果您选择“mdpi”设备dp
=px
. - 查看允许您更好地使用这种设计的布局(我对 ConstraintLayouts 感觉很舒服,但通过工作您会发现这并不适合所有情况),但这取决于您。
额外的信息
https://developer.android.com/training/multiscreen/screensizes
推荐阅读
- javascript - javascript过滤字符串数组,匹配不区分大小写的子字符串
- powershell - PowerShell Where-Object 查询括号之间的空或 NULL 内容
- spring - 处理对 Spring Rest Controller 的同时 HTTP 调用
- python - 从嵌套列表中的子列表中提取第一个和最后一个元素
- asp.net-mvc - 剑道编辑器模板可见条件
- javascript - 在渲染中获取数据,但是在显示时,什么都没有出现
- html - 如何在页面内添加一个正方形(大约 80% 的宽度和高度以及彩色)?
- php - 无法在 Symfony 5.1 中安装 orm-pack
- flutter - Flutter Bad state:调用close后无法添加新事件
- elasticsearch - 如何使用 S3 为 EFK 堆栈配置日志的长期保留?