【问题标题】:Can someone explain how Android qualifiers works?有人可以解释 Android 限定符是如何工作的吗?
【发布时间】:2023-03-23 15:40:01
【问题描述】:

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

【问题讨论】:

    标签: android resources ratingbar


    【解决方案1】:

    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如何选择限定符。

    【讨论】:

      【解决方案2】:

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

      有四种屏幕密度

      1. ldpi
      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

      hdpi 240dpi

      xhdpi = 320dpi

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

      【讨论】:

        猜你喜欢
        • 2011-09-12
        • 1970-01-01
        • 2021-05-11
        • 2019-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        相关资源
        最近更新 更多