【问题标题】:How do I know which resources will be loaded for my device?我如何知道将为我的设备加载哪些资源?
【发布时间】:2019-08-31 10:24:23
【问题描述】:

如果我手头有任何设备,我如何知道我的 apk 将使用哪些资源?
例如drawable-hdpidrawable-xhdpidrawable-xxhdpi
理论上,我不是在问这些文件夹中的哪一个在何时加载,而是具体来说,如果我手头有一个随机设备,我怎么知道将使用哪个?

【问题讨论】:

    标签: android android-drawable android-resources android-hardware android-resolution


    【解决方案1】:

    您可以查看一些 Google 搜索结果,例如:generator 或者explanation,如果你想知道它背后的“魔力”。

    在 Android 开发网站上,您可以找到density buckets 的概述:密度桶

    如果这仍然不能回答您的问题,您还可以为每个密度文件夹(hdpi、ldpi、mdpi...)举几个不同的图像示例,然后查看您的设备或模拟器上显示的图像。

    【讨论】:

    • 老实说,我虽然/希望这就像检查设备设置中的某些内容一样简单
    【解决方案2】:

    您必须了解密度桶的概念。看看这张图(采集自here

    因此,低于 160 dpi 被称为 ldpi 并在文件夹 drawable-ldpi 中找到 低于 320 且最高 480 dpi 称为 xhdpi 并在文件夹 drawable-xhdpi 等中找到。

    因此,将使用哪种变体完全取决于您手机的屏幕密度。为了更好地理解,请查看this 文章,特别是在表 1 上。

    要获取手机的密度,您可以使用此代码

    final float scale = getResources().getDisplayMetrics().density;

    所以,如果您的手机属于 xhdpi 类别,即介于 320 和 480 dpi 之间,则将使用 drawable-xhdpi 变体,依此类推。

    【讨论】:

    • 我虽然/希望确定手机的密度就像检查设备设置中的某些内容一样简单
    • 很遗憾没有,我认为还可以,因为手机的密度是开发人员需要了解的知识,而不是普通人的。
    • 所以如果我用谷歌搜索设备的分辨率,例如OnePlus 和我看到 1080 x 2340 pixels 我可以使用该信息来确定在运行时可靠地使用的资源吗?
    • @Jim 如果与原始帖子没有直接关系,请提出另一个问题。据我所知,对于 android PPI 和 DP 是相同的。因此,从屏幕分辨率和设备的物理屏幕尺寸,您可以计算 DP 或 PPI。 PPI = sqrt(height^2 + width^2)/screen_size
    • 那么为什么这与原始帖子无关?如果我知道 PPI,我是否也知道正在使用哪些资源?如果不是,那我肯定可以再开一个问题
    【解决方案3】:

    一种简单的诊断方法是将strings.xml(或您选择的资源类型)添加到具有与密度相对应的字符串值的合格 res/values- 目录中,例如:

    res/values-xxhdpi
        strings.xml (containing)
            <string name="selected_density">xxhdpi</string>
    

    您也可以使用其他资源类型(例如整数)来执行此操作。这让系统为您完成工作。为每个感兴趣的密度执行此操作,并在值/版本中提供默认值。

    然后在代码中:

    String densityStr =  context.getString(R.string.selected_density);
    

    在此处查看Configuration qualifier names 表:https://developer.android.com/guide/topics/resources/providing-resources

    【讨论】:

    • 所以只有通过编程我们才能知道?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多