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.

3 Solutions collect form web for “Rotar de forma programable o dibujar”

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 - ¿Cómo diseñar un tipo de diseño de Rotary Dialer / Rotary Dialer?
  • LibGDX texturepacker rotación
  • Cómo girar un icono de Android en su punto central?
  • Android: gira el lienzo alrededor del centro de la pantalla
  • Cómo rotar vistas sobre el cambio de orientación sin volver a crear el diseño?
  • OCR (tesseract), rotación inteligente para la imagen
  • Rotar ImageView en Android <Nivel de API 11
  • ¿Por qué se rota una imagen capturada con la intención de la cámara en algunos dispositivos de Android?
  • Cómo rotar un rectángulo dibujado en lienzo en Android?
  • Estoy tratando de rotar imagebutton a 360 haciendo clic en él, pero no se puede girar?
  • Cómo deshabilitar / evitar Fragment animaciones personalizadas después de la rotación de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.