İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa]
 Site Haritası 
 
Site Map
Ana SayfaYeriniz | Ana Sayfa | Makaleler | Programcılık | Android | Örnek Android Projesi

Diğer Yazılar
Android Programlama Nedir?
Andorid iOS Karşılaştırması
Android Işletim Sisteminin Avantajları


E-posta Gönderin Yorum Yazın
Güvenlik Kodu:9167Güvenlik Kodu:9167Güvenlik Kodu:9167Güvenlik Kodu:9167




En Son Okunan 10 Makale
  1. Senaryo Kullanımı
  2. Hızlı Aşağı Açılır (Drop-down) Menü
  3. İnternet Nedir? (Tarihçe)
  4. Hazırlama Teknikleri
  5. Genç BT 'cilere İş Hayatı Öncesinde Öneriler
  6. Logo ve Amblemlerin Anlamları
  7. Renklerin Dili - Mavi
  8. Özgüven Nedir ?
  9. Site Haritası
  10. Flash Oyunları
 
Örnek Android Projesi>
Yazı Tipi KüçültYazı Tipi BüyütAna SayfaYazıcıdan ÇıkarPDF Belgesi Olarak GörüntüleFavorilerime EkleArkadaşıma Tavsiye EdeceğimRTF (Word Dokümanı) olarak görüntüle

Bu yazımda Eclipse kullanarak çok basit bir Android uygulaması yazılması ve uygulamanın Android SDK ile birlikte gelen emülatör üzerinde çalıştırılması için yapılması gereken şeylerden bahsedeceğim. Göstereceğim örnek programın yapacağı tek şey ekranda bir tuş gösterip, tuşa basıldığında kullanıcıya bir mesaj göstermek.

Programın kendi bir pek işe yarar bir şey yapmıyor belki ancak bu yazının amacı için fazlasıyla yeterli. Bu yazıyı okuduktan sonra aşağıdaki soruların cevaplarını almış olacaksınız.

  • Eclipse ile bir Android projesi nasıl oluşturulur?
  • Bir Android projesi hangi klasör ve dosyaları içerir ve bunların görevleri nedir?
  • XML kullanılarak basit bir arayüz nasıl tanımlanır?
  • Tuşa basmak gibi basit olaylar nasıl karşılanır?
  • Kullanıcıya bir mesaj en kolay nasıl gösterilir?
  • Sanal bir cihaz nasıl oluşturulur ve yazılan program bu cihaz üzerinde nasıl çalıştırılır (emülatör nasıl kullanılır)?
  •  

Tabi ki bu cevaplar sadece başlangıç için yeterli olacak ancak sonraki günlerde bu konuların her birine ayrı ayrı değinmeyi planlıyorum.

 

Yeni Bir Android Projesi Oluşturulması

Eclipse'i ilk başlattığınızda size Workspace yolu soracak. Buraya projelerinizi kaydetmek istediğiniz yerin yolunu yazabilirsiniz. Ben genellikle C:deneme klasörünü kulanıyorum, siz kendinize uygun bir klasörü gösterebilirsiniz. Eclipse arayüzü açıldıktan sonra menüden File >> New >> Project seçeneğini seçin ve açılan pencerede Android dalının altında bulunan "Android Project" seçeneğini seçtikten sonra Next tuşuna basın. Bu noktada eğer Eclipse'e Android SDK'sının yolunu daha önce göstermemişseniz "The location of the Android SDK has not been set up" hatası ile karşılaşacaksınız. Bunu gidermenin yolu önceki yazımın sondan 3. paragrafında anlattığım şekilde Android SDK'yı koymuş olduğunuz klasörü Eclipse'e göstermek. Eğer yolu doğru şekilde göstermişseniz karşınıza hata mesajı yerine aşağıdaki pencere gelecek. Penceredeki alanları resimde gösterdiğim şekilde doldurun ve ardından Finish tuşuna basın.

Yeni proje ekranı

Şimdi bu ekranda hangi alan neyi ifade ediyor ona bakalım:

Project Name: Projeye verdiğiniz isim, yani proje dosyalarını barındırmak için yaratılacak olan klasörün adı.

Build Target: Yazacağınız programın Android SDK'nın hangi versiyonuna sahip olan cihazları hedeflediği. Eğer burada benim gibi 1.6 seçerseniz, yazacağınız program 1.5 veya daha düşük sürümlü Android içeren cihazlara kurulamayacaktır. Ancak 1.6 SDK'sında yeni eklenmiş olan özellikleri kullanmak istiyorsanız en az 1.6 seçmelisiniz. Ben burada 1.6'yı öylesine seçtim, yoksa önceki SDK'larda olmayan herhangi bir özellik kullanmayacağım. Eğer bu liste sizde boşsa önceki yazımın son kısımda anlattığım şeyi yapmanız gerekiyor demektir.

Application Name: Yazacağınız uygulamanın Android cihazında görünecek olan ismi.

Package Name: Her Java uygulamasında olduğu gibi burada da kullanmak zorunda olduğunuz, kodlarınızın içerisinde yer alacağı isim alanı (namespace).

Create Activity: Ana Activity sınıfını içeren dosyanın adı. Bunu programınızın ana kaynak dosyası olarak düşünebilirsiniz, ancak tam olarak öyle değil. Android uygulamalarının içerdiği her ekrana Activity deniyor. Yani uygulamanızdaki her ekran için ayrı bir aktivite sınıf dosyası yaratmanız gerekli.

Min SDK Version: Bu kutu siz Build Target'i seçtiğiniz zaman otomatik olarak dolduruluyor. Programınızın çalışmak için ihtiyaç duyduğu en düşük SDK sürümünü gösteriyor. Burada 1.6 yerine yukarıdaki listede 1.6 sürümünün olduğu satırda görünen 4 rakamının yazılı olduğuna dikkat edin.

Proje yaratıldıktan sonra menüden Project >> Clean seçeneğini seçerek Eclipse'in bazen yeni yaratılmış Android projeleri için verdiği hatalardan kurtulun. Bu işlemden sonra Package Explorer bölmesi aşağıda gördüğünüz şekli almış olmalı. Şimdi aşağıdaki resimde görülen projenin içerdiği klasör ve dosyaların görevleri neler ondan bahsedeyim:

Bir Android projesinin içerdiği klasör ve dosyalar

src klasörü: Uygulamanızın kaynak kodlarını içeren klasör. Şu anda tek bir Activity'miz (bundan sonra hep aktivite diyeceğim) olduğu için tek kaynak dosyamız editörün bizim için yaratmış olduğu Ornek.java adlı dosya.

gen klasörü: Eclipse ADT tarafından otomatik olarak oluşturulan ve bizim içeriklerini değiştirmememiz gereken dosyaları içeren klasör. Şu anda içerdiği tek dosya R.java. Bu dosya birazdan bahsedeceğim res klasörü içerisine koyacağınız kaynaklara (resource) ait sabit değişkenler içeren R sınıfını barındırıyor. Siz uygulamaya yeni kaynaklar ekledikçe bu sınıf da ADT tarafından otomatik olarak güncelleniyor. R sınıfını uygulamayı yazarken kullanacağız.

assets klasörü: Uygulamanız ile birlikte paketlenmesini istediğiniz dosyalar varsa bunları koymanız gereken klasör.

res klasörü: İçerisinden birden fazla klasör barındıran kaynaklar klasörü. İçerisindeki layout klasörüne arayüz tanımlamalarını içeren XML dosyalarını, values klasörüne renk, string, çeşitli diziler vs.. içeren XML dosyalarını, drawabels klasörlerine kullandığınız resim ve ikonları koyabilirsiniz. Burada yaratılmış olan klasörlere ek olarak kendiniz de yeni klasörler ve XML dosyaları yaratarak istediğiniz kadar kaynak tanımlaması yapabilir ve bunlara kod içerisinden otomatik olarak güncellenen R sınıfı aracılığıyla erişebilirsiniz.

AndroidManifest.xml: Uygulama ve içerdiği bileşenlerin (Aktiviteler, servisler, vb..) tanımlandığı XML dosyası.

default.properies: Uygulamanın derlenip cihaza gönderilmesi sırasında çalışan Ant scripti tarafından kullanılan özellik dosyası.

Sanal Cihaz (Virtual Device) Yaratılması

Uygulamayı yazmaya başlamadan önce, uygulama geliştirme sırasında kodunuzu emülatör üzerinde deneyebilmeniz için sanal bir cihaz oluşturmanız gerekiyor. Bunun için menüden Window >> Android SDK and AVD Manager seçeneğini seçin ve açılan pencerede New... tuşuna basın. Açılan penceredeki alanları aşağıdaki resimde gösterdiğim şekilde doldurun. Burada en çok dikkat etmeniz gereken alan emülatörün kullanacağı Android sürümü. Bu alanın değeri sizin uygulamanızı yazarken hedeflediğiniz sürümle aynı olmalı.

Sanal Android cihazı yaratmak

Ayarları yaptıktan sonra Create AVD tuşuna basın ve sonrasında gelen diyalog kutusunu da OK diyerek geçin. Sanal cihazınızı yaratmış oldunuz.

XML ile Arayüz Oluşturulması

Uygulamayı geliştirmenin ilk aşaması arayüzü hazırlamak. Arayüz tasarımını XML dosyası içerisinden veya Java kodu içerisinden yapmak mümkün. Ancak statik arayüzler için Java kullanmanın hiçbir anlamı yok o yüzden burada kullanacağımız yöntem XML. Önceki bölümde belirttiğim gibi arayüz tanımlamaları res klasörü altında bulunan layout klasöründe bulunmakta. Şimdi Package Explorer'dan o klasörün içerisindeki main.xml adlı arayüz dosyasına çift tıklayın. Eclipse'in ayarlarının nasıl yapılmış olduğuna göre bu XML dosyası doğrudan kod editöründe ya da ADT ile gelmiş olan dandik GUI editöründe açılabilir. Eğer GUI editöründe açılmışsa ekranın alt kısmında bulunan 2 sekmeden "main.xml" yazılı olanını seçerek editör moduna geçin. Açtığınız XML dosyasının içeriği başlangıçta şu şekilde olacaktır.

 version="1.0" encoding="utf-8"?>      android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > 

Gördüğünüz üzere dosya temel olarak bir XML formatı tanımlama satırı ve hemen ardından gelen bir LinearLayout tag'inden oluşuyor. LinearLayout arayüze koyacağınız komponentlerin ekranda nasıl yerleşeceğini belirleyen bir container'dan başka bir şey değil. LinearLayout tag'i içerisine koyacağınız komponentler birbirlerinin hemen ardına yerleşir. Eğer aynı satırda yer bulamazlarsa sonraki satıra yerleşirler. LinearLayout'a alternatif olarak kullanılabilecek farklı Layout tag'leri de var ancak bu yazıda onlara girersem bir daha çıkamamsmiley o yüzden bu yazımda varsayılan container olan LinearLayout'u kullanacağım.

LinearLayout tag'inin içerdiği layout_width ve layout_height özellikleri, arayüzün ekrana nasıl yerleşeceğini gösteriyor.  Bu özelliklere "fill_parent" demek anne objenin (bu durumda ekranın) tamamını kapla demek. Buna alternatif olan "wrap_content" değeri de sadece arayüz içeriğinin gerektirdiği kadar yer kapla anlamına gelmekte. Arayüzün ekranın tamamını kaplamasını istediğimiz için bu değerleri değiştirmeden bırakıyoruz. Orientation özelliği de arayüzün dikey mi yatay mı olacağını belirtiyor. Bizim arayüz cihazın dikey tutulduğunu varsayacağı için bu özelliği de değiştirmeden bırakıyoruz.

Arayüz tag'inin içerisinde varsayılan olarak bir TextView komponenti bulunmakta. Bu komponent interaktif olmayan, sadece ekranda yazı göstermek amacıyla kullanılan bir komponent. Bildiğiniz label yani. Biz bu projede basılınca kullanıcıya mesaj gösteren bir tuş koymak istediğimiz için bu TextView elemanını Button ile değiştiriyoruz. Koyacağımız tuşun ekranın ortasına yerleşmesi için LinearLayout tag'inin gravity özelliğini de "center_vertical" olarak ayarlıyoruz. Butonun ekranın yatay kısmının tamamını, dikey kısmının ise sadece gerektiği kadarını kaplamasını istediğimiz için layout_width ve layout_height özelliklerini aşağıdaki şekilde ayarlıyoruz. Gerekli ayarları yaptıktan sonra XML dosyasının son görünümü aşağıdaki şekilde olmalı.

 version="1.0" encoding="utf-8"?>      android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:gravity="center_vertical"     > 

Burada bahsetmem geren iki nokta var. Birincisi tuşa bir ID vermiş olmamız. Bunu vermek zorundayız çünkü birazdan tuşa basma olayı için callback metodu yazacağız ve tuşa Java kodu içerisinden erişebilmemiz için ona bir ID vermiş olmamız gerekiyor. Burada kullanın acayip "@+id/tus" ifadesi komponentlere ID verilirken kullanılan standart sentaks. Burada tuşa "tus" ID'sini vermiş olduk.

Diğer bahsetmem gereken nokta tuşun "text" özelliğine, yani tuşun üzerinde yazacak olan yazıya "@string/tus_yazi" değerini vermiş olmam. Bu sentaks, "kaynak klasöründeki string.xml dosyasına git ve oradaki tus_yazi adlı değişkenin değerini al" anlamına geliyor. Bu satırın iş görmesi için Package Explorer'da res/values klasörü altındaki strings.xml dosyasını editörde açıp aşağıdaki hale getirmemiz gerekiyor.

 version="1.0" encoding="utf-8"?>      

Gördüğünüz gibi tus_yazi adlı bir katar tanımlayıp içeriğini de "Bas Bakalım" yaptık. Ayrı bir XML dosyası ile uğraşmadan doğrudan tuşun text özelliğine de "Bas Bakalım" yazmak mümkün. Hatta bu örnek için daha mantıklı. Ancak daha karmaşık programlar yazarken bu tür katarları ayrı bir dosyada tutmak hem daha düzenli bir proje yapısına sahip olmak açısından hem de uygulamaya kolayca dil desteği ekleyebilmek açısından yararlı olacaktır.

Şimdi programı şu anki haliyle ile çalıştırmak için menüden Run >> Run seçeneğini seçip açılan pencereden Android application'ı seçiyoruz. Eğer her şeyi doğru yapmışsanız emülatör penceresinin açılıp boot etmeye başlaması gerekiyor. Boot işlemi bitene kadar biraz beklemeniz gerekecek ancak bu emülatörü kapatmadığınız sürece bir daha yapılmayacak bir işlem olduğundan pek bir sorun teşkil etmiyor. Ancak emülatörü kapatırsanız her seferinde sanal cihazın tekrar boot etmesini beklersiniz o yüzden emülatörü bir kere açıldıktan sonra Eclipse ile işiniz bitene kadar kapatmayın. Kodu değiştirip tekrar çalıştırdığınızda uygulamanızın en güncel hali zaten çalışmakta olan emülatör içerisinde hemen açılacaktır. Uygulamamızın şu anki hali aşağıdaki şekilde.

Android uygulamasının ilk görünümü

Şimdi sıra tuşa basınca mesaj göstermeye geldi. Bunun için Java kodu yazmamız gerekiyor.

Callback Metodu İçin Gerekli Java Kodlarının Yazılması

Package Explorer'dan Ornek.java adlı dosyayı açıyoruz. Dosyanın içeriği başlangıçta şu şekilde:

package org.example;

import android.app.Activity;
import android.os.Bundle;

public class Ornek extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Bu kodun yaptığı tek şey Activity sınıfından yeni bir sınıf türetmek. Android uygulamalarındaki tüm aktiviteler (ya da ekranlar) bu sınıftan türemek zorunda. Yeni türetilmiş olan bu sınıfın orjinal sınıftan tek farkı onCreate metodunun  override edilmiş olması. Yeni onCreate metodu şu haliyle sadece iki şey yapmakta. Bunlardan ilki orjinal Activity sınıfının yapıcı metodunu (constructor) çağırmak. Diğeri ise setContentView metodunu kullanarak aktivitenin ekranda göstereceği içeriği bizim main.xml adlı dosyada tanımladığımız arayüz olarak ayarlamak. Burada res klasöründeki kaynaklara bakarak otomatik olarak oluşturulan R sınıfının nasıl kullanıldığını da görüyorsunuz. Bu sınıf kaynaklara kod içerisinden erişmemizi sağlıyor.

Şimdi tuşa basıldığında bir şeyler yapmak için o tuşa bir callback metodu atamamız gerekli. Onu da onCreate metodunun içine aşağıdaki satırları ekleyerek yapıyoruz.

Button btn = (Button)findViewById(R.id.tus); 
btn.setOnClickListener(this);

Burada yaptığımız şey öncelikle arayüzdeki tuşu ID'si aracılığı ile bulup onClick olayını karşılayacak olan nesneyi göstermek. Burada this parametresini vermiş olmamız onClick olayını aktivitemizin kendinin karşılayacağı anlamına geliyor. Ancak aktivitemizin bunu yapabilmesi için onClickListener interface'ini implement etmesi ve dolayısıyla onClick metodunu tanımlaması gerekiyor (Türkilizce konuşmaktan hoşlanmıyorum ancak yapacak bir şey yoksmiley). Bu işlemler yapıldıktan sonra kod aşağıdaki halı almakta.

package org.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Ornek extends Activity implements View.OnClickListener
{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button)findViewById(R.id.tus); 
        btn.setOnClickListener(this);
    }
    
    public void onClick(View v)
    {
        
    }
}

Gördüğünüz üzere henüz onClick metodu herhangi bir şey yapmıyor. Tuşa basıldığında ne yaptırmak istiyorsak bunu onClick metodu içerisine yazmamız gerekiyor. Bu metodun aldığı v parametresi bize tıklama olayının hangi eleman üzerinde yapıldığını bildiriyor. Bizim uygulamamızda zaten tek bir tuştan başka tıklanabilir bir şey olmadığı için o parametreyi kullanmayacağız.

Biz bu uygulamada tuşa basıldığı zaman kullanıcıya bir mesaj göstermek istiyoruz. Mesaj göstermenin yığınla farklı yöntemi var ancak ben burada en basit yöntem olan "Tost" mesajlarını kullanacağım. Tostlar ekranda gösterildikten sonra kullanıcıdan herhangi bir tepki beklemeyen, kullanıcı görmüş olsa da olmasa da kısa bir süre sonra kendiliğinden kapanan mesaj kutuları. Android SDK'sındaki Toast sınıfı sayesinde kullanımları son derece basit. Aşağıdaki kodda uygulamanın tost gösteren son halinin kaynak kodunu görebilirsiniz.

package org.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Ornek extends Activity implements View.OnClickListener
{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button)findViewById(R.id.tus); 
        btn.setOnClickListener(this);
    }
    
    public void onClick(View v)
    {
        Toast.makeText(this, "Kısa süre sonra kaybolan Tost", Toast.LENGTH_SHORT).show();
    }
}

Gördüğünüz üzere Toast sınıfının makeText ve show metodlarını zincirleme olarak kullanarak tek satır kod ile ekranda bir mesaj göstermek mümkün.  Bu haliyle uygulamayı emülatörde çalıştırıp tuşa basarsanız aşağıdaki manzara ile karşılaşacaksınız.

Andrid uygulamasının son hali

Evet, ilk Android uygulamanızı başarıyla yazıp çalıştırmış oldunuz. Gördüğünüz gibi bu basit uygulama bile, Android platformunun daha önce kullandığınız diğer platformlardan ne kadar farklı olduğunu göstermeye yetiyor. Bu uygulamayınun yapılışını anlatarak Android platformuna yeni başlayan ancak adam gibi Türkçe kaynak bulamayan kişilere yardımcı olmayı hedefledim. Umarım amacıma ulaşabilmişimdir. İlerlerleyen günlerde daha spesifik şeyleri ele alan yazılar yazmaya çalışacağım.



Not: Yazılar konusundaki yorumlarınız için lütfen Yorum Yazın bölümümüzü kullanın.

Yazar : Cihan Tek
Son Güncelleme : 13 Aralık 2012, Perşembe
Sayfa Sürümü : 1
Okunma Adedi : 5,807
Son Okunma : 2017-05-29 10:30:59
Kaynaklar :

http://www.cihantek.com/yazilar/ornek-bir-google-android-projesi/


Android Işletim Sisteminin AvantajlarıÖrnek Android Projesi
© [Site Haritası]
| Makaleler | Seyir Defteri | Kaynaklar | İndirin | İletişim |

RSS dosyasını görmek için tıklayınız. RSS dosyasını görmek için tıklayınız.XML versiyonu için tıklayınız WAP versiyonu için tıklayınız Bu site DyNA İçerik Yönetim Sistemi üzerinde çalışmaktadır.
İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa
ismail kırbaş ile web sitesi tasarimi sitemap ismail kırbaş ile web sitesi tasarimi sitemap
  Sitemizde 8 kişi çevirimiçi | Bugün =128 | Dün =230 | Bu Ay=6,459 | Günlük En Fazla=1,109 tekil ziyaretçi