Canvas Android è l’API grafica 2D che ti permette di disegnare forme, testo e immagini direttamente su una Bitmap all’interno delle tue app. In questa guida pratica vedrai come funziona passo dopo passo, usando Java e Android Studio per creare un esempio completo e facilmente riutilizzabile. Imparerai i concetti chiave per controllare superficie di disegno, colori e stile, così da realizzare interfacce e componenti grafici personalizzati. Continua a leggere per scoprire come sfruttare al meglio Canvas Android nei tuoi progetti.

Android Canvas: Disegnare Grafica 2D su Bitmap

Scopri come usare Android Canvas per creare grafica 2D su Bitmap: impara a disegnare forme, testo e percorsi nelle tue app Android.

Cosa imparerai:

  • Cos’è la classe Canvas e come funziona con Bitmap e Paint
  • Come creare un progetto Android con Canvas in Java
  • Come disegnare cerchi, rettangoli, testo e Path
  • Come visualizzare la grafica in una ImageView

La classe Android Canvas è l’API di base per disegno 2D su una Bitmap. Offre metodi come drawCircle(), drawRect() e drawText(), che usi insieme a Paint per controllare colori e stile. In pratica, il Canvas è una superficie di disegno in memoria: ci tracci forme e testo e poi mostri il risultato a schermo. Questa combinazione Canvas + Bitmap è molto flessibile per creare grafica personalizzata, overlay, grafici e semplici giochi 2D.


Cos’è Android Canvas e la grafica 2D

Canvas = superficie di disegno  |  Bitmap = memoria immagine  |  Paint = pennello/stile

In Android, la classe Canvas rappresenta una superficie su cui puoi tracciare forme, linee, testo e immagini. Di solito colleghi il Canvas a una Bitmap: in questo modo disegni in memoria e poi mostri il risultato in una ImageView o in una View personalizzata. L’oggetto Paint definisce colore, spessore, riempimento e altre proprietà grafiche usate in tutte le chiamate di disegno.


Struttura del progetto di esempio

Nel progetto di esempio usi due file principali: il layout activity_main.xml e la classe MainActivity.java.

activity_main.xml

Il layout è minimale: contiene una sola ImageView centrata, che mostrerà la Bitmap creata via codice.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img" />

</LinearLayout>

MainActivity.java

La logica principale è in MainActivity.java. Qui crei la Bitmap, inizializzi il Canvas collegato e usi Paint per disegnare tutti gli elementi grafici.

package com.example.canvas.activities;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.example.canvas.R;
import android.widget.*;
import android.graphics.*;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView img = findViewById(R.id.img);

        Bitmap bm = Bitmap.createBitmap(600, 600, Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(bm);

        canvas.drawColor(Color.MAGENTA);

        Paint paint = new Paint();

        paint.setColor(Color.YELLOW);
        canvas.drawCircle(300, 300, 200, paint);

        paint.setColor(Color.BLACK);
        canvas.drawCircle(300, 300, 100, paint);

        paint.setColor(Color.BLACK);
        canvas.drawRect(0, 60, 250, 0, paint);

        paint.setColor(Color.WHITE);
        paint.setTextSize(30);
        canvas.drawText("apptutorial.link", 30, 30, paint);
        canvas.drawLine(245, 40, 20, 40, paint);

        Point point_1 = new Point(300, 250);
        Point point_2 = new Point(250, 350);
        Point point_3 = new Point(350, 350);

        Path path = new Path();
        path.moveTo(point_1.x, point_1.y);
        path.lineTo(point_2.x, point_2.y);
        path.lineTo(point_3.x, point_3.y);
        path.close();
        paint.setColor(Color.WHITE);
        canvas.drawPath(path, paint);

        img.setImageBitmap(bm);
    }
}

Grafica 2D con Android Canvas: esempio

In questo esempio il Canvas riempie la Bitmap con uno sfondo magenta. Al centro disegna un grande cerchio giallo e, sopra, un secondo cerchio nero più piccolo. In alto compaiono un rettangolo nero, il testo bianco "apptutorial.link" e una linea bianca che lo sottolinea. Infine, con un oggetto Path, viene creato un triangolo bianco sopra il cerchio centrale. Insieme, questi elementi mostrano come combinare forme semplici per ottenere una grafica 2D personalizzata su Android.

Screenshot of an Android app output showing a Canvas 2D drawing example: black background with colored geometric shapes — a red circle, a blue rectangle, and white text label "Android Canvas". Clean, minimal, technical style resembling an Android emulator screen output.
Output dell’esempio Android Canvas: sfondo magenta, cerchio giallo, cerchio nero, triangolo bianco e testo

Conclusioni su Android Canvas e grafica 2D

In questo tutorial hai visto come usare questa classe per disegnare su una Bitmap con l’aiuto di Paint, creando una semplice scena grafica 2D.

Prossimi passi:

Da qui puoi esplorare altre API come drawBitmap(), drawArc(), drawOval() o il disegno su View personalizzate, per creare interfacce e animazioni più complesse. Per approfondire, consulta le altre guide su Canvas nella sezione grafica di apptutorial.link, dove trovi esempi più avanzati e casi d’uso pratici.