voltear sola samsung porque pantalla invertir imagen grados girar gira espejo como celular android rotation android-canvas draw rect

sola - Cómo rotar un rectángulo dibujado sobre lienzo en Android?



porque no gira la pantalla de mi samsung (2)

Encontré mi propia respuesta. Use el siguiente código

Rect rect = new Rect(); paint.setColor(text_color); paint.setStyle(Style.FILL); paint.getTextBounds(text, 0, text.length(), rect); canvas.translate(xPosition + position.getX(), yPosition + position.getY()); canvas.translate(-(xPosition + position.getX()), -(yPosition + position.getY())); canvas.rotate(getDegreesFromRadians(angle), xPosition + position.getX() + rect.exactCenterX(), yPosition + position.getY() + rect.exactCenterY()); canvas.drawText(text, xPosition + position.getX(), yPosition + position.getY(), paint); paint.getTextBounds(text, 0, text.length(), rect); canvas.translate(xPosition + position.getX(), yPosition + position.getY()); paint.setColor(Color.BLUE); paint.setStyle(Style.STROKE); paint.setStrokeWidth(4); rect = new Rect(rect.left - 10, rect.top - 10, rect.right + 10, rect.bottom + 10); canvas.drawRect(rect, paint);

El asunto es que todo el lienzo se está girando para rotar el texto. Entonces solo necesito dibujar el rectángulo después de la rotación del lienzo.

Estoy dibujando un texto en el lienzo de Android con la siguiente pieza de código

Rect rect = new Rect(); paint.getTextBounds(text, 0, text.length(), rect); canvas.translate(xPosition + position.getX(), yPosition + position.getY()); paint.setColor(Color.BLUE); paint.setStyle(Style.STROKE); canvas.drawRect(rect, paint); paint.setStyle(Style.FILL); paint.setColor(text_color); canvas.translate(-(xPosition + position.getX()), -(yPosition + position.getY())); canvas.rotate(getDegreesFromRadians(angle), xPosition + position.getX() + rect.exactCenterX(), yPosition + position.getY() + rect.exactCenterY()); canvas.drawText(text, xPosition + position.getX(), yPosition + position.getY(), paint);

Este código se encarga de la rotación del texto y funciona bien. Estoy dibujando un rectángulo azul alrededor del texto usando el código anterior. Ahora mi problema es que el rectángulo no gira junto con el texto. Aún permanece igual. ¿Hay alguna manera de rotar el rectángulo dibujado en el lienzo de Android?


por favor use

canvas.save(); canvas.rotate(); //stuff to draw that should be rotated canvas.restore();

de lo contrario, tienes que compensar cada rotación después