2012-08-01 22 views
8

Actualmente tengo las siguientes carpetas de recursos: 1.
diseño-sw600dp
2.-diseño-sw600dp notlongrecursos Android notlong/largas identificadores no trabajan

La idea es que tenemos 3 tipos de dispositivos y los dispositivos deben usar los recursos de la carpeta correcta en consecuencia. Los dispositivos son:
1. Samsung Galaxy Tab 10.1, 1280 X 800 mdpi. 16/10
2. Transformador Asus TFT 101, 1280 X 800 mdpi. 16/10.
3. Una tableta genérica, 800 X 600 ldpi. 4/3.

El problema es que los 3 dispositivos usan recursos de layout-sw600dp-notlong. Según entiendo, 4/3 se clasifica como dispositivos "no largos".

¿Hay algún error en el uso de mi identificador? ¿O hay un error reportado para el identificador?

Gracias de antemano.

Respuesta

6

El identificador 'notlong' es para dispositivos que son similares en la relación de aspecto a los dispositivos de línea base (consulte http://developer.android.com/guide/practices/screens_support.html). Si bien los documentos son escasos en lo que son los dispositivos básicos, la resolución típica de los dispositivos Android es 1.5 ~ 1.6. Entonces, lo que estás viendo es correcto.

Si bien hay un identificador "largo" para dispositivos que son más largos que las relaciones de referencia, parece que no se pueden forzar recursos para dispositivos que son más cortos (por ejemplo, 800x600).

+0

Pregunta breve. Según su explicación, ¿no debería la resolución 1280 X 800 usar el recurso en la carpeta -long y no en "no mucho"? – Maziz

+0

1280x800 tiene una proporción de 1.6. Supongo que está lo suficientemente cerca de la línea base (800/480 = 1.6, 480/320 = 1.5) que está usando los recursos 'no largos'. Entonces no, no usará los recursos 'largos'. – ebernie

+2

Esta omisión sdk es una pena:/ – nobre

18

De acuerdo con el código fuente. (marco/base/core/java/androide/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; 
     } 

lo tanto, si la relación de aspecto es más ancha que 3: 5 (o 1.667), que serán tratados pantalla como de largo.

+1

Esto hace 1280x800 'no largo' ... Estaba considerando usar este valor para diferenciar Nexus 9 y 10, pero eso no funcionará ... –

+0

Love android for open source <3 – IlyaEremin

Cuestiones relacionadas