Wie Bild auf ImageButton drehen bei fester screenOrientation?

A

Andro-medanebel

Neues Mitglied
0
Ich habe ein Feld aus ImageButtons.

Die ImageButtons selbst sollen sich nicht drehen,
wenn sich das Display dreht.

Dafür habe ich
Code:
...android:screenOrientation="portrait"...
ins Manifest geschrieben.

Die Bilder auf den ImageButtons drehen sich nun allerdings
auch nicht mehr.

Gibt es eine einfache Möglichkeit, zu erreichen, dass
sich die ImageButtons selbst nicht drehen, wenn man
das Display dreht, die Bilder auf den ImageButtons sich
aber mitdrehen?
 
Du könntest dir das bild vom imagebutton holen (button.getDrawable() oder so ähnlich war die methode) dann das bild mit einer matrix rotieren( rotate()) und wieder auf den button legen( button.setImageDrawable()).
Kann sein das die methoden bischen anderst heißen, weiß sie nicht auswendig, sitze im zug, sorry.
 
Geht das nur mit Bitmaps? Dann kann
ich es nicht verwenden, da ich jpgs habe
und man wohl (wie z.B. hier
Android - Working With Images In Android - Android Tutorials )
eine Methode createBitmap benutzen muss.

Ich habe es für meine jpgs so versucht:

Code:
//(Teil meiner for-Schleife)
Matrix mtx = new Matrix();
mtx.postRotate(90);
mtx.setRotate(90);
ib2[i].setImageMatrix(mtx);
ib2[i].setImageDrawable(drawable_all[i]);
aber die Bilder werden nicht gedreht.
Geht das Bilderdrehen generell nicht für jpgs oder
was muss ich am Code ändern, damit meine jpgs
gedreht werden?
 
So sollte es funktionieren:
Code:
Bitmap deinBild = ((BitmapDrawable)imageButton.getDrawable()).getBitmap();
Matrix matrix = new Matrix();
matrix.setRotate(90);
Bitmap gedreht = Bitmap.createBitmap(deinBild, 0, 0, deinBild.getWidth(), deinBild.getHeight(), matrix, true);
deinBild.recycle();
imageButton.setImageBitmap(gedreht);

imageButton musst du halt noch durch ib2 ersetzen:)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Andro-medanebel
Sabian schrieb:
So sollte es funktionieren:
Code:
Bitmap deinBild = ((BitmapDrawable)imageButton.getDrawable()).getBitmap();
Matrix matrix = new Matrix();
matrix.setRotate(90);
Bitmap gedreht = Bitmap.createBitmap(deinBild, 0, 0, deinBild.getWidth(), deinBild.getHeight(), matrix, true);
deinBild.recycle();
imageButton.setImageBitmap(gedreht);
imageButton musst du halt noch durch ib2 ersetzen:)


Danke, hat funktioniert.:)
Nur das recycle musste ich rausnehmen, da sonst jedes
Bitmap nur einmal dargestellt wird. Für meine Zwecke
soll jedes Bitmap zweimal dargestellt werden.
 

Ähnliche Themen

M
Antworten
3
Aufrufe
151
moin
M
B
Antworten
6
Aufrufe
1.050
jogimuc
J
D
Antworten
17
Aufrufe
398
datNeMo
D
Zurück
Oben Unten