Android Canvas

La classe Canvas ci permette di disegnare grafica 2D su una Bitmap, come linee, rettangoli,  testo e altro, tramite le chiamate draw e l’oggetto Paint per impostare colore e stile.
In questo esempio andremo a creare un oggetto Canvas associandolo alla Bitmap creata per poter così disegnare un immagine:

activity_main.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
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
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);

    }

}