Listado completo de tutoriales
40 - Dibujar: óvalosYa se encuentra disponible el nuevo tutorial para aprender android con el nuevo entorno Android Studio propuesto por Google y que remplaza a Eclipse. |
Dibujar un óvalo que ocupe toda la pantalla y un círculo en su interior.
1 - Creamos un proyecto llamado: proyecto039
Lo almacenamos en el paquete: com.androidya.proyecto039
Borramos el TextView que agrega automáticamente el plug-in de Eclipse y difinimos el id del RelativeLayout con el valor: @+id/layout1:
Ahora codificamos la clase donde se encuentra toda la lógica:
package com.androidya.proyecto039; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.RectF; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.RelativeLayout; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.layout1); Lienzo fondo = new Lienzo(this); layout1.addView(fondo); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } class Lienzo extends View { public Lienzo(Context context) { super(context); } protected void onDraw(Canvas canvas) { canvas.drawRGB(255, 255, 255); int ancho = canvas.getWidth(); int alto = canvas.getHeight(); Paint pincel1 = new Paint(); pincel1.setARGB(255, 0, 0, 0); pincel1.setStrokeWidth(5); pincel1.setStyle(Style.STROKE); RectF rectangulo1 = new RectF(0, 0, ancho, alto); canvas.drawOval(rectangulo1, pincel1); int menor; if (ancho < alto) menor = ancho; else menor = alto; pincel1.setStyle(Style.FILL); pincel1.setARGB(255, 255, 255, 0); canvas.drawCircle(ancho / 2, alto / 2, menor / 2, pincel1); } } }
Para ocultar la barra del título y la barra superior debemos hacer lo siguiente en el método onCreate:
@Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.layout1); Lienzo fondo = new Lienzo(this); layout1.addView(fondo); }
En el método onDraw pintamos el fondo de blanco y obtenemos el ancho y alto de la pantalla:
protected void onDraw(Canvas canvas) { canvas.drawRGB(255,255,255); int ancho=canvas.getWidth(); int alto=canvas.getHeight();
Seguidamente creamos el objeto de la clase Paint y configuramos el color, grosor de línea y estilo:
Paint pincel1=new Paint(); pincel1.setARGB(255,0,0,0); pincel1.setStrokeWidth(5); pincel1.setStyle(Style.STROKE);
Creamos un objeto de la clase RectT pasando como dato la coordenada superior izquierda del óvalo y la coordenada inferior derecha del mismo (teniendo en cuenta que el óvalo se dibujará en ese rectángulo imaginario que indicamos con dichas coordenadas):
RectF rectangulo1=new RectF(0,0,ancho,alto); canvas.drawOval(rectangulo1, pincel1);
Obtenemos el valor menor del ancho y alto del dispositivo:
int menor; if (ancho<alto) menor=ancho; else menor=alto;
Configuramos ahora el pincel para dibujar el círculo y lo dibujamos:
pincel1.setStyle(Style.FILL); pincel1.setARGB(255, 255, 255, 0); canvas.drawCircle(ancho/2, alto/2, menor/2, pincel1); }
La vista previa de la aplicación es:
Este proyecto lo puede descargar en un zip desde este enlace: proyecto039.zip