Compreender como as coordenadas de desenho e desenho realmente funcionam no Android

Estou a tentar desenhar um rectângulo sobre uma tela e estou a enfrentar problemas para entender a profundidade do desenho do rectângulo do Android. Li tutoriais e todos os possíveis, mas estou preso.

Aqui na imagem, o rectângulo vermelho é o meu alvo. enter image description here

independentemente de qualquer tamanho de rectângulo, preciso desenhar o bit de rectângulo vermelho acima da base e no meio do rectângulo. O pior pesadelo que estou a enfrentar aqui é compreender a largura e a altura X,Y coordenada.

Alguém pode explicar como é que a matemática funciona, às vezes subimos, e chegamos a Coordenadas muito pequenas, mas as mesmas coordenadas são mais altas. E nunca sou capaz de justificar o rectângulo interior vermelho properly.In alguma tela funciona bem em algum outro ele falha. O retângulo vermelho às vezes sai do retângulo pai.

Agenda é entender como as coordenadas funcionam e garantir a integridade do retângulo vermelho interior

Seria óptimo ter uma explicação baseada num exemplo. Estou a usar ...
void drawRect(float left, float top, float right, float bottom, Paint paint)

desenhar o rectângulo

Author: Abhishek Choudhary, 2013-10-19

3 answers

X corre horizontalmente, da esquerda para a direita. O Y corre verticalmente, de cima para baixo. É exactamente o mesmo que nos teus gráficos. Então (0/0) está em cima à esquerda.

Quando fores "para cima", claro que vais ficar mais pequeno, à medida que cresce de cima para baixo.

Você tem que prestar atenção à apresentação de elementos como ListViews, estes irão dar uma área parcial (ou nova, você não pode dizer) para as suas vistas que são desenhadas. Estas vistas terão 0x0 em a sua própria posição em cima/esquerda. Se necessitar de: absolute you have to subsequently call {[[0]} and calculate offets yourself.

 14
Author: meredrica, 2014-01-20 18:19:09

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

Neste

  1. Esquerda: distância do lado esquerdo de retangular do lado esquerdo de tela.

  2. Superior: distância do lado superior do rectângulo em relação ao lado superior do área de desenho

  3. direita: distância do lado direito do rectângulo em relação ao lado esquerdo do tela.
  4. fundo: distância do lado inferior do rectângulo em relação ao lado superior da tela.
 29
Author: Savan, 2018-05-29 12:26:22
Isto vai fazer 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)

Assim

RectF myRectum = new RectF(left, top, right, bottom);
canvas.drawRect(myRectum, myPaint);
 17
Author: TheRealChx101, 2016-02-19 14:45:15