Currently I have the following resource folders:
1. layout-sw600dp
2. layout-sw600dp-notlong
The idea is that we have 3 types of devices and the devices should use the resources from the correct folder accordingly. The devices are:
1. Samsung Galaxy Tab 10.1, 1280 X 800 mdpi. 16/10
2. Asus Transformer TFT 101, 1280 X 800 mdpi. 16/10.
3. A generic tablet, 800 X 600 ldpi. 4/3.
The problem is that all 3 devices use resources from layout-sw600dp-notlong. To my understanding 4/3 is categorized as -notlong devices.
Is there anything wrong in my identifier usage? Or there's a bug reported for the identifier?
Thank in advance.
The 'notlong' identifier is for devices that are similar in aspect ratio to baseline devices (see http://developer.android.com/guide/practices/screens_support.html). While the docs are scarce on what baseline devices are, typical resolution of Android devices 1.5~1.6. So what you are seeing is correct.
While there is a 'long' identifier for devices that are longer than baseline ratios, it looks like you can't force resources for devices that are shorter (e.g. 800x600).
According to the source code. (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;
}
So if the aspect ratio is wider than 3:5(or 1.667), it will be treated as long screen.
you have read this doc?
http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts