0

我真的对 android 限定符感到困惑。

我想为RatingBar. 所以我创建了rating_bar.xml文件并将其放入drawable文件夹。这是来源:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/star_off"/>
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/star_on"/>
    <item android:id="@android:id/progress" android:drawable="@drawable/star_on"/>
</layer-list>

我只有 xhdpi 显示器的星形设计。我认为如果我将 star_on 和 star_off 图像放入 drawable-xhdpi 文件夹,那么所有不同的密度(mdpi 和 hdpi)都会自动调整大小。是的,它调整了大小,但我得到了一些用于 hdpi 和 mdpi 的工件。与此处相同:Android custom RatingBar image artifacts 我尝试了那里描述的解决方案,但没有任何帮助。在 xhdpi 设备上我没有人工制品,但在 mdpi 和 hdpi 设备上却有人工制品。

然后我决定把 star_on 和 star_off 图像放到 drawable-nodpi 文件夹中。所以我得到了很好的结果,xhdpi 和 hdpi 屏幕没有任何伪影,但是 mdpi 屏幕图像太大了。

然后我决定将 star_on 和 star_off 图像复制到 drawable-mdpi 文件夹并减小图像大小。它也没有帮助。

然后我把大星图放到 xhdpi 和 hdpi 文件夹,小星图放到 mdpi 文件夹。我认为如果我在 mdpi 设备上运行我的应用程序,来自 drawable-mdpi 的图像将被选中。但似乎 Android 从 hdpi 或 xhdpi 文件夹中选择图像并为 mdpi 屏幕自动缩放它们,因为我再次有工件。我还尝试将小图像放入可绘制文件夹。它也没有帮助。

那么Android如何选择资源呢?我想如果我有资源шт drawable、drawable-mdpi、drawable-hdpi 和drawable-xhdpi,那么Android 会尝试在与设备密度相同的文件夹中查找资源。如果没有这样的资源而不是从可绘制文件夹中获取。

4

2 回答 2

4

这个开发者指南部分解释了我猜你到底需要什么。它用一个例子演示:

为了演示 Android 如何选择替代资源,假设以下可绘制目录分别包含相同图像的不同版本:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

并假设以下是设备配置:

Locale = en-GB 
Screen orientation = port 
Screen pixel density = hdpi 
Touchscreen type = notouch 
Primary text input method = 12key

通过将设备配置与可用的替代资源进行比较,Android 从

drawable-en-port

还有一个选择图描述了android如何选择限定符。

于 2013-05-30T10:12:05.043 回答
2

android根据dpi从drawable文件夹中选择资源

有四种屏幕密度

  1. 低密度脂蛋白
  2. mdpi
  3. hdpi
  4. xhdpi

四种屏幕尺寸

layout-small
layout-nomal
layout-large
layout-xlarge

小屏幕尺寸 = 2.2" - 2.7"(大约)

正常屏幕尺寸 = 3.0" - 4.7"(大约)

大屏幕尺寸 = 5" - 7"(大约)

xlarge 屏幕尺寸 = 7">(大约)

ldpi = 120dpi

mdpi = 160dpi

高清240dpi

xhdpi = 320dpi

根据这些密度和屏幕尺寸创建您的 avd,然后检查结果

于 2013-02-23T11:34:15.227 回答