Bilder positionieren und bewegen

  • Antworten:7
Aron Brast
  • Forum-Beiträge: 92

25.08.2014, 20:13:47 via Website

Hallo,
ich versuche in meiner App ImageViews, die schon ins Layout eingebunden sind im Programm neu zu platzieren und zu bewegen, dabei möchte ich mich gerne nur auf einfache X/Y-Koordinaten beschränken, kann man das überhaupt ohne Canvas bewerkstelligen?
Und wie kann ich ein Bild neu anhand der Koordinaten platzieren ?
Würde mich über Hilfe freuen :)

Antworten
Micha Roth
  • Forum-Beiträge: 26

25.08.2014, 20:41:22 via Website

Hey,

wenn ich dich richtig verstanden habe, sollte das nicht so schwer sein. Android bringt dafür die Funktion scaleTyp=fitXY mit.

Du findest sie, wenn du auf ein ImageView klickst und dann auf die Eigenschaften deines ImageView schaust. Dort wählst du dann einfach fitXY aus und schon kannst du skalieren, wie du möchtest.

Klarer Nachteil ist dabei, dass die Koordinaten sich nicht dynamisch anpassen. Heißt: Auf einem 10'' Tablet ist das ImageView auch 100*100 Pixel groß, genau wie auf deinem 3'' Handy. Auf einem 10'' Tablet ist sowas dann halt echt klein :D

Als Lösung dafür könntest du die Displaygröße berechnen und dementsprechend große/kleine XY-Werte setzen. Das passiert allerdings alles im Quellcode.

Ich hoffe, das hilft dir weiter.

Gerne mal vorbeischauen auf

Stirnraten.de

Antworten
Aron Brast
  • Forum-Beiträge: 92

26.08.2014, 12:33:02 via Website

Danke schonmal @Micha Roth,
ich meinte jedoch nicht das skalieren sondern die Position verändern der ImageViews, also über den Programmcode die Position verälndern und somit zum Beispiel ein Bild von der linken Seite nach rechts durch den Bildschirm laufen lassen, hast du dafür vielleicht auch eine Lösung, wäre echt cool :)

Antworten
Micha Roth
  • Forum-Beiträge: 26

27.08.2014, 08:29:40 via Website

Oh,

da habe ich dich wohl missverstanden.

Aber ja, auch das geht. Du bindest das ImageView erstmal per Javacode ein, einfach googlen: ImageView android per code einbinden

Wenn du das getan hast, kannst du die die Parameter per setMargin setzen.
Dafür habe ich dir paar hilfreiche Links rausgesucht:

(Weil ich neu bin, kann ich iwie noch keine Links schicken, die außerhalb von androidpit liegen, deshalb sind sie "zerstückelt";)

ht tps://stackoverflow.c om/questions/19328756/set-position-of-programmatically-created-imageview-android
ht tps://stackoverflow.c om/questions/6418726/android-setting-x-y-of-image-programmatically
ht tps://stackoverflow.c om/questions/9200813/programmatically-position-views-in-relativelayout
ht tps://stackoverflow.c om/questions/6733827/imageview-position-and-size

Allgemein lohnenswert ist auch der Begriff bei Google: Animation Imageview android

Da findest du auch einiges - leider kenne ich mich damit nicht 100%ig aus und kann keine Empfehlungen geben ;)

Ich hoffe, das hilft dir weiter

Gruß von

Stirnraten.de

Antworten
Aron Brast
  • Forum-Beiträge: 92

27.08.2014, 21:04:44 via Website

Vielen Dank,
das mit den Links kriege ich schon hin (die Mühe die du dir gemacht hast, da geht das schon ;) )
Sehr hilfreich

Antworten
Aron Brast
  • Forum-Beiträge: 92

09.09.2014, 19:57:29 via Website

Ein Problem mit den Links!
Alle Methoden die angewendet werden setzten nur die Größe des Bildes neu, aber nicht die Position!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.09.2014, 20:10:38 via Website

Wie sieht denn dein bisheriger Code aus?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Micha Roth
  • Forum-Beiträge: 26

15.09.2014, 16:04:21 via Website

Also der unterste Link: der Hier enthält folgenden Code:

ImageView image;
// Gets the layout params of the imageview
MarginLayoutParams params = (MarginLayoutParams)image.getLayoutParams();
// Sets the margins of the imageview, making it move to a specific location on the screen
param.setMargins(int left, int top, int right, int bottom);

Mehr solltest du nicht benötigen. Da baust du z.B. noch eine Schleife herum mit der die Werte left/top/right usw. verändert werden.

Viele Grüße von

Stirnraten.de

Antworten