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.

  • RotateAnimation sin duración
  • Rotación de la imagen YUV420 / NV21 en android
  • Fragmentos de Android que conservan datos
  • Animación giratoria androide
  • ¿Rotar imágenes alrededor de un círculo?
  • LibGDX 1.5 girando sprite alrededor de su centro
  • Rotar correctamente las imágenes web utilizando Picasso de Square
  • Cómo rotar el mapa de bits correctamente?
  • -webkit-transform no funciona en la vista web de Android
  • ¿Por qué no funciona setVisibility después de animar una vista?
  • Dibujar el texto verticalmente sobre lienzo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.