Android

Android


8.GRÁFICOS

Página 10 de 25

import android.view.ViewGroup.LayoutParams;

import android.widget.LinearLayout;

public class LayoutParametros extends Activity {

      @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        LinearLayout ll=

                  (LinearLayout)findViewById(R.id.layout);

        // obtiene dimensiones del layout en un rectangulo.

        // en este caso, las dimensiones de la pantalla

        Rect window=new Rect();

        ll.getWindowVisibleDisplayFrame(window);

        // define un objeto View con anchura w y altura h

        // En este caso la anchura de la pantalla

        int w = window.width();

        int h=100;

        String texto="Anchura "+w+", Altura "+h;

        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.

Ir a la siguiente página

Report Page