-1

本质上,应用程序应该支持各种设备。我正在使用这些指南:mult.screen.suppscreen.stat

在大多数活动中,平板电脑和手机的设计都是相似的。我感到困惑的是如何为两个版本提供可绘制对象,因为它们的密度组提供不同的分辨率,因此可绘制对象不可替代。

例如,将 xlarge(tablet) - mdpi 与 normal(handset) - mdpi 进行比较:

  1. 普通屏幕,中密度 (160),mdpi:320x480
  2. 超大屏幕,中密度 (160),mdpi:1280x800

所以,如果我为第一组创建 foo.png(50px x 50px) 然后测试相同的布局

    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/foo" />

在第二组中,它将在 mdpi 文件夹中查找相同的图像 - 图像看起来很小。

我有一个解决方案,但我不确定我是否做得对:

  • 为每个屏幕尺寸配置创建 attr.xml。
  • 在手机资源文件夹中创建<item name="foo" type="drawable">@drawable/h_foo</item>,该文件夹引用适合normal(handset) - mdpi 分辨率 h_foo 的图像,例如 50x50。
  • 在 tablet-resources 文件夹中创建<item name="foo" type="drawable">@drawable/t_foo</item>,该文件夹引用适合xlarge(tablet) - mdpi 分辨率 t_foo 的图像,例如 150x150。

您能否说明这种方法是否可行以及其他解决方案是什么?

4

2 回答 2

1

最好保留相同的资源名称并使用不同的文件夹来放置实际的 png:

drawable-mdpi        -> used for normal screens
drawable-large-mdpi  -> used for large screens

请参阅提供可用配置限定符的资源。

于 2013-01-07T09:47:43.477 回答
1

为避免重复,我将所有图像保存在 drawable-nodpi 文件夹中,并为文件名加上大小后缀(例如 image-small.png、image-medium.png 等)。然后,我在每个项目的设备特定(drawable-normal-mdpi、drawable-large-mdpi)文件夹中都有 XML 定义。例如:

可绘制-正常-mdpi/image.xml:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/image-medium" />

可绘制的大 mdpi/image.xml:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/image-large" />

请注意,我在这里看到了一位 Google 工程师(现在找不到)的评论,该评论不推荐此功能,但直到有人提出更好的解决方案(与旧版 Android 版本兼容),然后我坚持下去。

于 2013-01-07T10:08:57.010 回答