1. TextView’u uzatan yeni bir TodoListItemView sınıfı oluşturun. onDraw metodunu ezmek için bir kök ve yeni bir init metodu çağıran yapılandırıcılar ekleyin.
package
com.example.todo_list;
import
android.content.Context;
import
android.content.res.Resources;
import
android.graphics.Canvas;
import
android.graphics.Paint;
import
android.util.AttributeSet;
public class TodoListItemView extends TextView {
public TodoListItemView(Context context, AttributeSet
ats, int ds)
{
super(context, ats, ds);
init();
}
public TodoListItemView(Context context)
{
super(context);
init();
}
public TodoListItemView(Context context, AttributeSet
attrs)
{
super(context, attrs);
init();
}
private void init() { }
@Override
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);//Metni
render etmek için TextView kullanılır
}
}
2. Res/values klasörü içinde yeni bir colors.xml dosyası oluşturun. Paper, margin, line ve text renkleri için yeni değerler atayın.
<?xml version="1.0" encoding="utf-8"?>
2. Res/values klasörü içinde yeni bir colors.xml dosyası oluşturun. Paper, margin, line ve text renkleri için yeni değerler atayın.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="notepad_paper">#AAFFFF99</color>
<color name="notepad_lines">#FF0000FF</color>
<color name="notepad_margin">#90FF0000</color>
<color name="notepad_text">#AA0000FF</color>
</resources>
3. Yeni bir dimens.xml kaynak dosyası yaratın ve kağıdın margin genişliğine yeni bir değer verin.
<?xml version="1.0" encoding="utf-8"?>
3. Yeni bir dimens.xml kaynak dosyası yaratın ve kağıdın margin genişliğine yeni bir değer verin.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="notepad_margin">30px</dimen>
</resources>
4. Kaynakları tanımladığınıza göre artık TodoListItemView görünümünü düzenlemeye hazırsınız. Kağıdın arka planını ve margin değerini belirtmek için kullanacağınız Paint objelerini barındıracak erişim belirteci private olan yeni değişkenler oluşturun. Ayrıca kağıt rengi ve margin değeri için de değişkenler oluşturun. Son 2 adımda oluşturduğunuz kaynaklara erişmesi ve Paint objelerini oluşturması için init metodunu doldurun.
private Paint marginPaint;
4. Kaynakları tanımladığınıza göre artık TodoListItemView görünümünü düzenlemeye hazırsınız. Kağıdın arka planını ve margin değerini belirtmek için kullanacağınız Paint objelerini barındıracak erişim belirteci private olan yeni değişkenler oluşturun. Ayrıca kağıt rengi ve margin değeri için de değişkenler oluşturun. Son 2 adımda oluşturduğunuz kaynaklara erişmesi ve Paint objelerini oluşturması için init metodunu doldurun.
private Paint marginPaint;
private
Paint linePaint;
private int paperColor;
private float margin;
private void init()
{
Resources
myResources=getResources();//Kaynak tablosu için
referans alınır.
marginPaint=new Paint(Paint.ANTI_ALIAS_FLAG);//onDraw metodunda kullanılacak boya fırçası
yaratılır.
marginPaint.setColor(myResources.getColor(R.color.notepad_margin));
linePaint=new Paint(Paint.ANTI_ALIAS_FLAG);
linePaint.setColor(myResources.getColor(R.color.notepad_lines));
paperColor=myResources.getColor(R.color.notepad_paper);//Kenar
genişliği ve arka plan rengi alınır.
margin=myResources.getDimension(R.dimen.notepad_margin);
}
5. Kâğıdı çizmek için onDraw metodunu ezin ve Paint objesini kullanarak 4. adımda oluşturduğunuz görseli çizin. Kâğıt görselini çizdiğinizde süper sınıfının onDraw metodunu çağırın ve yazıyı oluşturma işini ona bırakın.
@Override
5. Kâğıdı çizmek için onDraw metodunu ezin ve Paint objesini kullanarak 4. adımda oluşturduğunuz görseli çizin. Kâğıt görselini çizdiğinizde süper sınıfının onDraw metodunu çağırın ve yazıyı oluşturma işini ona bırakın.
@Override
public void onDraw(Canvas canvas)
{
canvas.drawColor(paperColor);//Kağıt rengi
canvas.drawLine(0,
0, getMeasuredHeight(), 0, linePaint);//Çizgilerin çizilmesi
canvas.drawLine(0,
getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight(), linePaint);
canvas.drawLine(margin, 0, margin, getMeasuredHeight(), marginPaint);//Margin çizimi
canvas.save();//Metni margin boyunca hareket ettirin
canvas.translate(margin, 0);
super.onDraw(canvas);//Metni
render etmek için TextView kullanılır
canvas.restore();
}
6. Böylece TodoListItemView’la ilgili yapacaklarımız bitti. Onu yapılacaklar listesi To-Do List aktivitesinde kullanmak için yeni bir plana dahil etmeli ve Array Adapter yapılandırıcısıyla bu planı göndermelisiniz. res/layout dizininde yeni bir todolist_item.xml kaynağı oluşturarak başlayalım. Bu kaynak her bir liste elemanının nasıl görüntüleneceğini düzenler. Bu örnek için palanınızda sadece TodoListItemView varolması yeterli.
<?xml version="1.0" encoding="utf-8"?>
6. Böylece TodoListItemView’la ilgili yapacaklarımız bitti. Onu yapılacaklar listesi To-Do List aktivitesinde kullanmak için yeni bir plana dahil etmeli ve Array Adapter yapılandırıcısıyla bu planı göndermelisiniz. res/layout dizininde yeni bir todolist_item.xml kaynağı oluşturarak başlayalım. Bu kaynak her bir liste elemanının nasıl görüntüleneceğini düzenler. Bu örnek için palanınızda sadece TodoListItemView varolması yeterli.
<?xml version="1.0" encoding="utf-8"?>
<com.paad.todolist.TodoListItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:scrollbars="vertical"
android:textColor="@color/notepad_text"
android:fadingEdge="vertical"
/>
7. Şimdi toDoList aktivite sınıfını açın. Son adım olarak onCreate içindeki ArrayAdapter’a verilen parametreleri değiştireceğiz. Varsayılan android.R.layout.simple_list_item_1 referansını yeni oluşturduğunuz. R.layout.todolist_item planıyla değiştirin.
final ArrayList<String> todoItems=new ArrayList<String>();
7. Şimdi toDoList aktivite sınıfını açın. Son adım olarak onCreate içindeki ArrayAdapter’a verilen parametreleri değiştireceğiz. Varsayılan android.R.layout.simple_list_item_1 referansını yeni oluşturduğunuz. R.layout.todolist_item planıyla değiştirin.
final ArrayList<String> todoItems=new ArrayList<String>();
int resID=R.layout.todolist_item;
final ArrayAdapter<String> aa=new ArrayAdapter<String>(this, resID,todoItems);
myListView.setAdapter(aa);
Yorumlar
Yorum Gönder