Android 2D
Gráficos
en
dos
dimensiones
10.1
El
método
onDraw()
Los
botones,
como
el
resto
de
vistas,
poseen
su
propia
implementación
del
método
onDraw().
Este
método
se
ejecuta
automáticamente
cuando
se
representa
la
vista.
Veamos
un sencillo
ejemplo
que
dibuja
una
bandera
belga:
/src/MyButton.java
package com.programming.android.prueba;
import
import
import
import
import
android.content.Context;
android.graphics.Canvas;
android.graphics.Color;
android.graphics.Paint;
android.widget.Button;
public class MyButton extends Button {
Paint paint = new Paint();
public MyButton(Contextcontext) {
super(context);
}
public void onDraw(Canvas canvas) {
paint.setColor(Color.BLACK);
canvas.drawRect(30, 10, 90, 100, paint);
paint.setColor(Color.YELLOW);
canvas.drawRect(30, 40, 90, 70, paint );
paint.setColor(Color.RED);
canvas.drawRect(30, 70, 90, 100, paint );
}
}
Comencemos
el
estudio
de
la
clase
MyButton
por
los
colores.
Los colores
en
Android
vienen
representados
como
enteros
en
forma
de
4
bytes:
alfa,
rojo,
verde
y
azul
(ARGB).
Cada
componente
está
comprendida
entre
0
y
255.
La
primera
mide
la
transparencia:
0
es
totalmente
transparente
y
255
totalmente
opaco. Para
las
demás,
0
significa
que
la
componente
no
contribuye
al
color
y
255
que
contribuye
al
100%.
Por
ejemplo,
el
azul
opaco
al
100%
es
0xFF0000FF,
y
el
verde
0xFF00FF00.
Para
utilizar
un
color
básico
puedes
recurrir
a
una
de
las
constantes
de
la
clase
Color:
int color = Color.WHITE;
Sin
embargo,
es
muy
recomendable
crear
recursos
de
color
en
el
archivo
colors.xml,
ya
que
pueden
ser
actualizados
cómodamente:
1
/res/values/colors.xml#F0F0F0
Para
acceder
al
recurso
de
color
desde
Java
es
necesario
hacer
lo
siguiente:
int color = getResources().getColor(R.color.background_color);
El
método
onDraw()
tiene
un
parámetro
de
tipo
Canvas,
que
es
el
marco
en
el
que
se
dibuja.
Para
dibujar es
necesario
instanciar
un
objeto
de
tipo
Paint
donde
se
especifica,
entre
otras
cosas,
el
color
de
la
pintura
y
el
ancho
de
la
brocha:
Paint paint = new Paint();
paint.setColor(Color.BLACK);
La
clase
Canvas
dispone
de
métodos
para
dibujar líneas,
rectángulos,
círculos,
etc.
El
prototipo
de
drawRect()
es
el
siguiente:
void drawRect (float left, float top, float right, float bottom, Paint paint);
donde
(left, top)
son
las
coordenadas
del
extremo
superior
izquierdo
y
(right,
bottom)
las
del
extremo
inferior
derecho
del rectángulo.
Por
ejemplo,
la
siguiente
instrucción
canvas.drawRect(30, 10, 90, 100, paint);
dibuja
un
rectángulo
cuyo
vértice
superior
izquierdo
está
en
(30,
10)
y
el
inferior
derecho
en
(90,
100):
El
método
onDraw()
dibuja
dos
rectángulos
más
sin...
Regístrate para leer el documento completo.