2013-07-19 17 views
6

Nella mia app nella cartella res, esistono cartelle dei valori per dispositivi diversi. Ad esempio:Android: priorità dei valori

valori-MDPI
Valori-hdpi
valori-V14
valori-v17
valori-W480
valori-W720

ecc

I chiedo qual è la priorità di queste cartelle per Android?

Immaginiamo dispositivi coppia:

first : 480*800 hdpi v14 
second: 320*480 mdpi v17 
third : 720*1280 hdpi v17 

Cosa cartella sarebbe Android uso per ciascuna di esse?

risposta

8

È possibile trovare la priorità delle cartelle delle risorse here in this page. Fondamentalmente è usato per supportare diversi dispositivi e configurazioni.

Android utilizza una determinata logica per determinare la migliore cartella di risorse di corrispondenza possibile per un dispositivo. Questo è spiegato in this documentation page.

Per quanto riguarda la ricerca dei dispositivi:

  • Prime: 480 * 800 hdpi V14 - Valori-hdpi
  • Secondo: 320 * 480 MDPI V17 - Valori-MDPI
  • Terzo: 720 * 1280 hdpi v17 - values-w480

Nell'elenco fornito da voi, values-w480 (devices with lowest width of 480dp, only from API 13) ha il merito più alto. Quindi qualsiasi dispositivo soddisfi tali criteri, prenderà risorse da quella cartella.

Il values-vXX (devices with API >= XX) ha il valore più basso. Quindi se le altre cartelle non vengono prese, solo Android prende risorse da questa cartella. Check the table elencando i qualificatori di risorse per maggiori informazioni su quell'argomento. I qualificatori di risorse sono elencati nella tabella nell'ordine di precedenza dei qualificatori di risorse.

  • Primo caso: hdpi Normale - meno di 480dp larghezza - Quindi, i valori-hdpi
  • Secondo caso: Normale MDPI - meno di 480dp larghezza - valori-MDPI (valori-MDPI ha più weightage di valori-V17)
  • Terzo caso: dispositivo hdpi con larghezza di 480dp (720/1,5 = 480) API 17 - valori-W480
+0

grazie fo il vostro aiuto! –

+0

Inoltre è molto importante tenere a mente quando U utilizza qualificatori di larghezza/altezza più piccoli che, ad esempio, sw600dp non significa "larghezza minima 600px" ma "larghezza minore 600 * pixel". All'inizio non l'ho capito :) Potrebbe essere utile per i principianti come lo sono io –

1

questo è ciò che Android stati di documentazione:

Tenere presente che, quando il sistema Android sceglie le risorse da utilizzare al runtime , utilizza determinate regole per determinare le risorse "miglior abbinamento" .Cioè, le qualificazioni che usi non devono corrispondere esattamente alla configurazione della schermata corrente in tutti i casi affinché il sistema li usi. In particolare, quando si selezionano le risorse in base ai qualificatori della dimensione , il sistema utilizzerà le risorse progettate per una schermata più piccola della schermata corrente se non ci sono risorse che corrispondono meglio a corrispondenza (ad esempio, uno schermo di grandi dimensioni utilizzerà dimensioni normali) schermo risorse se necessario). Tuttavia, se le uniche risorse disponibili sono più grandi della schermata corrente, il sistema non le utilizzerà e l'applicazione si bloccherà se nessun'altra risorsa corrisponde alla configurazione del dispositivo (ad esempio, se tutte le risorse di layout sono contrassegnate con the xlarge qualificatore, ma il dispositivo è uno schermo di dimensioni normali). Per ulteriori informazioni su come il sistema seleziona le risorse, leggi Come Android Trova la Risorsa migliore.

Source

How Android Finds the Best-Matching Resource

Problemi correlati