2012-03-29 18 views
19

Ho drawable per ogni densità come ldpi, mdpi, hdpi e xhdpiimmagine mdpi è troppo piccolo per 10" tablet android

Problema:. Entrambi 10" tablet (1280x800) ed un dispositivo portatile 320x480 usa la densità media. Ho un'immagine 35x35 mdpi. Ma questa immagine è troppo piccola per il tablet mentre è ok per il portatile.

Ho letto i documenti pertinenti. Ma immagino di non poter capire cosa sia significativo. C'è comunque per il tablet che usa le immagini xhdpi o mi chiedo come usare le immagini più grandi per il tablet mdpi.

risposta

25

È necessario aggiungere un secondo identificatore large e/o xlarge alle cartelle disegnabili. Aumentare la dimensione in drawable-xlarge-mdpi finché non si è soddisfatti del risultato mentre lo drawable-mdpi avrà le stesse dimensioni di prima.

Questo aumenta le dimensioni dell'app, ma risolverà il problema.

+0

@ warrenfaith: Sono rappresentate anche con lo stesso significato. –

+0

@ Raman-Mystry mi dispiace, non capisco cosa stai cercando di dire. – WarrenFaith

+0

@WarrenFaith Ho provato il tuo approccio, quello ha funzionato per me. Grazie. Ma a causa delle dimensioni dell'app, credo che userò l'approccio di kingraam. – efeyc

18

Se si desidera ottenere questo risultato senza aumentare le dimensioni dell'app, è possibile lasciare che uno schermo ad alta densità e un grande schermo a media densità utilizzino la stessa risorsa. È necessario posizionare l'immagine che si desidera riutilizzare nella cartella 'Drawable-nodpi'. Ciò impedirà alla piattaforma di eseguire il proprio ridimensionamento quando lo utilizza. Per esempio, supponendo che si dispone di una risorsa chiamata 'my_resource', se si desidera che lo schermo tablet-size per usare la vostra risorsa xhdpi, quindi spostarlo fuori drawable-xhdpi e rinominarlo in questo modo:

/drawable-nodpi/my_resource_xhdpi.png 

Poi, nel cartelle sia drawable-xhdpi e disegnabile-XLarge, creare un file chiamato my_resource.xml che assomiglia a questo:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/my_resource_xhdpi"> 
</bitmap> 

Ora, quando si utilizza @ drawable/my_resource, la versione xhdpi saranno utilizzati da schermi xhdpi e xlarge schermi e devi solo mantenere una versione dell'immagine. Uso questa tecnica parecchio e funziona davvero bene. Spero possa aiutare!

+2

soluzione interessante. grazie per aver condiviso – WarrenFaith

+0

@kingraam: Ho bisogno di un file xml per ogni png. È giusto? – efeyc

+1

Sì, avrai bisogno di un file xml come quello per immagine, per densità/dimensioni dello schermo che vuoi usare. Lo svantaggio di questo approccio è che devi coprire più combinazioni di dimensioni/densità. Ad esempio, se è stato rilasciato un tablet hpdi, è necessario inserire un file immagine o xml in Drawable-xlarge-hdpi, altrimenti verrà utilizzato solo quello in Drawable-xlarge che punta all'immagine in nodpi disegnabili .. e poiché è in nodpi, non verrà ingrandito, quindi sarà fisicamente più piccolo sullo schermo. Quindi usa con cura! Non conosco un approccio migliore per condividere le immagini tra cartelle di densità e dimensioni. – kingraam

0

Includo alcune risorse in Drawable-xlarge e cartelle estraibili, oltre alle cartelle drawable-hdpi. Questo funziona per me.

Un'altra alternativa, è quello di ridimensionare l'immagine in codice direttamente, cosa che faccio con il seguente codice:

Drawable scaledIcon = new BitmapDrawable(Bitmap.createScaledBitmap(myImage, pxInt, pxInt, true)); 
myImageView.setBackgroundDrawable(scaledIcon); 

Non è una buona idea per scalare un sacco di immagini nel codice (utilizzando questo metodo), poiché penso che sia molto dispendioso in termini di risorse per modificare le immagini al volo in questo modo. Lo uso in alcuni casi, dove l'immagine che sto usando potrebbe non essere una dimensione standard (e voglio che si adatti sempre).

9

Questi sono definiti come pratica comune:

Dispositivi:

drawable-ldpi/xyz.png   low resolution devices 320x240 (now a days no phone comes with this resolution) 
drawable-mdpi/xyz.png   medium resolution devices 480x320 
drawable-hdpi/xyz.png   high resolution devices 800x480 
drawable-xhdpi/xyz.png   Extra high resolution devices 1280*720 
drawable-xxhdpi/xyz.png  Extra Extra high resolution devices 1920x1080 

Compresse:

drawable-large-mdpi/xyz.png 7” Tablet (600x1024 mdpi) 
drawable-xlarge-mdpi/xyz.png 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc). 
+0

questo è il modo in cui ¡¡ thx¡¡ – Billyjoker

+0

welcome @Billyjoker;) – karan

Problemi correlati