【问题标题】:How to Supporting Multiple Screens dimension如何支持多屏维度
【发布时间】:2017-08-03 05:57:06
【问题描述】:

我正在为维度使用多支持值,我已经给出了这样的值 I have attached screen shot dimen folder please check this

我已经制作了像

这样的值文件夹
value
dimen.xml
<dimen name="padding_1">1dp</dimen>

values-sw320dp-hdpi
dminen.xml
 <dimen name="padding_1">what padding should I give</dimen>

values-sw320dp-xhdpi
dminen.xml
 <dimen name="padding_1">what padding should I give</dimen>

values-sw320dp-xxhdpi
dminen.xml
 <dimen name="padding_1">what padding should I give</dimen>

values-sw360dp
dminen.xml
 <dimen name="padding_1">what padding should I give</dimen>

values-sw480dp
dminen.xml
 <dimen name="padding_1">what padding should I give</dimen>

values-sw600dp
dminen.xml
 <dimen name="padding_1">what padding should I give</dimen>

values-sw720dp
dminen.xml
 <dimen name="padding_1">what padding should I give</dimen>

我的问题是我应该提供什么填充尺寸,以便我可以支持不同的不同设备,例如如何找到每个值文件夹的 1dp。

我已经浏览了这个链接 https://developer.android.com/training/basics/supporting-devices/screens.html

但不是很清楚。我也通过了Dimenify 插件,但没有得到明确的解决方案。

编辑 我想知道有没有办法在所有价值桶中放置确切的尺寸或 任何 dp 转换器,它可以为 android 中的所有值桶转换精确尺寸

【问题讨论】:

  • 我建议你阅读官方文档的this part。并且您的尺寸应该根据它们的用途(例如“main_title_margin_top”)而不是它们的值来命名。除非您确实有问题或想要针对屏幕尺寸进行特定设计,否则您不需要创建与支持的屏幕尺寸一样多的 dimens.xml 文件。
  • @Eselfar 感谢您的回复,但我的问题是 android 中有任何工具可以转换所有值桶的维度,例如如果我在 values-sw320dp 中使用 1 dp,那么维度将在 value-sw480dp 中使用
  • 这就是使用点像素(dp)而不是像素(px)的目的。它应该根据屏幕自动调整。如果您的屏幕 A 为 10 英寸和 1280x720 像素,而您的屏幕 B 为 5 英寸和 1920x1080 像素,则屏幕 A 上的 1 dp 将不同于屏幕 B。这就是为什么在大多数情况下您只需要指定一次所需的尺寸,然后由系统自动管理。平板电脑有时会出现问题,因为它们具有 sh*tty 比率,因此您必须为大屏幕创建其他 dimens.xml 文件。但仅此而已。我在之前评论中链接的页面上对此进行了解释。

标签: android xml layout multiscreen


【解决方案1】:
values folders to create

values-sw320dp,
values-sw480dp,
values-sw600dp, 
values-sw720dp. You should create dimens.xml in all the values folders.

values-sw360dp
dimens.xml
<dimen name="padding_1">5dp</dimen>

values-sw480dp
dimens.xml
<dimen name="padding_1">8dp</dimen>

values-sw600dp
dimens.xml
<dimen name="padding_1">10dp</dimen>

values-sw720dp
dminen.xml
<dimen name="padding_1">13dp</dimen>

Based on your requirement you can give padding or any dimen values. As you 
given, you should give same name for dimen in all the folders. Android will 
automatically pick the dimen value based on your screen size.

【讨论】:

  • @MinnnuKaAnae 我想知道如何获取所有值文件夹的所有维度,例如 2 dp、3 dp、.....等等,是否有任何公式或任何工具可以获取这个维度
  • 您无需担心所有维度,例如,在您的 xml 中,有一个编辑文本,因为您已经给了像 android:padding="@dimen/padding_1" 这样的维度,android 会自动选择所有维度您使用 padding_1 提到的适用于不同屏幕尺寸的尺寸
  • 但我想知道如何将所有维度的 dp 放在不同的不同文件夹中
  • 你是否创建了不同的布局文件夹来支持多屏。
  • 因为没有公式,您必须根据您的要求通过预览中的布局来给出
【解决方案2】:

一些提示可以帮助您回答问题。

dp 指标可让您跨设备密度定义一致的大小。 这通常意味着它们在大多数设备上看起来完全相同。

虽然在某些情况下提供固定宽度有效,但视觉吸引力真正在于您可以在较小的设备上缩小 UI 的大小并在较高的设备上放大它。您需要开始使用 android 的 bucketing 功能,该功能会根据具有相同限定名称的设备配置提取不同的资源。

假设您可以选择例如。有边距

a margin_normal 对于 xxhdpi 而言,在 16dp 时可能视觉上完美,但您会看到 18dp 适用于 xxxhdpi 而 14dp 适用于 xhdpi 设备。 这些是主观值,但放心的比例因子是此规则的良好近似值。

Dimenify 会自动处理此转换,但您需要通过反复试验和一次性提供比例因子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多