Android Studio 2019 Canvas Custom View Oluşturma, layouta ekleme
Androidde Textview, EditView gibi viewler bulunmaktadır. Siz de kendi viewinizi yapabilir, projeye aynen bu bileşenleri eklediğiniz gibi ekleyebilirsiniz. Bu bileşenler layout veya content xml sayfalarından eklenmektedir.
Bu örneğimizde bir CustomView.java dosyası oluşturacak ve bunun içerisinde canvas ile bir dikdörtgen çizdireceğiz. Canvas sayesinde istediğiniz çizimleri yapabilir, çizim uygulamaları oluşturabilir, animasyonlar ve oyunlar da tasarlayabilirsiniz.
Daha önce yapmış olduğum uygulamanın içerisine bu customviewi aşağıdaki resimde görüleceği üzere yerleştirdim.

Main Activityde herhangi bir kod yazmaya gerek yok. Sadece layout dosyasında viewimizi ekleyeceğiz. Viewimizin kodları aşağıda. CustomView.java dosyası… View classından extend ediyoruz…
package com.ceylan.arif.navdrawerornek;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
public class CustomView extends View {
private Rect rectangle; //dikdörtgen için rectangle tanımlaması
private Paint paint; //renk ve biçimler için paint nesnesi tanımlaması
//consturterlar
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
//Customviewin çizilmesi esnasında ondraw metodu çalışır. bu metodu override ediyoruz
@Override
protected void onDraw(Canvas canvas) {
int x = 50;
int y = 50;
int sideLength = 200;
// kenarlık boyutları parametre olarak verilen dikdörtgeni oluşturuyoruz
rectangle = new Rect(x, y, sideLength, sideLength);
// paint nesnesi oluşturup renklerini veriyor ve boyuyoruz
paint = new Paint();
paint.setColor(Color.GRAY);
canvas.drawColor(Color.BLUE);
canvas.drawRect(rectangle, paint);
}
}
Layout dosyamız ekleyeceğimiz kod da şu şekilde;
<view class=”com.ceylan.arif.navdrawerornek.CustomView”
android:layout_width=”wrap_content”
android:layout_height=”200dp”/>
Tabii burada sizin bazı bölümleri değiştirmeniz gerekecek. Sizin projenizin paket ismiyle benimki aynı olmayacağı için oraları güncellemezseniz hata alırsınız.
İnternetteki örneklerde genelde activitye direkt canvas ile boyama gösterilmekte. Başka viewler eklemek istediğinizde de sorunlarla karşılaşmaktasınız.
Bu uygulamayla o sorunla karşılaşmayacaksınız.
İyi kodlamalar.