10

Sono un po 'confuso su come determinare quali telefoni supportano i tipi di layout. Ho fatto delle ricerche ma non ho trovato una risposta soddisfacente.come sapere quale telefono supporta quale layout (hdpi, mdpi e xhpi)?

Per esempio, ho trovato la guida sotto:

xlarge screens are at least 960dp x 720dp 
large screens are at least 640dp x 480dp 
normal screens are at least 470dp x 320dp 
small screens are at least 426dp x 320dp 

Tuttavia, ho ancora qualche preoccupazione:

  1. Samsung grand (480 * 800) e HTC selvaggio fire S (320 * 480) supportano entrambi MDPI. Questi schermi hanno risoluzioni molto diverse, ma hanno lo stesso tipo di layout?

  2. Galaxy note 2 (1280 * 720) supportano HDPI. Se HD (720p) è solo HDPI, quando quale dispositivo/risoluzione supporta XHDPI?

  3. Ho già fatto una domanda correlata qui: How to set layout on 7" two different tablet?.

  4. La mia domanda più importante, tuttavia, è questa: Come faccio a sapere quali dispositivi o risoluzioni dello schermo supportano ogni tipo di layout?

+0

Perché è necessario conoscere il nome del modello del dispositivo? – ozbek

+0

Non dovresti preoccuparti di tutte le dimensioni dello schermo dei dispositivi. Basta fare diversi layout (normale, hdpi, xhdpi) e ogni dispositivo eseguirà il layout in base al suo dpi. BTW ... Il Galaxy Note 2 ha uno schermo a 267 dpi. Quindi, userà il layout xhdpi. –

+0

Sto facendo questa domanda bcz im usando la webview in cui posso mostrarti video in provetta, in modo che mostri diverse indicazioni su tutti i dispositivi. – duggu

risposta

12

Android tratta MDPI (160 pixel/pollice) come il densità di base. Quindi per i dispositivi mdpi, 1 dp = 1 pixel. A densità più elevate, ci sono più pixel per pollice (240 per hdpi, 320 per xhdpi).

scalatura automatica da Android sé:

tentativi Android per rendere le immagini grafiche occupano le stesse dimensioni fisiche sullo schermo indipendentemente dalla densità di pixel del dispositivo. Quindi, se tutto ciò che trova è una risorsa mdpi e il dispositivo è hdpi, ridimensionerà l'immagine di 240/160 = 150% e raddoppierà la dimensione dell'immagine per xhdpi.

Usando diverse versioni di grafica:

Se non si desidera che questo ridimensionamento automatico (che può fare grafica un aspetto povero), si può semplicemente fornire la propria versione di risorse grafiche per l'uso a più alto densità. Questi elementi grafici dovrebbero essere della stessa dimensione in cui Android ridimensiona una risorsa mdpi.

Nota: i pixel/pollici che sono stati memorizzati nel file di immagine non hanno nulla a che fare con questo. Si basa tutto su dove si mettono i file grafici nella directory delle risorse per il proprio progetto. Si presume che tutte le immagini inserite in res/drawable abbiano dimensioni appropriate per i display mdpi, così come la grafica inserita in res/drawable-mdpi. I file immagine che trova in res/drawable-hdpi sono considerati dimensionati correttamente per display hdpi, ecc.Quando il tuo programma viene eseguito su un determinato dispositivo, Android cercherà innanzitutto un'immagine che corrisponda alla densità del display di quel dispositivo. Se non ne trova uno, ma ne trova uno per una densità diversa, lo utilizzerà e ridimensionerà automaticamente l'immagine in base alle regole precedenti.

Come ldpi, mdpi e hdpi riferiscono a densità degli schermi, che significa quanto pixel possono inserire in un singolo pollici.

il rapporto in pixel tra loro è:

ldpi = 1:0.75 
mdpi = 1:1 
hdpi = 1:1.5 
xhdpi = 1:2 
xxhdpi = 1:3 

così lascia prendere un'immagine con le dimensioni di 100X100:

for mdpi it should be 100X100 
for ldpi it should be 75X75 
for hdpi it should be 150X150 
for xhdpi it should be 200X200 
for xxhdpi it should be 300X300 

questo modo, per gli schermi con lo stesso dimensioni ma DPI diversi, tutte le immagini sembrano le stesse dimensioni sullo schermo.

0

sguardo in questi dettagli: Android gestisce tutto questo da solo, è sufficiente a fornire layout e le immagini in cartelle relative

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-small/my_layout.xml  // layout for small screen size 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 
Problemi correlati