Ich verwende den folgenden Code, um ein Bild in ImageView um einen Winkel zu drehen. Gibt es eine einfachere und weniger komplexe Methode?
ImageView iv = (ImageView)findViewById(imageviewid);
TextView tv = (TextView)findViewById(txtViewsid);
Matrix mat = new Matrix();
Bitmap bMap = BitmapFactory.decodeResource(getResources(),imageid);
mat.postRotate(Integer.parseInt(degree));===>angle to be rotated
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0,bMap.getWidth(),bMap.getHeight(), mat, true);
iv.setImageBitmap(bMapRotate);
Antworten:
Eine weitere einfache Möglichkeit zum Drehen von
ImageView
:UPDATE:
Erforderliche Importe:
Code: (Unter der Annahme
imageView
,angle
,pivotX
&pivotY
ist bereits definiert)Bei dieser Methode muss nicht jedes Mal eine neue Bitmap erstellt werden.
quelle
ImageView
Werten von:matrix.postRotate( 180f, imageView.getDrawable().getBounds().width()/2, imageView.getDrawable().getBounds().height()/2);
ImageView
dassrc
Attribut Ihres 's festlegen .getDrawable()
gab für mich null zurück, bis mir klar wurde, dass ich stattdessen das AttributImageView
' gesetzt hatte . Gesichtspalmebackground
src
mImageView.setRotation(angle)
mit API> = 11quelle
ViewPropertyAnimator
, die verwendet wird wieaView.animate().rotation(20).start()
rotationBy()
. Zum Beispielview.animate().rotationBy(180f).start()
. Es wird jedoch problematisch, wenn die Ansicht nacheinander angeklickt wird.Wenn Sie API 11 oder höher unterstützen, können Sie einfach das folgende XML-Attribut verwenden:
In der XML-Vorschau von Android Studio wird es möglicherweise nicht richtig angezeigt, aber es funktioniert wie erwartet.
quelle
background
, um den Effekt zu sehen.Dafür gibt es zwei Möglichkeiten:
1
Matrix
Erstellen einer neuen Bitmap:2 Verwendung
RotateAnimation
auf dieView
Sie drehen möchten, und stellen Sie sicher , dass das AnimationssatzfillAfter=true
,duration=0
undfromDegrees=toDgrees
und Aufblasen der Animation im Code:
quelle
Ich weiß, dass dies wahnsinnig spät ist, aber es war hilfreich für mich, damit es anderen helfen kann.
Ab API 11 können Sie die absolute Drehung einer ImageView programmgesteuert mithilfe von festlegen
imageView.setRotation(angleInDegrees);
Methode .Mit absolut meine ich, dass Sie diese Funktion wiederholt aufrufen können, ohne die aktuelle Drehung verfolgen zu müssen. Das heißt, wenn ich durch Übergabe
15F
an diesetRotation()
Methode drehe und dannsetRotation()
erneut mit aufrufe30F
, beträgt die Drehung des Bildes 30 Grad und nicht 45 Grad.Hinweis: Dies funktioniert tatsächlich für jede Unterklasse des View- Objekts, nicht nur für ImageView.
quelle
Das ist mein Implementierung von RotatableImageView . Die Benutzung ist sehr einfach: einfach kopieren attrs.xml und RotatableImageView.java in Ihr Projekt und fügen Sie RotatableImageView zum Layout. Stellen Sie den gewünschten Drehwinkel anhand des Beispiels ein: Winkelparameter .
Wenn Sie Probleme beim Anzeigen von Bildern haben, ändern Sie den Code in der RotatableImageView.onDraw () -Methode oder verwenden Sie stattdessen die draw () -Methode.
quelle
Kann auch so gemacht werden: -
bin von hier gekommen.
quelle
Auch, wenn Sie eine Image durch drehen möchten 180 Grad vertikal oder horizontal, können Sie verwenden
scaleY
oderscaleX
Eigenschaften und setzen Sie sie auf-1f
. Hier ist ein Kotlin-Beispiel:1f
value wird verwendet, um eine ImageView in ihren normalen Zustand zurückzusetzen:quelle
Ich habe eine Lösung dafür. Eigentlich ist es eine Lösung für ein Problem, das nach der Drehung auftritt (rechteckiges Bild passt nicht zu ImagView), aber es deckt auch Ihr Problem ab. Obwohl diese Lösung Animation zum Guten oder zum Schlechten hat
Das Abrufen der Parameter von imageView ist bei der Initialisierung der Aktivität nicht möglich. Beziehen Sie sich dazu bitte auf diese Lösung ODER stellen Sie die Abmessungen auf onClick eines Buttons wie folgt ein
Und der Code, der ausgeführt werden soll, wenn ImageView gedreht werden soll
Diese Lösung ist für das obige Problem ausreichend. Obwohl die Bildansicht auch dann verkleinert wird, wenn dies nicht erforderlich ist (wenn die Höhe kleiner als die Breite ist). Wenn Sie dies stört, können Sie innerhalb von scaleX / scaleY einen weiteren ternären Operator hinzufügen.
quelle
Ich denke die beste Methode :)
quelle
Drehen Sie ein Bild in Android mit Verzögerung:
quelle
Versuchen Sie dies in einer benutzerdefinierten Ansicht
quelle
Hier ist eine gute Lösung, um ein gedrehtes Zeichen für eine Bildansicht zu erstellen:
Verwendung:
eine andere Alternative:
Wenn Sie die Bitmap drehen möchten, aber Angst vor OOM haben, können Sie auch eine NDK-Lösung verwenden, die ich hier erstellt habe
quelle
Wenn Sie die Ansicht nur visuell drehen möchten, können Sie Folgendes verwenden:
quelle
Für Kotlin
Dadurch wird die Bildansicht gedreht, anstatt das Bild zu drehen
Auch wenn es eine Methode in der
View
Klasse ist. Sie können also so ziemlich jede Ansicht damit drehen.quelle
Leider glaube ich nicht, dass es das gibt. Die
Matrix
Klasse ist für alle Bildmanipulationen verantwortlich, unabhängig davon, ob sie sich drehen, schrumpfen / wachsen, schief laufen usw.http://developer.android.com/reference/android/graphics/Matrix.html
Ich entschuldige mich, aber ich kann mir keine Alternative vorstellen. Vielleicht kann es jemand anderes, aber als ich ein Bild manipulieren musste, habe ich eine Matrix verwendet.
Viel Glück!
quelle
Eine andere mögliche Lösung besteht darin, eine eigene benutzerdefinierte Bildansicht zu erstellen (z
RotateableImageView extends ImageView
Bildansicht ) ... und onDraw () zu überschreiben, um entweder die Zeichenfläche oder die Bitmaps zu drehen, bevor Sie erneut auf die Zeichenfläche zugreifen. Vergessen Sie nicht, die Zeichenfläche wieder herzustellen.Wenn Sie jedoch nur eine einzelne Instanz der Bildansicht drehen möchten, sollte Ihre Lösung gut genug sein.
quelle
ohne Matrix und animiert:
quelle
Schreiben Sie dies einfach in Ihr onactivityResult
quelle
Versuchen Sie, diesen Code zu 100% zu verwenden.
Klicken Sie beim Drehen auf den folgenden Code:
quelle
Anstatt das Bild in eine Bitmap zu konvertieren und es dann zu drehen, versuchen Sie, die direkte Bildansicht wie im folgenden Code zu drehen.
quelle
Befolgen Sie die nachstehende Antwort, um eine Bildansicht kontinuierlich zu drehen
Wenn Sie auf die Schaltfläche "Drehen" klicken
quelle
Wenn Sie ein Bild um 180 Grad drehen möchten, geben Sie diese beiden Werte in das Bildansichts-Tag ein: -
Erläuterung: - scaleX = 1 und scaleY = 1 stellen den normalen Zustand dar. Wenn wir jedoch -1 auf die Eigenschaft scaleX / scaleY setzen, wird sie um 180 Grad gedreht
quelle
wie benutzt man?
quelle
Sie können einfach das Rotationsatribute von ImageView verwenden
Unten finden Sie das Attribut von ImageView mit Details aus der Android-Quelle
quelle