La clase Canvas (Lienzo) de Android es una superficie que nos permite pintar figuras, texto e imágenes utilizando para ello la clase Paint, esta clase nos permite definir parámetros como el color, estilo o grosor del trazado de un gráfico vectorial. Su uso es sencillo, primero hay que definir una clase que extienda de View la cual puede estar contenida dentro de la misma Activity (o fuera de ella); Y a continuación sobreescribir el método onDraw (Similar a lo que hacíamos en java desktop al sobreescribir paintComponent), dentro de onDraw, vamos describiendo las primitivas que queremos pintar con Paint y las vamos añadiendo al lienzo (Canvas) para pintarlas.
A continuación mostramos un ejemplo de lo explicado más arriba. Creamos un proyecto en Android Studio con la clase por defecto MainActivity y reemplazamos el código por el siguiente:
import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); MyCanvasView myCanvasView = new MyCanvasView(this); setContentView(myCanvasView); } private class MyCanvasView extends View { /** * Constructor de clase * */ public MyCanvasView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.WHITE);//color blanco canvas.drawPaint(paint);//pinta fondo //Texto paint.setColor(Color.RED); paint.setTextSize(42);//tamaño de texto //texto , X, Y, Paint canvas.drawText("Hola Mundo Cruel!!!", 10, 56, paint);//pinta texto //linea paint.setAntiAlias(true);//para evitar efecto sierra paint.setStyle(Paint.Style.STROKE);//estilo paint.setStrokeWidth(10);//grosor de linea paint.setColor(Color.BLUE); //x1 , y1, x2, y2 canvas.drawLine(0, 100, canvas.getWidth(), 100, paint); // rectangulo paint.setAntiAlias(true); paint.setColor(Color.RED); paint.setStyle(Paint.Style.FILL);//relleno // x, y, ancho , alto canvas.drawRect(40, 140, canvas.getWidth() - 40, 280, paint); // Circulo paint.setAntiAlias(true); paint.setColor(Color.GREEN); paint.setStyle(Paint.Style.STROKE);//borde paint.setStrokeWidth(3.6f); // centro X, centro Y, radio canvas.drawCircle(canvas.getWidth() / 2 , 400, 100, paint); //poligono Path path = new Path(); paint.setColor(Color.MAGENTA); paint.setStyle(Paint.Style.FILL); path.moveTo(canvas.getWidth() / 2, 550); path.lineTo(canvas.getWidth() / 2 + 100, 700); path.lineTo(canvas.getWidth() / 2 - 100, 700); path.close(); canvas.drawPath(path, paint); //imagen Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher );//Icono de android //imagen, X, Y canvas.drawBitmap(bmp,canvas.getWidth() / 2,760,paint); } } }//end Main
ejecutamos y podemos ver a continuación el resultado
enjoy!!!
En este tutorial crearemos un sencillo juego de memoria en lenguaje java. Necesitamos IDE Netbeans 7.x Editor de imágene[...]
Control de versiones: Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los eleme[...]
PlaceHolder: PlaceHolder es un atributo propio de HTML5 y es el texto que aparece dentro de un campo de texto (un JTextF[...]
Bienvenido a este artículo soy Jose Pedraza Desarrollador Web por más de 7 años, escribiré una serie de artículos para i[...]
Continuando con los tutoriales sobre LibGDX (Librería para el desarrollo de videojuegos), en esta ocasión veremos como e[...]
Segunda y ultima parte del post dedicado a la creación de un microservicio en lenguaje java utilizando el framework Spar[...]