我真的对 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 会尝试在与设备密度相同的文件夹中查找资源。如果没有这样的资源而不是从可绘制文件夹中获取。