Android: gira el lienzo alrededor del centro de la pantalla

Estoy tratando de girar el lienzo alrededor del centro de la pantalla, para obtener las coordenadas (0,0) en la parte inferior derecha.

Así es como lo hago:

Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); canvas.rotate(180, width/2, height/2); 

Se rota correctamente, y todo es perfecto en el AVD con API nivel 17. Pero en el AVD con API nivel 8 la coordenada (0,0) aparece en el lugar equivocado. Antes de la rotación de la imagen se ajusta toda la pantalla en este dispositivo también, pero ahora se ve así:

Introduzca aquí la descripción de la imagen

¿Qué está causando el problema?

*¡EDITAR!

El problema se resuelve girando el lienzo alrededor de su propio punto medio:

 canvas.rotate(180,canvas.getWidth()/2,canvas.getHeight()/2); 

Pero aún así, ¿por qué la versión anterior no funciona con las API más antiguas?

One Solution collect form web for “Android: gira el lienzo alrededor del centro de la pantalla”

No siempre es necesario que el Canvas y la Display tengan el mismo tamaño. Display.getWidth() está obsoleto y se sugiere utilizar Display.getSize() lugar. De la documentación :

Obtiene el tamaño de la pantalla, en píxeles.

Tenga en cuenta que este valor no debe utilizarse para calcular diseños, ya que un dispositivo típicamente tendrá una decoración de pantalla (como una barra de estado) a lo largo de los bordes de la pantalla que reduce la cantidad de espacio de la aplicación disponible del tamaño que se devuelve aquí. Los diseños deben utilizar el tamaño de la ventana.

Por lo tanto, en el caso de transformación de matriz de canvas , siempre use el canvas como referencia en lugar de la pantalla o ventana, porque el lienzo daría el valor exacto. Así que para girar el lienzo alrededor del centro, necesita el centro del canvas .

El centro del lienzo es (canvas.getWidth()/2 , canvas.getHeight()/2)

  • Algunos fragmentos se pierden en rotación
  • La rotación de Css no se aplica en android (phonegap)
  • Estoy tratando de rotar imagebutton a 360 haciendo clic en él, pero no se puede girar?
  • Android Animated Vector Drawable: cambia el grado de rotación en tiempo de ejecución
  • Cómo rotar el mapa de bits correctamente?
  • Cómo girar un icono de Android en su punto central?
  • Android Mejor forma de evitar Diálogos para descartar después de una rotación del dispositivo
  • La música se detiene cuando la pantalla gira utilizando MediaPlayer en Android
  • ¿Por qué se rota una imagen capturada con la intención de la cámara en algunos dispositivos de Android?
  • Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación
  • La forma más simple de rotar correctamente MapView en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.