studio programacion móviles desarrollo curso aplicaciones advanced android android-layout android-canvas

móviles - manual de programacion android pdf



Comprender cómo funcionan realmente las coordenadas drawRect o drawing en Android (3)

Estoy tratando de dibujar un rectángulo sobre un lienzo y estoy enfrentando problemas para entender la profundidad del dibujo del rectángulo de Android. He leído tutoriales y todos los posibles pero estoy atascado.

Aquí en la imagen, el rectángulo rojo es mi objetivo.

Independientemente de cualquier tamaño de rectángulo, necesito dibujar el bit de rectángulo rojo sobre la base y en el centro del rectángulo. La peor pesadilla que estoy enfrentando aquí es entender las coordenadas X, Y, Ancho y Altura.

¿Alguien puede explicar cómo funcionan esas matemáticas? En algún momento subimos, Y llega a muy pequeñas pero las mismas coordenadas de ancho son mayores. Y nunca puedo justificar correctamente el rectángulo interior rojo. En alguna pantalla funciona bien en otra, falla. El rectángulo rojo a veces sale del rectángulo padre.

La agenda es entender cómo funcionan las coordenadas y garantizar la integridad del rectángulo rojo interior

Será genial obtener una explicación basada en un ejemplo. Estoy usando-

void drawRect(float left, float top, float right, float bottom, Paint paint)

a dibujar el rectángulo


Esto tendrá sentido.

float left = 100, top = 100; // basically (X1, Y1) float right = left + 100; // width (distance from X1 to X2) float bottom = top + 100; // height (distance from Y1 to Y2)

Así

RectF myRectum = new RectF(left, top, right, bottom); canvas.drawRect(myRectum, myPaint);


X corre horizontalmente, de izquierda a derecha. Y se ejecuta verticalmente, de arriba a abajo. Es exactamente lo mismo que en tus gráficos. Entonces (0/0) está arriba a la izquierda.

Cuando subes "arriba", por supuesto, se hará más pequeño, ya que crece de arriba a abajo.

Debe prestar atención a la disposición de elementos como ListViews, ya que estos darán un lienzo parcial (o nuevo, no se puede contar) a sus vistas que se dibujan. Estas vistas tendrán 0x0 en su propia posición superior / izquierda. Si necesita el valor absoluto, deberá llamar posteriormente a View.getLocationOnScreen() y calcular las compensaciones usted mismo.


canvas.drawRect(left,top,right,bottom,paint);

En esto

  1. izquierda: distancia del lado izquierdo de rectangular desde el lado izquierdo del lienzo.

  2. arriba: distancia del lado superior del rectangular desde el lado superior del lienzo

  3. derecha: distancia del lado derecho de rectangular desde el lado izquierdo del lienzo.
  4. abajo: Distancia del lado inferior del rectángulo desde el lado superior del lienzo.