Rotar de forma programable o dibujar

<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/your_drawable" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" /> 

Quiero rotar programaticamente el dibujable.

¿Cómo debo hacer eso?

Aquí está mi devolución de llamada

 private class RotateListener implements RotateGestureDetector.OnRotateGestureListener{ @Override public boolean onRotate(MotionEvent event1, MotionEvent event2, double deltaAngle) { return true; } } 

El deltaangle no más de 0.1, no estoy seguro de cuál es el valor del extracto.

El código siguiente gira un ImageView alrededor de su centro:

 ImageView myImageView = (ImageView)findViewById(R.id.my_imageview); AnimationSet animSet = new AnimationSet(true); animSet.setInterpolator(new DecelerateInterpolator()); animSet.setFillAfter(true); animSet.setFillEnabled(true); final RotateAnimation animRotate = new RotateAnimation(0.0f, -90.0f, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f); animRotate.setDuration(1500); animRotate.setFillAfter(true); animSet.addAnimation(animRotate); myImageView.startAnimation(animSet); 

Aquí está una buena solución para poner un dibujado giratorio para una imageView:

 Drawable getRotateDrawable(final Bitmap b, final float angle) { final BitmapDrawable drawable = new BitmapDrawable(getResources(), b) { @Override public void draw(final Canvas canvas) { canvas.save(); canvas.rotate(angle, b.getWidth() / 2, b.getHeight() / 2); super.draw(canvas); canvas.restore(); } }; return drawable; } 

uso:

 Bitmap b=... float angle=... final Drawable rotatedDrawable = getRotateDrawable(b,angle); root.setImageDrawable(rotatedDrawable); 

Otra alternativa:

 private Drawable getRotateDrawable(final Drawable d, final float angle) { final Drawable[] arD = { d }; return new LayerDrawable(arD) { @Override public void draw(final Canvas canvas) { canvas.save(); canvas.rotate(angle, d.getBounds().width() / 2, d.getBounds().height() / 2); super.draw(canvas); canvas.restore(); } }; } 

También, si desea girar el mapa de bits, pero miedo de OOM, puede utilizar una solución NDK he hecho aquí

Puesto que usted está intentando utilizar los Detectores de Gestos Android de Almero, decidí hacer lo mismo para encontrar una solución apropiada:

 public class MainActivity extends Activity { private RotateGestureDetector mRotateDetector; private float mRotationDegrees = 0.f; private static final float ROTATION_RATIO = 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRotateDetector = new RotateGestureDetector(getApplicationContext(), new RotateListener()); } @Override public boolean onTouchEvent(MotionEvent event) { mRotateDetector.onTouchEvent(event); return super.onTouchEvent(event); } private class RotateListener extends RotateGestureDetector.SimpleOnRotateGestureListener { @Override public boolean onRotate(RotateGestureDetector detector) { mRotationDegrees -= detector.getRotationDegreesDelta(); ImageView v = (ImageView) findViewById(R.id.imageView); // For NineOldAndroids library only! ViewHelper.setRotation(v, mRotationDegrees * ROTATION_RATIO); // For HONEYCOMB and later only! v.setRotation(mRotationDegrees * ROTATION_RATIO); return true; } } } 

Funciona bien para mí (soy capaz de girar el ImageView con gesto de rotación de dos dedos NOTA: No se olvide de elegir la llamada de método de rotación adecuada.Comenté a ambos para llamar su atención.

ROTATION_RATIO es sólo un multiplicador para acelerar una respuesta de rotación en el movimiento de mis dedos. Puede utilizar cualquier eje de rotación (setRotation (), setRotationX () y setRotationY ()) métodos para una vista.

Para habilitar el soporte de este código en dispositivos Android con nivel de API inferior a 11 (dispositivos pre-Honeycomb), puede acoplar la biblioteca NineOldAndroid.

  • Android Instrumentación Botón HOME
  • Rotación de la imagen YUV420 / NV21 en android
  • Detectar algoritmo de giro de 360 ​​grados
  • SetRotationY () width API10 en Android
  • Zoom de Android y rotación de la vista de imagen
  • Cómo hacer menú giratorio
  • Android Animated Vector Drawable: cambia el grado de rotación en tiempo de ejecución
  • -webkit-transform no funciona en la vista web de Android
  • Comportamiento extraño con el sensor de orientación de Android
  • Android girar imageview, no puedo establecer la posición final de imageview en onAnimationEnd ()
  • Comprensión adicional setRetainInstance (true)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.