Dibujo 2D en Android
Dibujar líneas y polígonos en Android
De la misma manera que otros lenguajes permiten dibujar mediante paquetes o librerías, Android dispone de una librería que permite dibujar gráficos en 2D de forma sencilla. Los dibujos se basan en la clase Paint que representa el trazo, el cual, dispone de métodos para configurar el estilo del trazo y la clase Canvas que representa el lienzo y dispone de métodos que realizan los distintos trazados. A continuación algunos ejemplos de dibujo básicos.
Dibujar Líneas
El método drawLine permite realizar trazos introduciendo los datos numéricos que representan los puntos de coordenadas que indican el comienzo(x,y) y el fin del trazo (x,y).
Dibujo.java
package xip.midominio.com.dibujo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class Dibujo extends View {
Paint paint = new Paint();
public Dibujo(Context context){
super(context);
paint.setColor(Color.BLUE);
paint.setStrokeWidth(8);
}
public void onDraw(Canvas canvas){
canvas.drawLine(0,0,300,300,paint);
canvas.drawLine(0,300,300,0,paint);
}
}
Dibujar polígonos
El método drawRect permite realizar rectángulos introduciendo los puntos de coordenadas donde los dos primeros (x,y) indican el punto de inicio del rectángulo y los dos últimos (x,y) indican el punto final del rectángulo.
Dibujo.java
package xip.midominio.com.dibujo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class Dibujo extends View {
Paint paint = new Paint();
public Dibujo(Context context){
super(context);
paint.setColor(Color.BLACK);
paint.setStrokeWidth(10);
}
public void onDraw(Canvas canvas){
RectF rectF = new RectF(50,50,500,500);
canvas.drawRect(rectF,paint);
}
}
El método drawCircle permite realizar círculos introduciendo los puntos de coordenadas del centro del círculo (x,y) y el radio del círculo.
package xip.midominio.com.dibujo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class DibujarLineas extends View {
Paint paint = new Paint();
public DibujarLineas(Context context){
super(context);
paint.setColor(Color.BLUE);
paint.setStrokeWidth(8);
}
public void onDraw(Canvas canvas){
canvas.drawCircle(250,250,150,paint);
}
}
El método drawOval permite realizar figuras ovaladas introduciendo un objeto RectF. Aunque no es recomendable,es posible prescindir del rectángulo y añadir los datos directamente añadiendo la anotación de la API Lollipop.
package xip.midominio.com.dibujo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;
public class DibujarLineas extends View {
Paint paint = new Paint();
public DibujarLineas(Context context){
super(context);
paint.setColor(Color.BLUE);
paint.setStrokeWidth(8);
}
public void onDraw(Canvas canvas){
RectF oval = new RectF(1000,1200,280,280);
canvas.drawOval(oval,paint);
}
}
En caso de dibujar varias figuras con distintos colores es necesario establecer el color antes de la creación de cada figura.
package xip.midominio.com.dibujo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;
public class DibujarLineas extends View {
Paint paint = new Paint();
public DibujarLineas(Context context){
super(context);
paint.setColor(Color.BLUE);
paint.setStrokeWidth(8);
}
public void onDraw(Canvas canvas){
canvas.drawCircle(250,250,150,paint);
paint.setColor(Color.GREEN);
RectF oval = new RectF(1000,1200,280,280);
canvas.drawOval(oval,paint);
}
}
La llamada a la clase se realiza desde el método onCreate. Revisar los múltiples métodos de la clase Canvas desde la página oficial
MainActivity.java
package xip.midominio.com.dibujo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new Dibujo(this));
}
}
Para poder comentar es necesario iniciar sesión