Frage

Ich habe ein Bild setzen auf eine ImageButton, die gut auf einem MDPI sieht ( mittel dpi ) auf dem Bildschirm. Wenn jedoch das Gerät eine hdpi ( Hoch dpi ) Bildschirm hat, ist das Bild immer noch Pixel-für-Pixel-genau, die auf dem Bildschirm des Geräts klein aussehen.

Wie kann ich machen, so dass das Bild (und damit die ImageButton) skaliert auf der Grundlage des dichteunabhängige Pixel ( dp oder dip ) anstelle von Pixeln?

War es hilfreich?

Lösung

Wie Ponkin erwähnt, 9-Patches ist die beste Wahl. In Verbindung mit Ressourcenverzeichnis Qualifier (drawable-hdpi, drawable-mdpi, etc.) Sie Vermögenswerte, dass gut aussehen zu jeder Dichte und Größe machen.

Ein Beispiel für 9-Patches und Ressourcenverzeichnis Qualifier finden Sie in der finden mehrere Auflösungen Android SDK-Beispiel. Der halb-transparent, schwarz, abgerundete Ecke Hintergrund als 9-Patch mit verschiedenen PNGs für LDPI, MDPI und hdpi umgesetzt wird.

Andere Tipps

android:scaleType="fitXY"

Weitere Optionen sind:

fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix

Wohlgemerkt, ich bin faul und verwende wirklich große PNG-Bilder in einem rohen Ordner.

IMHO sollten Sie ziemlich nah schauen, um NinePatchDrawable . Es ist eigentlich ein Werkzeug , die Sie Ihr Symbol wird dazu beitragen, (Bilder / icons / was auch immer ...) Größe veränderbar je nach Größe des Behälters. It`s wirklich einfach und funktioniert gut für meine Bedürfnisse. Schauen Sie auch unter diesem Artikel (Teil "NinePatchDrawable"), es erklärt den NinePatchDrawable Mechanismus.

  

Eine NinePatchDrawable Grafik ist ein dehnbares Bitmap-Bild, das   Android wird die Größe automatisch an   empfangen den Inhalt der Ansicht in   die Sie haben es als die platziert   Hintergrund. Ein Beispiel für die Verwendung von a   NinePatch ist die verwendeten Hintergründe von   Standard-Android-Tasten - Tasten   strecken muss Saiten aufnehmen   verschiedene Längen. Ein NinePatch ziehbar   ist ein Standard, PNG-Bild enthält   eine zusätzliche 1-Pixel breite Grenze. Es muss   wird mit der Erweiterung .9.png gespeichert,   und gespeichert in den res / ziehbar /   Verzeichnis Ihres Projekts.

Vielleicht sollten Sie nur angeben Knopfgröße in geräteunabhängig-Pixel?

android:layout_width="300dip" 
android:layout_height="50dip"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top