Ana içeriğe atla

16. Android To-Do List Örneğini Düzenleme

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"?>
<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"?>
<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;
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
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"?>
<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>();
int resID=R.layout.todolist_item;
final ArrayAdapter<String> aa=new ArrayAdapter<String>(this, resID,todoItems);
myListView.setAdapter(aa);

Yorumlar

Bu blogdaki popüler yayınlar

Basit ve Dinamik Disk Nedir? Birbirine Nasıl Dönüştürülür?

Sabit diskler Windows 2000 işletim sistemine kadar sadece temel disk (basic disk) olarak ayarlanabiliyordu. Temel disk en fazla 4 birincil bölüm (primary partition) veya 3 primary ve 1 genişleyebilir bölüm (extended partition) şeklinde yapılandırılabilir. Bir temel diskte sadece 1 tane extended partition oluşturulabilir ve sadece primary partitionlara işletim sistemi kurulabilir. Windows 2000 ile gelen dinamik disk teknolojisi, Windows 2000 den sonraki tüm Windowssürümlerinde kullanılabilmektedir. Dinamik disk kavramıyla bölüm (partition) kavramı yerinihacim (volume) kavramına bırakmıştır. Dinamik disklerde, temel disklerde olduğu gibi bir sınırlama yoktur. İstenildiği kadar volume oluşturabilir, temel disk istenirse dinamik hale getirebilir ve bu işlem esnasında herhangi bir veri kaybı yaşanmaz. Fakat dinamik diskler temel diske çevirildiğinde bir veri kaybı söz konusu olacaktır. Temel diskin bilgileri kayıt defterinde tutulur. Dinamik diskin bilgileri kendi üstünde tutulur.

Einstein'in Rölativite Kuramına Bakış

Bu yüzyılın başlarında kuramsal fizikte altın çağ başladığı zaman, adı henüz bilim dünyasında duyulmamış bir fizikçi vardı. Bu, Annalen der Physık’in 1905 tarihli sayısında fotoelektrik olayı, Brown hareketi ve özel görelilikle ilgili ünlü üç çalışmasını birden yayınlayarak üne kavuşan Albert Einstein’dır. Onun fizikteki hayat boyu çalışmaları bilimin felsefesi ve yöntemleri üzerinde büyük etki yaptı. Einstein’ın kendisi bilimci filozoftu. Bu yüzyılın başlarında kuramsal fizikte altın çağ başladığı zaman, adı henüz bilim dünyasında duyulmamış bir fizikçi vardı. Bu, Annalen der Physık’in 1905 tarihli sayısında fotoelektrik olayı, Brown hareketi ve özel görelilikle ilgili ünlü üç çalışmasını birden yayınlayarak üne kavuşan Albert Einstein’dır. Onun fizikteki hayat boyu çalışmaları bilimin felsefesi ve yöntemleri üzerinde büyük etki yaptı. Einstein’ın kendisi bilimci filozoftu. O, hayranlık uyandırıcı bir şekilde felsefeyi kullanarak bugün modern bilimin önemli bir kısmı olan buluşlarını

Rubik Küp Nasıl Çözülür?

Rubik küp 3x3x3 veya 4x4x4 gibi karesel formatta ve her kenarı farklı renkte olan bir küptür. Bu küpün; sabır küpü, sinir küpü, zekâ küpü, renk küpü, Rubikin küpü, sihirli küp (magic box), 3d Puzzle, gibi birçok değişik adı vardır. Unutulmamalıdır ki küpün çözümü için geliştirilmiş bir algoritma vardır. Bu küp ezbere çözülemez. Bu yazıda sizlere küpün en yaygın çözümü anlatılacaktır. Hata yaptığınız yerde hatayı düzeltmeye çalışmayın belirtilen algoritma çerçevesinde çözüme baştan başlayın. Hala küpü çözemediyseniz buradaki yazımızda belirtilen otomatik çözen programları deneyebilirsiniz. Öncelikle bilmeniz gerekenler: Küpün parçaları birbirinden bağımsız değildirler. Küpün orta noktası daima sabittir. Küpü ne kadar çevirirseniz çevirin değişmezler. Kırmızının karşısında daima turuncu, yeşilin karşısında mavi, sarının karşısında beyaz vardır. Bir küp, toplam 26 adet parçadan oluşmaktadır: 8 adet üç renkli köşe parçası, 12 adet iki renkli parça ve 6 adet de sabit tek ren