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”
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);
}
}