Sono confuso riguardo le densità. Vedo che con densità media, la risoluzione dello schermo potrebbe essere 320x480, 480x800 o 480x854. Quindi, se ho un'immagine che è larga 300 px nella cartella mdpi, come avrà le stesse dimensioni su tutte e 3 le diverse dimensioni dello schermo (principalmente 320x480 rispetto agli altri 2)? E con la stessa dimensione, intendo la scala per essere più grande o più piccola a seconda delle dimensioni dello schermo. Grazie.Dimensioni dello schermo multiplo Android con la stessa densità
risposta
Ci sono tre concetti distinti ma collegati da comprendere qui: densità dello schermo (pixel per pollice/centimetro, o comunemente noto come DPI da punti per pollice nelle stampanti), dimensioni dello schermo fisico (in pollici o centimetri) e numero di pixel (noto anche come risoluzione, in pixel).
Questi termini sono non intercambiabili e è necessario comprendere in che modo si collegano tra loro per non essere confusi con il problema. In genere, puoi ignorare le dimensioni dello schermo fisico poiché ciò è già considerato nella densità. Ad esempio uno schermo di 3 pollici di larghezza e 300 pixel di larghezza avrà un DPI di 100. Inoltre, le schermate dei telefoni tendono ad avere circa la stessa dimensione fisica, anche se il numero di pixel è molto diverso.
Quindi, prendiamo in considerazione lo schermo di un G1 o Hero che ha una risoluzione 480x320 e una densità di circa 160 dpi. Un'immagine di 300 pixel di larghezza sarà di 1,875 pollici di diametro. Questo è calcolato in base alla dimensione dei pixel (300)/densità (160). Ora, se si confronta questo sullo schermo del Nexus One, Droid o simili, questi modelli hanno uno schermo con una risoluzione maggiore di circa 800x480 con un'alta densità di circa 240 dpi. Se visualizzi la stessa immagine a 300px, ora verrà visualizzata fisicamente a circa un pollice e uno di larghezza. In altre parole, sarà molto più piccolo. Questo può essere un problema perché se l'immagine contiene del testo, il testo potrebbe non essere più leggibile.
Android può dire di ridimensionare automaticamente le immagini per adattarle a questi diversi schermi in modo che sembrino ancora delle stesse dimensioni. Questo viene fatto impostando le dimensioni in pixel indipendenti dalla densità. Se qualcosa è largo 100dp, sarà largo 100px su uno schermo a media densità. Su uno schermo ad alta densità, sarà largo 150 px, ma entrambi avranno le stesse dimensioni sullo schermo reale. Tuttavia, se lo fai, la tua immagine può risultare un po 'sfocata. È lo stesso di quando si ingrandisce una foto troppo da vicino in un programma di visualizzazione di immagini; i bordi diventano sfocati poiché li "allunga" mentre si esegue lo zoom.
Il modo per risolvere questo è utilizzare le cartelle mdpi, hdpi e così via. Stai dando ad Android un'immagine che è già stata ridimensionata, in modo che non debba farlo da sola. Ovviamente se si allunga l'immagine da soli in Photoshop, allora non sembrerà migliore. Ma normalmente si stanno ridimensionando le immagini molto grandi per adattarle allo schermo mobile. In tal caso, li ridimensiona tre volte, ognuno in una risoluzione diversa.
Quindi, per rispondere alla domanda specifica: se si dispone di un'immagine inserita nella cartella mdpi, avrà esattamente le stesse dimensioni indipendentemente dalla risoluzione dello schermo, purché abbiano la stessa densità. Ciò che cambierà sarà quanto spazio intorno ad essi, ad es. Un'immagine larga 320x320px riempirebbe la maggior parte di uno schermo 320x480, ma solo circa un terzo di uno schermo 480x800. Tuttavia, come notato sopra, in genere i telefoni con risoluzione più alta hanno anche uno schermo più denso. In tal caso, Android non guarderà nella tua cartella mdpi per l'immagine - andrà nella cartella hdpi, e se non la trova lì, prenderà la cartella "drawable" predefinita. Quindi se hai usato DP lo ridimensionerà automaticamente, o se hai usato PX, lo lascerà così com'è, e sembrerà solo più piccolo.
Là! Una risposta molto lunga per te. Spero che abbia senso.
come distinguere gli schermi 480X800 e 480X854. abbiamo un'opzione per mettere l'immagine nella cartella hdpi. Nel mio caso l'immagine 480X800 non supporta l'immagine 480X854.Qualunque idea? – Praveen
@Praveen Chandrasekaran: Per quanto ne so, non è possibile distinguere tra i due facendo affidamento sulla cartella hdpi, ma è normale. Entrambi gli schermi avranno probabilmente la stessa densità. Tuttavia, è possibile ottenere le dimensioni dello schermo a livello di programmazione. Vedi la classe Display Metrics (http://developer.android.com/reference/android/util/DisplayMetrics.html) Questo è un modo molto più affidabile per farlo - la densità di uno schermo è indipendente dal suo numero di pixel. Ad esempio, non c'è una ragione assoluta per cui uno schermo non possa avere un'alta densità e avere solo 480x320 pixel. –
"Un'immagine di 300 pixel di larghezza sarà di 1,875 pollici di diametro, calcolata in base alla dimensione dei pixel (300)/densità (240)" il 240 dovrebbe essere 160 secondo la frase prima di –
Questo è il significato dei dispositivi DIP (Independent Independent Pixels). Invece di 320px
scrivi 320dip
.
http://developer.android.com/guide/practices/screens_support.html
Quindi, se ho un'immagine questo è 300px di larghezza nella cartella MDPI, come sta andando a cercare le stesse dimensioni su tutti e 3 diverse dimensioni schermo (principalmente 320x480 vs l' altro 2)?
L'aspetto dell'immagine, fisicamente, è determinato dalla densità dello schermo, non dalle dimensioni dello schermo. La tua cartella -mdpi
non è legata alle dimensioni dello schermo: è legata alla densità dello schermo.
Potrebbe confermare la formula per il calcolo della densità dello schermo?
Come ho letto, il seguente è la formula:
Densità = SQRT (wp^2 + CV^2)/dimensione schermo
wp -> larghezza dello schermo (in px) hp -> altezza dello schermo (in px) dimensione dello schermo -> dimensione fisica dello schermo (pollici diagonale)
dimensione dello schermo (320x480) = SQRT (102400 + 230400)/160 = 3,6 pollici
dimensioni dello schermo (480x800) = SQRT (640000 + 230400)/160 = 5,8 pollici
dimensione dello schermo (480x854) = SQRT (729.316 + 230400)/160 = 6,12 pollici
Quindi, i layout (schermi UI) sono azionati da dimensioni dello schermo (piccole: < 3" , normali < 4 ", grande> 5") e le risorse estraibili (immagini) sono guidate dalla densità dello schermo.
E, la dimensione dell'immagine (in pixel) non cambia se la densità delle schermate (320x480, 480x800 o 480x854) è la stessa.
Potresti confermare?
Grazie, Ram
Per completezza, controllare anche queste opzioni per il layout di controllo:
Directory qualificazioni:
Size: small, normal, large Density: ldpi, mdpi, hdpi, nodpi(no auto-scale) Aspect ratio: long, notlong Orientation: landUso:
res/layout/my_layout.xml
res/layout-small/my_layout.xml
res/layout-large/my_layout.xml
res/layout-large-long/my_layout.xml
res/layout-large-land/my_layout.xml
res/drawable-ldpi/my_icon.png
res/drawable-mdpi/dpi/my_icon.png
res/drawable-hdpi/my_icon.png
res/drawable-nodpi/composite.xml
Limitare la vostra applicazione per le dimensioni dello schermo specifici (via l'AndroidManifest):
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
...
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
...
</manifest>
E per livello di codice tweeking:
float scale = getContext().getResources().getDisplayMetrics().density;
E non dimenticate:
dpi = 160; //At 160dpi
pixels = dips * (density/dpi)
E 'tutto in questo documento: developer.android.com:Supporting Multiple Screens
In realtà il codice per calcolare le dimensioni dello schermo fisico per i dispositivi è la seguente :
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels/dm.xdpi,2);
double y = Math.pow(dm.heightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
- 1. Dimensioni e densità dello schermo Android
- 2. Android ottenere le dimensioni dello schermo dell'orientamento dello schermo
- 3. Densità e dimensioni nelle tavolette Android
- 4. Dimensioni dello sprite su diverse dimensioni dello schermo Andengine Android
- 5. rileva la densità dello schermo utilizzando javascript sui dispositivi mobili?
- 6. Sviluppo di PhoneGap per Android - Best practice per diverse dimensioni dello schermo/densità di pixel
- 7. Rileva le dimensioni dello schermo e la densità dei pixel sul lato server?
- 8. Android: Regola le dimensioni a livello di programmazione in base alle dimensioni dello schermo
- 9. Dimensioni dello schermo in Java
- 10. Come ottengo le dimensioni dello schermo generalizzato?
- 11. Dimensioni di schermi multipli Android e problemi di densità
- 12. PhoneGap/Cordova Android ha dimensioni dello schermo dopo onDeviceReady
- 13. Visualizzazione griglia Android che si adatta alle dimensioni dello schermo
- 14. Come caricare la stessa preferenza dello schermo nel dettaglio PreferenceFragment
- 15. Android: come ottenere le dimensioni reali dello schermo del dispositivo?
- 16. Dimensioni dello schermo in Samsung Tablet 10.1
- 17. Dimensioni dello schermo Android in pixel per ldpi, mdpi, hpdi?
- 18. dimensioni dello schermo di Android, i valori-V11, V14 valori-
- 19. Dimensioni dello schermo del design Android in pixel?
- 20. Android dimensioni Get schermo dal Servizio
- 21. Immagini di sfondo di grandi dimensioni e dimensioni dello schermo
- 22. Rimuovi elemento per alcune dimensioni dello schermo
- 23. Ottieni dimensioni dello schermo effettive da Java
- 24. Android ImageView riempire la larghezza dello schermo
- 25. Disattivare la rotazione automatica dello schermo - Android
- 26. commutazione in base alle dimensioni dello schermo
- 27. Dimensioni dello schermo in Visual Basic
- 28. CheckBox Android - Ripristino dello stato dopo la rotazione dello schermo
- 29. UITabBar larghezza non crescente con dimensioni dello schermo
- 30. Iphone: ottieni dimensioni della vista o dimensioni dello schermo attuali
http://androidtrainningcenter.blogspot.in/2012/01/plan-design-in-best-way-for-multiple.html visitare questo link – Sameer