Android资源不长/长标识符不工作

Android资源不长/长标识符不工作,android,screen,android-screen,Android,Screen,Android Screen,目前我有以下资源文件夹: 1.布局图-sw600dp 2.布局图-sw600dp-notlong 我们的想法是,我们有3种类型的设备,这些设备应该相应地使用正确文件夹中的资源。这些设备是: 1.三星Galaxy Tab 10.11280 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/

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

我们的想法是,我们有3种类型的设备,这些设备应该相应地使用正确文件夹中的资源。这些设备是:
1.三星Galaxy Tab 10.11280 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设备的典型分辨率为1.5~1.6。所以你看到的是正确的


虽然比基线比率长的设备有一个“长”标识符,但看起来您无法为较短的设备(例如800x600)强制提供资源

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


因此,如果纵横比大于3:5(或1.667),它将被视为长屏幕。

我做到了,感谢链接。的确,你可以指定最小的宽度,但不是它试图适应的应用程序的宽度,而是设备的纵横比。简短的问题。根据您的解释,1280 X 800分辨率不应该使用-long文件夹中的资源而不是-notlong?1280x800的比率为1.6。我假设它足够接近基线(800/480=1.6480/320=1.5),即它正在使用“不长”资源。所以不,它不会使用“长”资源。这个sdk省略是一个耻辱:/1280x800“不长”…我曾考虑使用这个值来区分Nexus 9和10,但这不起作用…喜欢开源的android
        // 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;
        }