java - 我应该在哪里专注于支持所有 100% 的手机和平板电脑,而忽略它们的屏幕尺寸或密度?
问题描述
我想支持所有 100% 的手机和平板电脑,不想错过任何一台设备或任何 android 版本,但要这样做
我应该在哪里关注屏幕密度或屏幕尺寸(分辨率)?
我在这里阅读了许多与支持不同屏幕尺寸相关的答案,有些正在详细说明屏幕密度,但似乎每个人都是对的。
到目前为止我清楚的一件事是支持所有密度,我们应该在这些文件夹中提供所有密度的图形
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
我应该dimens.xml
在每个应用程序中一直使用所有这些值文件夹来支持所有设备吗?
values
values-small
values-large
values-xlarge
values-sw600dp
values-sw720dp
values-w600dp
values-w720dp
values-v11
values-v14
values-v15
values-v16
values-v21
values-sw820dp
values-w820dp
我应该在每个应用程序中一直使用所有这些布局文件夹中的布局文件来支持所有设备吗activity_main.xml
?content_main.xml
layout
layout-small
layout-large
layout-xlarge
layout-sw600dp
layout-sw720dp
layout-w600dp
layout-w720dp
layout-v11
layout-v14
layout-v15
layout-v16
layout-v21
layout-sw820dp
layout-w820dp
仅支持所有 100% 设备的最佳实践或最佳方法是什么?
我搜索了很多,并在官方 android 开发者网站和堆栈溢出上找到了许多支持多屏幕和多密度指南,我仍然像 android 开发领域的许多其他初学者一样感到困惑,并寻找专业的最佳方法。
<supports-screens android:smallScreens="true"/>
<supports-screens android:normalScreens="true"/>
<supports-screens android:largeScreens="true"/>
<supports-screens android:anyDensity="true"/>
<supports-screens android:resizeable="true"
android:anyDensity="true" />
我应该只使用清单中的元素来支持所有屏幕吗?还是必须与可绘制文件夹或布局文件夹组合使用?
解决方案
不,您不需要为每个密度添加每个文件夹。Android 会自动选择与您定义的文件夹最近(最相似)的文件夹。所以即使你只定义了 values.xml & values-sw600dp.xml,在宽度为 900dp 的设备中,将使用 values-ws600dp 中定义的值,在宽度为 500dp 的设备中,将使用 values.xml。(sw代表最小宽度)
推荐阅读
- angular-cli - Angular CLI 1.7.4 TypeError:无法读取 null 的属性“配置”
- javascript - 使用 jQuery select2 设置多个值
- android - 字符串资源中的特殊字符不会显示在警报对话框 (Android) 中
- magento - Magento 2 - 添加类别属性
- rest - Optaplanner 7.9.0 无法解组输入字符串错误调用 REST API
- apache - Apache 从 TLSv1.0 重定向到 TLSv1.2
- odoo-8 - 如何更新 invoice.line 数量?
- javascript - 收听来自 iframe 的 ajax 发布响应
- java - Android中按上午/下午时间排序的SQLite
- javascript - 输入值 onchange 不删除错误类