Rotación de mapa de bits en punto fijo como una mano de reloj en SurfaceView
Tengo una imagen en carpeta para la mano del reloj. Quiero girarlo en punto fijo como una mano de reloj. He intentado debajo del código que gira la mano en la trayectoria circular alrededor de un punto fijo pero no como como la mano del reloj.
Matrix matrix = new Matrix(); matrix.reset(); matrix.preTranslate(0, 0); matrix.postRotate(angleRotation, -0, -0); matrix.postTranslate(240, 480); canvas.drawColor(Color.WHITE); canvas.drawBitmap(bitmap, matrix, null);
Estoy luchando durante horas para resolverlo. Cualquier ayuda será apreciada.
- Bitmap setPixels perderá el canal alfa cuando el fondo sea negro
- Extraer mapa de bits del vídeo en android
- El envío de entrada de ANR excedió el tiempo de espera en Android 4.4
- Cómo obtener la altura de la vista dentro del adaptador para crear bitmap de tamaño?
- El uso de getPixels () de la clase Bitmap de Android y cómo usarla
He intentado por debajo de los enlaces de ayuda, así sin éxito.
-
SurfaceView, dibuja la imagen y reduce el tamaño, gira la imagen
-
Android: Cómo girar un mapa de bits en un punto central
-
Cómo rotar un mapa de bits en Android acerca de imágenes de forma suave sin movimiento oscilatorio
- Cómo escalar mapas de bits en View.Canvas en Android?
- ¿Hay una manera de fijar el backgound de la barra de acción por la imagen en androide?
- Android procesamiento de imágenes de alta resolución
- Android: los mapas de bits cargados desde la galería se giran en ImageView
- BitmapFactory.decodeFile de memoria con imágenes 2400x2400
- Convertir la matriz de bytes de 4 bits en escala de grises a Bitmap Android
- Cambiar el tamaño de la imagen en la notificación de estilo bigpicture
- Android: ¿cómo administrar el tamaño de mapa de bits al dibujar a pantallas de diferentes tamaños?
Encontré la respuesta. Deje que px
y py
sean cualquier punto en el canvas
. bitmap.getWidth()/2
es punto medio a lo largo del ancho del mapa de bits. Puede ser cualquier punto para x cordinate
. Para y cordinate
lo he tomado como 10
. angleRotation
es el ángulo que es según requerido.
Entonces matrix.postTranslate(-bitmap.getWidth()/2, -10);
Es el punto de rotación .
A continuación se muestra el código.
Matrix matrix = new Matrix(); matrix.reset(); Paint paint = new Paint(); float px = 240; float py = 480; matrix.postTranslate(-bitmap.getWidth()/2, -10); matrix.postRotate(angleRotation); matrix.postTranslate(px, py); canvas.drawBitmap(bitmap, matrix, paint);
Por encima del código satisfacer mis necesidades. Modifíquelo según su necesidad.
Utilizo esto para girar mis mapas de bits.
private Bitmap rotateImage(Bitmap src,int degrees) { Matrix matrix = new Matrix(); matrix.postRotate(degrees); return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); }
- Show Dialog de ViewModel en Android MVVM Architecture
- Cómo animar rayas de pantalla completa moviéndose de izquierda a derecha