¿Cómo se puede girar un Drawable
desde un recurso cuando se dibuja? Por ejemplo, me gustaría dibujar una flecha y poder rotarla para mirar en diferentes direcciones cuando se dibuja?Girar un dibujo en Android
Respuesta
Es necesario utilizar las funciones de mapa de bits y la clase Canvas para preparar dibujable:
Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.image2);
Bitmap bmResult = Bitmap.createBitmap(bmpOriginal.getWidth(), bmpOriginal.getHeight(), Bitmap.Config.ARGB_8888);
Canvas tempCanvas = new Canvas(bmResult);
tempCanvas.rotate(90, bmpOriginal.getWidth()/2, bmpOriginal.getHeight()/2);
tempCanvas.drawBitmap(bmpOriginal, 0, 0, null);
mImageView.setImageBitmap(bmResult);
En este ejemplo de código se produce una rotación de 90 grados sobre el centro de la imagen.
OK, si necesita hacer una imagen semitransparente o necesita una función de zoom, también puede consultar este http://stackoverflow.com/questions/4688306/how-can-i-make-image-opaque-to-some- nivel/4689624 # 4689624 – Zelimir
Funciona bien si el mapa de bits original es cuadrado:) .... ¿y si no lo es? – Jay
Funciona bien para mí también. ¿Cuál es el problema que encuentras? – Zelimir
esencialmente este: enlace
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
fuente:
http://developer.android.com/guide/topics/graphics/2d-graphics.html#tween-animation
¡No es lo que quería el asker, esto gira entre una serie de imágenes, lo que se quería era una rotación plana de una sola imagen! – fredley
En realidad, puede realizar rotaciones (en un único Drawable) con una animación interpolada. http://developer.android.com/guide/topics/resources/animation-resource.html#Tween – edthethird
Ed, gracias por el apoyo. –
esencialmente que se puede reducir a: hacer un (n inversa) la transformación de lona en lugar de transformar dibujable
private BitmapDrawable drawable; // or Drawable
protected void onDraw(Canvas canvas) { // inherited from View
//...
canvas.save();
canvas.rotate(degrees, pivotX, pivotY);
drawable.draw(canvas);
canvas.restore();
//...
}
si tiene BitmapDrawable puede ser deseable para aumentar la calidad de la producción mediante el establecimiento de antialiasing
drawable.setAntialias(true);
creo que esta es la solución más eficiente por ahora –
En realidad, canvas.rotate() se debe hacer _antes de dibujar el dibujable. – Ridcully
¿No te pierdes la implementación de la función onMeasure? –
La respuesta aceptada no funciona para mí. No tengo una imagen cuadrada, así que cambié su código un poco.
private Bitmap rotateDrawable(@DrawableRes int resId) {
Bitmap bmpOriginal = BitmapFactory.decodeResource(getResources(), resId);
Bitmap bmpResult = Bitmap.createBitmap(bmpOriginal.getHeight(), bmpOriginal.getWidth(), Bitmap.Config.ARGB_8888);
Canvas tempCanvas = new Canvas(bmpResult);
int pivot = bmpOriginal.getHeight()/2;
tempCanvas.rotate(90, pivot, pivot);
tempCanvas.drawBitmap(bmpOriginal, 0, 0, null);
return bmpResult;
}
mImageView.setImageBitmap(rotateDrawable(R.drawable.some_image));
- 1. Girar imagen en android
- 2. Girar mapa de bits en Android Canvas
- 3. Android Animate Girar
- 4. cámara Android girar
- 5. Android - Pantalla de fragmento girar
- 6. Android dibujo pintura
- 7. Girar un mapa de bits guardado en Android
- 8. ¿Cómo girar un icono de Android en su punto central?
- 9. Girar un pivote de imagen en el centro - Android
- 10. Ruta de dibujo de Android
- 11. Caché de dibujo de Android
- 12. Arrastrar y soltar + dibujo personalizado en Android
- 13. Dibujo de Android en SurfaceView y Canvas
- 14. ¿Puedo usar varias formas en un dibujo extraíble de Android?
- 15. Girar una vista de video de Android
- 16. Girar un vector (matriz)
- 17. Girar un Swing JLabel
- 18. Android Girar imagen antes de guardar
- 19. Dibujo de bitmaps translúcidos usando Canvas (Android)
- 20. Android - caché de dibujo - ¿cuándo es útil?
- 21. Girar una imagen en Android sin OutOfMemoryError o downscaling
- 22. Cuadro de dibujo de Android rectángulo
- 23. Matplotlib: hacer girar un parche
- 24. C++/OpenGL - Girar un rectángulo
- 25. Imagen Girar animación Looping no funciona en android
- 26. Android OpenGL ES 2, cuadros de dibujo
- 27. Girar imagen en UIImageView
- 28. Aplicaciones de dibujo con la yema del dedo en Android?
- 29. Dibujo (filtrado) 100k + puntos a MapView en Android
- 30. Cómo optimizar el dibujo de Lienzo - drawBitmap en Android?
posible duplicado de [¿Cómo se dibuja una flecha que indica la dirección de conducción en MapView?] (Http://stackoverflow.com/questions/4331794/how-can-i-draw-an-arrow-showing -the-driving-direction-in-mapview) – Jonas
La pregunta es bastante diferente, pero creo que la respuesta puede estar relacionada. – Computerish