2015-01-16 14 views
6

Per definire valori di dimensioni diverse per Android TV 1080p e 720p, devo decidere quale qualificatore dovrei usare. Quando sto cercando di usare qualcosa come valori-sw1080p, values-sw720p, non funziona. I valori in dimes.xml non influenzano nulla. Ma funziona se uso qualificatore come -sw540dp, -sw360dp. Non capisco davvero perché così. Qualche idea? Grazie.Quale qualificatore di risorse devo usare per supportare Android TV 1080p, 720p? - Android

+0

display che pubblicizza 1080p tipicamente si riferisce alla capacità di accettare segnali 1080p in formato nativo risoluzione, che significa che ci sono un vero 1920 pixel in larghezza e 1080 pixel i n altezza, –

+0

dove sw-7080p in cui "sw" sta per "Screen Width". –

+0

Non utilizzare né, almeno per le cose che sono distinte per i televisori. Tieni presente che i layout per telefoni e tablet sono spesso inadatti per i televisori, a causa della dipendenza dalla barra delle azioni, dell'assenza di supporto per overscan e così via. Usa '-television' come un qualificatore del set di risorse per le risorse incentrate sulla televisione. – CommonsWare

risposta

4

Prima di tutto, si è sostanzialmente corretto. È possibile utilizzare

sw360dp/ : 720p screens 
sw540dp/ : 1080p screens 

Il motivo per cui sw720p/sw1080p non funzionano è perché non esistono come qualificatori.

This is the official documentation su come lavorare con diverse dimensioni dello schermo. Come puoi leggere, ci sono due diverse unità da prendere in considerazione se vuoi calcolare la tua cartella dp: il numero di pixel (ad es. 720) e la densità dei pixel (ovvero, l'unità di dot-per-inch, o quanti i pixel si adattano a un singolo pollice).

La formula è piuttosto semplice:

px = dp * (dpi/160) 

mentre in questo caso abbiamo:

dp = px * 160/dpi 

Naturalmente, un televisore può avere diverse densità: questa tabella ti dice più su di esso (fonte : official documentation).

Densities table

Supponiamo che abbiamo un display 1080p con una alta densità in più (@ 320 dpi). Facciamo due conti

dp = 1080 * 160/320 = 540 

in modo da ottenere la cartella appropriata per mettere le risorse in


EDIT:. Sulla stessa pagina, si afferma che non v'è uno specifico tvdpi qualificatore che è possibile utilizzare per le risorse relative alla TV (circa 213 dpi).

+0

Grazie. Significa che tutti i TV 1080p e 720p sono 320 DPI? (Perché il mio cliente non conosce il DPI quando ho chiesto). –

+0

Sulla stessa pagina, si afferma che 'tvdpi' è di circa 213 dpi. – Sebastiano

+0

Dalla mia osservazione una TV 720p usa 'tvdpi' mentre una TV 1080p usa' xhdpi'. Ciò significa che ** entrambi ** hanno dimensioni indipendenti dalla densità di 960x540 dp (approssimative per 720p) e si inseriscono entrambe nel bucket 'sw540dp'. Quindi credo che l'uso di 'sw360dp' per il target 720p sia errato. –

3

Ci sono tre densità di schermo che possono essere considerate per Android TV e tre qualificatori corrispondenti. Questi includono:

  1. tvdpi - (213dpi) - destinati a 720p televisori;
  2. xhdpi - (320 dpi) - progettato per televisori 1080p (HD);
  3. xxxhdpi - (640 dpi) - progettato per televisori 4k (Ultra HD).

Ma secondo https://developer.android.com/training/tv/start/layouts.html#density-resources:

Il layout TV dovrebbe mirare ad una dimensione dello schermo di 1920 x 1080 pixel [standard di 1080p/HD], e poi consentire al sistema Android per il downscaling gli elementi di layout per 720p se necessario.

Questo implica che, se si segue questo consiglio e progettare sempre ad un 1080p specifiche, è possibile utilizzare il -televisionUI Mode Qualifier e da fare con esso.

Se è necessario fornire immagini e layout diversi per i diversi formati TV, è tuttavia possibile utilizzare i qualificatori di densità dello schermo sopra.

Le immagini e i layout "standard" per TV possono essere memorizzati in una cartella -xhdpi, poiché xhdpi è il qualificatore utilizzato per i televisori 1080p.

Se per le TV 4k sono richieste versioni (opzionali) ad alta risoluzione, possono essere fornite come immagini "2x" e memorizzate in una cartella drawable-xxxhdpi. Allo stesso modo, le dimensioni/layout destinati a targetizzare solo 4k TV potrebbero essere inseriti in -xxxhdpi.

(Si noti in particolare che la qualificazione -tvdpi è specifico a 720p, ed è quasi certamente non quello che si desidera utilizzare per sostenere moderni televisori.)

La documentazione è scarsa e un po 'contraddittorio, ma ho basare questo in primo luogo su queste fonti:

https://developer.android.com/guide/practices/screens_support.html https://stackoverflow.com/a/11581786/925478

dispositivo
Problemi correlati