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)

  • Android Rotación de MapView
  • Android: gira todo el diseño
  • ¿Por qué no funciona setVisibility después de animar una vista?
  • OnCreate no se llama cuando la pantalla gira - Android
  • Android 1.6 Rotación de la cámara?
  • ¿Cómo manejar pegatinas con redimensionar y rotar la funcionalidad?
  • Android, ayuda a girar la imagen en el tacto
  • Cómo aumentar la velocidad de rotación en android?
  • Rotar una superficie de la cámaraVer a retrato
  • Deshabilitar y habilitar cambios de orientación en una actividad en Android mediante programación
  • Cómo girar un drawable con anti-aliasing habilitado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.