【问题标题】:Android resource notlong / long identifiers not workingAndroid资源notlong / long标识符不起作用
【发布时间】:2012-08-01 04:00:38
【问题描述】:

目前我有以下资源文件夹:
1.layout-sw600dp
2. layout-sw600dp-notlong

我们的想法是我们有 3 种类型的设备,并且设备应该相应地使用正确文件夹中的资源。这些设备是:
1. 三星 Galaxy Tab 10.1, 1280 X 800 mdpi。 16/10
2. 华硕变压器 TFT 101, 1280 X 800 mdpi。 16/10。
3. 通用平板电脑,800 X 600 ldpi。 4/3。

问题是所有 3 台设备都使用 layout-sw600dp-notlong 中的资源。据我了解,4/3 被归类为 -notlong 设备。

我的标识符使用有什么问题吗?还是报告了标识符的错误?

提前致谢。

【问题讨论】:

    标签: android screen android-screen


    【解决方案1】:

    根据源代码。 (framework/base/core/java/android/content/res/Configuration.java)

            // Is this a long screen?
            if (((longSizeDp*3)/5) >= (shortSizeDp-1)) {
                // Anything wider than WVGA (5:3) is considering to be long.
                screenLayoutLong = true;
            } else {
                screenLayoutLong = false;
            }
    

    所以如果宽高比大于 3:5(或 1.667),则会被视为长屏。

    【讨论】:

    • 这使得 1280x800 '不长'...我正在考虑使用此值来区分 Nexus 9 和 10,但这不起作用...
    • 爱安卓开源
    【解决方案2】:

    “notlong”标识符适用于纵横比与基准设备相似的设备(请参阅http://developer.android.com/guide/practices/screens_support.html)。虽然关于什么是基准设备的文档很少,但 Android 设备的典型分辨率为 1.5~1.6。所以你看到的是正确的。

    虽然长于基准比率的设备有一个“长”标识符,但您似乎无法为更短的设备(例如 800x600)强制使用资源。

    【讨论】:

    • 简短问题。根据您的解释,1280 X 800 分辨率不应该使用 -long 文件夹中的资源而不是 -notlong 吗?
    • 1280x800 的比率为 1.6。我假设它足够接近基线(800/480 = 1.6、480/320 = 1.5),它正在使用“notlong”资源。所以不,它不会使用“长”资源。
    • 这个 sdk 遗漏是一种耻辱:/
    【解决方案3】:

    【讨论】:

    • 我做到了,谢谢你的链接。确实,您可以指定最小宽度,但它不是它试图适应的应用程序的宽度,而是设备的纵横比。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2015-05-28
    相关资源
    最近更新 更多