sola - ¡Rotar una imagen alrededor de un punto especificado no funciona!(Androide)
rotar imagen (2)
Estoy rotando un ImageView con postRotate (grados de flotación, float px, float py), estableciendo px y py en algunos valores diferentes, incluidos (0,0) y (imgView.getHeight (), imgView.getWidth ()) pero se niega a girar alrededor de cualquier otro punto que no sea el centro. Me pregunto si tiene algo que ver con el hecho de que mi gravedad es el centro de LinearLayout.
Mi diseño:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:id="@+id/imageTraj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="matrix"
android:src="@drawable/impactangle" />
Cómo estoy rotando la imagen:
matrix.postRotate(degrees,imageView.getHeight(),imageView.getWidth());
imageView.setImageBitmap(Bitmap.createBitmap(imageScaled, 0, 0,
imageScaled.getWidth(), imageScaled.getHeight(), matrix, true));
PD. He notado que hay algunas preguntas similares, pero ninguna de ellas tiene respuestas adecuadas.
Estoy usando un ImageView
personalizado donde establezco la rotación del ángulo.
public class CompassImage extends ImageView {
private float angleRotation;
public CompassImage(Context context) {
super(context);
}
public CompassImage(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CompassImage(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setAngleRotation(float angleRotation) {
this.angleRotation = angleRotation;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
Rect clipBounds = canvas.getClipBounds();
canvas.save();
canvas.rotate(angleRotation, clipBounds.exactCenterX(), clipBounds.exactCenterY());
super.onDraw(canvas);
canvas.restore();
}
}
Si juegas con clipBounds, puede ser útil.
Un ligero "truco", probablemente podría ajustar el tamaño de la imagen usando algo como Paint.net o Gimp, dependiendo de su sistema operativo. Eso haría que la imagen parezca girar en otro punto. Sin embargo, esta solución sería inútil si planea usar muchas imágenes. Este es un tutorial de cubo giratorio que usa OpenGL.