2012-03-29 8 views
19

Ich habe Drawables für jede Dichte als LDPI, MDPI, hdpi und xhdpiMDPI Bild zu klein für 10" android Tablette

Problem. Sowohl 10" Tablet-Gerät (1280x800) und einem Mobilteil Vorrichtung 320x480 verwendet mittlere Dichte. Ich habe ein 35x35 mdpi Bild. Aber dieses Bild ist zu klein für Tablet, während es für das Mobilteil in Ordnung ist.

Ich lese relevante Dokumente. Aber ich denke, ich konnte das nicht signifikant verstehen. Gibt es sowieso für Tablets xhdpi Bilder oder ich frage mich wie man größere Bilder für mdpi Tablet verwenden kann.

Antwort

25

Sie sollten einen zweiten Bezeichner large und/oder xlarge zu Ihren aufklappbaren Ordnern hinzufügen. Erhöhen Sie die Größe in drawable-xlarge-mdpi, bis Sie mit dem Ergebnis zufrieden sind, während die drawable-mdpi wird die gleiche Größe wie zuvor.

Dies erhöht die App-Größe, aber es wird Ihr Problem beheben.

+0

@ warrenfaith: Ich habe auch mit der gleichen Bedeutung vertreten. –

+0

@ Raman-Mystry Entschuldigung, ich verstehe nicht, was Sie sagen wollen. – WarrenFaith

+0

@WarrenFaith Ich habe deinen Ansatz versucht, das hat für mich funktioniert. Vielen Dank. Aber wegen der App-Größe, nehme ich an, dass ich den Ansatz von Kingraam verwenden werde. – efeyc

18

Wenn Sie dies erreichen möchten, ohne Ihre App-Größe zu erhöhen, gibt es eine Möglichkeit, einen Bildschirm mit hoher Dichte und einen Bildschirm mit großer mittlerer Dichte dieselbe Ressource verwenden zu lassen. Sie müssen das Bild, das Sie wiederverwenden möchten, im Ordner "Drawable-Nodpi" platzieren. Dies wird verhindern, dass die Plattform ihre eigene Skalierung durchführt, wenn sie sie verwendet. Zum Beispiel, vorausgesetzt, Sie eine Ressource ‚my_resource‘ genannt, wenn Sie den Tablet-Größe Bildschirm benutzen, um Ihre xhdpi Ressource wollen, es dann aus ziehbar-xhdpi bewegen und benennen Sie es wie folgt aus:

/drawable-nodpi/my_resource_xhdpi.png 

dann in sowohl die ziehbar-xhdpi und ziehbar-xlarge Ordner, erstellen Sie eine Datei my_resource.xml genannt, die wie folgt aussieht:

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

Nun, wenn Sie @ ziehbar verwenden/my_resource, wird die xhdpi Version von xhdpi Bildschirme und xlarge verwendet werden Bildschirme, und Sie müssen nur eine Version des Bildes pflegen. Ich benutze diese Technik ziemlich oft und es funktioniert wirklich gut. Ich hoffe, das hilft!

+2

interessante Problemumgehung. Danke für die Freigabe – WarrenFaith

+0

@kingraam: Ich brauche eine XML-Datei für jeden PNG. Ist es richtig? – efeyc

+1

Ja, du brauchst eine solche XML-Datei pro Bild, pro Dichte/Bildschirmgröße, die du verwenden willst. Der Nachteil dieses Ansatzes besteht darin, dass Sie mehr Größen/Dichte-Kombinationen abdecken müssen. Wenn zum Beispiel ein hpdi-Tablet veröffentlicht wurde, müssten Sie eine Bild- oder XML-Datei in drawable-xlarge-hdpi einfügen, andernfalls wird nur die in drawable-xlarge verwendet, die auf das Bild in drawable-nodpi .. und verweist weil es in nodpi ist, wird es nicht vergrößert, so dass es auf dem Bildschirm physisch kleiner wird. Also Vorsicht! Ich kenne keinen besseren Ansatz, um Bilder zwischen Dichte- und Größenordnern zu teilen. – kingraam

0

Ich habe einige Ressourcen in Drawable-Xlarge und Drawable-große Ordner, zusätzlich zu den Drawable-HDpi-Ordnern. Das funktioniert für mich.

Eine weitere Alternative ist ein Bild in Code direkt zu skalieren, die ich mit dem folgenden Code tun:

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

Es ist keine gute Idee, viele Bilder in Ihrem Code (mit dieser Methode zu skalieren), da es meiner Meinung nach ressourcenintensiv ist, die Bilder im laufenden Betrieb so zu modifizieren. Ich benutze das in einigen Fällen, wo das Bild, das ich benutze, möglicherweise keine Standardgröße ist (und ich will, dass es immer richtig passt).

9

Diese sind als gängige Praxis definiert:

Geräte:

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 

Tabletten:

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

das ist die Art und Weise ¡¡thx¡¡ – Billyjoker

+0

willkommen @Billyjoker;) – karan