Java [Android] [Fortgeschritten] Wie den skalierten Background einer View auslesen?

Tersus

Lieutenant
Dabei seit
Okt. 2011
Beiträge
1.001
Guten Abend,

man kann bei einer View mittels setBackground(Drawable) ein Hintergrundbild setzen. In meinem Beispiel ist das Bild mit z.B. 600px * 600px sehr groß.
Die View skaliert das Bild jedoch auf die Größe herunter, die sie selbst besitzt.
Hat die View im Layout eine Größe von z.B. 100px * 100px, dann wird das Bild automatisch auf 100 * 100 herunterskaliert und schaut top aus.
Wenn ich mir nun das Hintergrundbild mittels ((BitmapDrawable) view.getBackground()).getBitmap() geben lasse, erhalte ich nur meine ursprüngliche Bitmap mit 600px * 600px. Ich hätte gerne die skalierte 100px * 100px Bitmap, welche die View tatsächlich anzeigt.

Noch mal zur Unterstreichung:
Ich möchte die Bitmap nicht selbst skalieren! Ich suche die direkte Refferenz zur skalierten Bitmap in der View.

Danke für evtl. Hilfen!

Grüße
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
26.274
Hi,

für mein Verständnis ist die Bitmap die gleiche - die Skalierung ändert ja nichts an der Datei, ausser sie wird tatsächlich bearbeitet, das glaube ich eigentlich eher nicht. Im Web ist es ja das selbe, das Bild wird nur verkleinert dargestellt, nicht verkleinert! Wenn es tatsächlich eine neue Datei ist wird sie wahrscheinlich im Speicher vorgehalten, ich bin nicht sicher, ob dir die View darauf dann Zugriff gibt.

Korrigiere mich bitte gerne wenn ich mich irre :)

VG,
Mad
 

Tersus

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2011
Beiträge
1.001
Danke für deine Antwort.

Muss ein verkleinert dargestelltes Bild denn nicht zwischen gespeichert werden? Für die kleinere Darstellung ist definitiv eine Skalierung notwendig und dieses skalierte Bild muss doch im Speicher liegen. Wie soll das denn anders gehen? ;-)
 
Zuletzt bearbeitet:

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
26.274
Hi,

Verstehe das Problem nicht so ganz. Ist bei der Webentwicklung genau das Gleiche. Ich habe ein Bild mit 1000 x 1000 Pixeln. Ich lege fest, dass das Bild in einem Bereich von 400 x 400 Pixeln angezeigt wird. Da wird das Bild eben nur verkleinert dargestellt, aber eben nicht tatsächlich skaliert-bearbeitet-abgespeichert und dann angezeigt.

Keine Ahnung ob es bei Android anders ist. Ich würde aber vermuten: nein.

VG,
Mad
 

Tersus

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2011
Beiträge
1.001
Ich dachte halt, dass der Canvas einer View genau wissen muss, was er zeichnet. Aber gut, dann belasse ich es hierbei. Danke dir, für deine Teilnahme. ;)
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
26.274
Hi,

wie gesagt, bin in Java/Android nicht zuhause, daher kann ich nur Analogien zur Webentwicklung und vergleichbaren Technologien herstellen. "Verkleinern" ist in meinen Augen eben nicht das Gleiche wie "verkleinert darstellen" :)

Keine Ahnung ob das bei Java auch so ist, keine Gewähr! Wäre schön wenn jemand noch etwas dazu sagen kann, der da in der Entwicklung daheim ist.

VG,
Mad
 
Top