为不同的设备提供drawable

时间:2013-01-07 09:40:57

标签: android android-layout

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

大多数活动的平板电脑和手机设计都很相似。令我困惑的是如何为两个版本提供drawables,因为他们的密度组提供不同的分辨率,因此drawables不可替代。

例如,比较xlarge(平板电脑) - mdpi与普通(手机) - mdpi:

  1. 正常屏幕,中密度(160),mdpi:320x480
  2. 超大屏幕,中密度(160),mdpi:1280x800
  3. 所以,如果我为第一组创建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。
    • 在平板电脑资源文件夹中创建<item name="foo" type="drawable">@drawable/t_foo</item>,该文件夹引用适合xlarge(tablet) - mdpi分辨率t_foo的图片,例如150x150。

    你能否阐明这种方法是否合适以及其他解决方案是什么?

2 个答案:

答案 0 :(得分:1)

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

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

有关可用的配置限定符,请参阅providing resources

答案 1 :(得分: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版本兼容)之前,我坚持不懈。