Android
8.GRÁFICOS
Página 10 de 25
int color=Color.argb(100,100,0,0);
SpecialView view1=new SpecialView(this,color,texto);
LayoutParams params= new LayoutParams(w,h);
view1.setLayoutParams(params);
l.addView(view1);
// define segundo objeto View
w=400;
h=200;
texto="Anchura "+w+", Altura "+h;
color=Color.argb(100,0,100,0);
SpecialView view2=new SpecialView(this,color,texto);
params=new LayoutParams(w,h);
view2.setLayoutParams(params);
ll.addView(view2);
// define tercer objeto view
w=350;
h=350;
texto="Anchura "+w+", Altura "+h;
color=Color.argb(100,0,0,100);
SpecialView view3=new SpecialView(this,color,texto);
params=new LayoutParams(w,h);
view3.setLayoutParams(params);
ll.addView(view3);
}
// clase que extiende a View.
//Escribe un texto y un color de fondo
class SpecialView extends View{
int color;
String texto;
public SpecialView(Context context,
int color,String texto) {
super(context);
this.color=color;
this.texto=texto;
}
protected void onDraw(Canvas canvas){
canvas.drawColor(color);
Paint paint=new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.BLACK);
paint.setTextSize(25);
canvas.drawText(texto, 50, 50, paint);
}
}
}
El resultado se ve en la figura 8.11. El primer objeto view tiene una anchura de 480 pixeles, igual a la de la pantalla. Esta anchura la hemos obtenido a partir de las dimensiones del layout (en este caso, de la pantalla completa), almacenándolas en un rectángulo usando el método getWindowVisible DisplayFrame(Rectwindow):
Rect window=new Rect();
ll.getWindowVisibleDisplayFrame(window);
int w = window.width();
Los otros dos objetos tienen anchuras de 400 y 300 pixeles, respectivamente, y distintas alturas.
Figura 8.11. Controlando anchura y altura de los gráficos con LayoutParams.