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

Project: AutoPlan

PROJENİN AMACI : Bilgisayar ortamında mimari projeden otomatik olarak elektrik tesisat projesini çizdirmek. PROJENİN HEDEFLERİ : Bilgisayar ortamında mimari projeden elektrik tesisat projesini çizdirip, zamandan tasarruf sağlamak. Mimari bir proje çizilerek, üzerine elektrik tesisatını otomatik çizen program. PROJENİN SÜRESİ : 4 Ay PROJENİN SONUÇLARI : Elektrik tesisat projeleri üzerine çalışan insanların işlerini kolaylaştırmak, çizimde insan hatalarından kaynaklanan yanlışlıkların önüne geçmek. KAYNAKÇA : Elektrik-Elektronik Tek. alanı aydınlatma projeleri modülü. Şimdi Microsoft Visual C++ Öğrenin (Chuck Sphar) kitabı. Download :  Autoplan Setup PROJENİN ÇALIŞMASI HAKKINDA GENEL BİLGİLER Bu projede kat planı çizilen binanın, elektrik tesisat planını otomatik olarak çizebilecek bir yazılım geliştirmeye çalıştım. Böyle bir program kullanıcılara rahatlık sağlar ve önemli oranda zaman kazandırabilir. Bu programın çalışabilmesi kat planından çıkarabileceği ipuç...

Hatırlamayı Kolaylaştıran Akıllı Manevralar

Hafıza bilgileri kaydetme (kodlama), saklama, hatırlama ve tanıma sürecidir. Hatırlarken beş duyumuzu (görme, işitme, dokunma, hissetme, koklama ve tat alma duyularını) tam kapasiteyle kullanırız. Görmek ile gözlemlemek, duymak ile işitmek, anlamak ve yapmak arasında büyük bir fark vardır. Bu fark, hatırlama yeteneğimizin derecesini belirler. Hatırlamak öğrenmek değildir. Ancak öğrenmek büyük ölçüde hatırlamayı gerektirir. Hatırlama bir süreçtir, öğrenme ise girişilen bir deneyimden elde edilebilecek bir sonuçtur. Hafıza kapasitesi artırılıp geliştirildiğinde öğrenme kapasitesi de büyük ölçüde gelişir. 1) Netleştirme ve tanım: Hafızayı geliştirmenin en iyi yollarından biri, geleceğe yönelik planlar, hayaller ve düşünceler gibi içsel görüntülerin detaylı ve net tanımlarını yapmaktır. Böylece detaylı görsel imajlar yaratılır ve tanımlama becerisine yönelik alıştırma yapılır. 2) İlişkilendirme (bağlantı kurma): Yeni bilgileri daha sonra hatırlamak için her bilgiyi hafızada bulun...

Larry Page ve Sergey Brin Google Girişimciliği

Garajda kurulan Google, bugün internet denilince akla ilk gelen web sitesidir. Akıllı telefon denilince akla ilk gelen Android işletim sistemidir. Şirketin kurucuları Larry Page ve Sergey Brin tanıdık bir arkadaşları vasıtasıyla ilk tanıştıklarında anlaşamazlardı. Birçok konuda fikir birliği kuramazlardı. İkili Stanford Üniversitesinde doktora yapıyorlardı. Google’dan önce Larry Page Stanford’ın tüm ağını bilgisayara indirebiliriz iddiasını ortaya atmasıyla ilk projelerine giriştiler. Verdikleri süre dolup üzerine aylar geçmiş olsa da ikili ağın yarısını bile indirememişlerdi. Bu indirme yöntemi aslında Google arama motorunun temellerini oluşturuyordu. İkili 1996 yılında ellerindeki bilgileri daha faydalı bir iş için kullanmaya karar vererek BackRub adında bir arama motoru kurmaya karar verdiler. BackRub’ı Sergey’in yurt odasında kurmaya başlarken, bir yandan da kendilerinin geliştirdiği arama teknolojisini bilgisayar bölümünden arkadaşlarına anlattılar. Arkadaşları bu fikri çok beğenm...