Dibujar el texto verticalmente sobre lienzo
Me gustaría aprender cómo dibujar el texto vertical en el lienzo. Perdón por quizás pregunta estúpida, pero no puedo resolver este problema. Puedo hacerlo:
if (i ==10) { this_str2 = "0.00"; } canvas.save(); canvas.rotate(-90,190,90); canvas.drawText(this_str2, x_guide +50, drawSizes[1] + drawSizes[3] - (i * drawSizes[3] / 10) +20, paint); canvas.restore(); }
Pero no se muestra correctamente en la X y Y es cualquier otra solución a este problema 7
- Android ProgressBar personalizado no está girando
- ¿El sensor "Vector de Rotación de Juego" de Android ignora la rotación alrededor del eje vertical?
- Cómo utilizar el evento del sensor Android para determinar si el dispositivo está orientado hacia arriba o hacia abajo
- Android Mejor forma de evitar Diálogos para descartar después de una rotación del dispositivo
- Android Instrumentación Botón HOME
- LibGDX texturepacker rotación
- Estoy tratando de rotar imagebutton a 360 haciendo clic en él, pero no se puede girar?
- Cómo rotar vistas sobre el cambio de orientación sin volver a crear el diseño?
- LibGDX 1.5 girando sprite alrededor de su centro
- EditText duplicado en rotación
- Cómo rotar un lienzo en un punto específico usando android.graphics.Camera.rotateX (angle)
- Implementar un indicador de actividad giratoria similar a iOS en Android
- ¿Cómo manejar pegatinas con redimensionar y rotar la funcionalidad?
Pruebe este texto personalizado, no recuerdo dónde tomé si de (aquí en StackOverflow), si alguien recuerda, por favor, publique un enlace en los comentarios.
import android.content.Context; import android.graphics.Canvas; import android.text.TextPaint; import android.util.AttributeSet; import android.view.Gravity; import android.widget.TextView; public class VerticalTextView extends TextView { final boolean topDown; public VerticalTextView(Context context, AttributeSet attrs) { super(context, attrs); final int gravity = getGravity(); if (Gravity.isVertical(gravity) && (gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { setGravity((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP); topDown = false; } else topDown = true; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(heightMeasureSpec, widthMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); } @Override protected void onDraw(Canvas canvas) { TextPaint textPaint = getPaint(); textPaint.setColor(getCurrentTextColor()); textPaint.drawableState = getDrawableState(); canvas.save(); if (topDown) { canvas.translate(getWidth(), 0); canvas.rotate(90); } else { canvas.translate(0, getHeight()); canvas.rotate(-90); } canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop()); getLayout().draw(canvas); canvas.restore(); } }