我对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-mdpi,drawable-hdpi和drawable-xhdpi比Android尝试在文件夹中找到与设备密度相同的资源。如果没有这样的资源,那么它可以从drawable文件夹中获取。
答案 0 :(得分:3)
This Developers guide part解释了我猜你需要什么。它用一个例子来说明:
为了演示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从
中选择drawables
<强> drawable-en-port
强>
还有一个描述 android如何选择限定符的选择图。
答案 1 :(得分:2)
android根据 dpi
从可绘制文件夹中选择资源有四种屏幕密度
四种屏幕尺寸
layout-small
layout-nomal
layout-large
layout-xlarge
小屏幕尺寸= 2.2“ - 2.7”(约)
正常屏幕尺寸= 3.0“ - 4.7”(约)
大屏幕尺寸= 5“ - 7”(约)
xlarge屏幕尺寸= 7“&gt;(约)
ldpi = 120dpi
mdpi = 160dpi
hdpi 240dpi
xhdpi = 320dpi
根据这些密度和屏幕尺寸创建您的avd,然后检查结果