24 Haziran 2012 Pazar

Android Kullanıcı Arayüzü 3.Bölüm - Viewlar ve ToDo List Örneği

Şu ana kadar Android'de kullanıcı arayüzü dizaynı ile ilgili temel olarak dikkat edilmesi gerekenlerden ve layoutlardan ve layoutların nasıl kullanıldığından bahsettim. Artık View'ları ve nasıl kullanıldıklarınıda inceleyip basit bir uygulama arayüzü oluşturmanın zamanı geldi.

View Kavramı

Bir android arayüzünde kullandığınız textbox'lar, listler, labellar, butonlar vs. bunlar viewları oluşturur. Aşağı yukarı hepsinin arayüzlerde kullanımları ufak farklarla birbirine benzemektedir.

TextView: Bu view'ın adı sizi yanıltmasın, bu bir textbox değildir. Aksine diğer dillerde textbox'ları kullanıcıya tanıtma amacıyla kullanılan label'lardır. Kullanıcıya bilgi verme amacıyla kullanılan ve kullanıcı tarafın değiştirilemeyen form elemanıdır.
EditText:Bu view diğer programlama dillerinden alışık olduğunuz textboxlardır. Kullanıcıdan girdi almak için kullanılırlar. Bu form elemanı üzerinde kullanıcı uygulamanın izin verdiği her türlü işlemi gerçekleştirebilir.
Buttons:Adından da anlaşıldığı gibi butonlardır. Genellikle onay almak için veya bir sonraki aktiviteye geçmek için kullanılırlar.
ImageView:Arayüzünüzde bir resim görüntelemek istediğinizde kullanmanız gereken viewlardır.
ImageButton:ImageButton view'larını button ve imageview'ın karışımı şeklinde düşünebilirsiniz. ImageButton nesnesinin olması sizi normal butonların üzerinde ikon görüntüleyemediğiniz düşüncesine itmesin. Butonlarınızda da ikon kullanabiliyorsunuz.
ListView:ListView'lar birden fazla veriyi kullanıcıya listeleme amacıyla kullanılan view'lardır.
GridView: GridView'lar ListView'lara benzer yapıdadırlar. Aralarındaki fark ise GridView'ı kolonlara bölerek kullanmanız kolaydır.
Spinner:ComboBox'ların Android Sdk'daki karşılığıdır. Bilmeyenler içinde aşağı doğru açılan liste kutularıdır.
CheckBox ve RadioButton: Diğer dillerdekiyle aynı form elemanlardır ve isimlerinden de anlaşılacağı gibi checkbox'lar birden fazla seçeneği işaretleme olanığı sağlayan işaret kutuları, radioButton ise birden fazla seçenek arasından sadece bir tanesini seçmeyi sağlayan işaret kutularıdır.

ToDo List

Şimdi basit bir ToDo List uygulaması yaparak arayüz tasarlamayı daha iyi görelim. Öncelikle yeni bir Android projesi oluşturarak ToDoList adını verin ve package name'e com.example.todoList girerek android 2.1'i seçin.

Şimdi projemizde arkaplanımızda kullanmak için bir gradient oluşturalım. Proje adınıza sağ tıklayıp new>Android XML File'ı seçin.

Resource type olarakta Shape'i seçip, xml dosyanıza background.xml adını verin.








Şimdi arkaplan renklemizi oluşturmak için background.xml dosyamızı aşağıdaki gibi kodlayalım.



Arkaplanımızı oluşturduktan sonra şimdi kullanıcı arayüzümüzü oluşturabiliriz. Bu işlem için 1 LinearLayout(horizontal) 1 EditText ve 1de ListView'a ihtiyacımız var.

main.xml layout dosyamızın kodu aşağıdaki gibidir.


Son olarak artık aktivitemizin kodlarını da yazarak uygulamamızı çalıştırabilir hale getirebiliriz.


Artık uygulamanızı compile edip emülator üzerinde deneyebilirsiniz. Aktivite kodunda yabancı olduğunuz bazı kısımları açıklamam gerekirse, bir ListView'a aktivite üzerinden eleman eklemek istediğinizde bir adapter nesnesine ihtiyacınız vardır. Genellikle bunun için ArrayAdapter kullanılırken ileride göreceğiniz veritabanı işlemlerinde ise SimpleCursorAdapter kullanılır. Kodumuzda ise eklediğim to-do'ları hafıza tutmak için String olarak bir ArrayList oluşturduk ve EditText'ımızın onKeyEventChanged methodunu kullanarak emülatorümüzün orta D-pad tuşuna basıldığında edittex üzerine kullanıcının girmiş olduğu yazıyı arraylist'imize ekledik ve son olarakta adapter nesnemizin notifyDataSetChanged() methodunu çağırarak ArrayAdapterımıza ArrayList üzerindeki elemanları eklemiş bulunduk.

Şimdilik android üzerinde xml dosyaları kullanarak arayüz oluşturmayı, listView üzerinde veri işlemleri gerçekleştirmeyi gördük. Bundan sonra ise birden fazla aktivitelerle çalışmayı, aktiviteler arasında veri alış-verişini görücez. Bir sonraki yazımda görüşmek üzere.

22 Haziran 2012 Cuma

İzUlaşım

İzUlaşım İzmir ili için hazırladığım toplu ulaşım zamanlarını gösteren bir uygulamadır. Uygulama şu an için sadece vapur saatleriyle sınırlıdır. İlerleyen versiyonlarda izban, metro ve otobüs seferleri de eklenecektir.

Ek Özellikler

Ana Ekran Widget - Uygulama beraberinde ana ekranınıza ekleyebileceğiniz bir widget ile birlikte gelmektedir. Bu widget üzerinde son seçmiş olduğunuz seyahat yönünde güncel zaman bilgisi görülebilmektedir.  Örneğin en son Konak-Bostanlı yönü saatlerine giriş yaptıysanız widget Konak - Bostanlı yönündeki o an ki saatten sonra kalkıcak olan ilk vapuru göstermektedir. 
Uygulama çalışma açısından GPS bilgisi, İnternet bağlantısı gibi özel izinlere gerek duymamaktadır.
Uygulamanın Ekran Görüntüleri aşağıdaki gibidir.



Uygulamayı yüklemek isteyenler aşağıdaki linkten cihazlarına download yapabilirler.
İzUlaşım v1.0.1

21 Haziran 2012 Perşembe

Android Kullanıcı Arayüzü 2.Bölüm- Layout'lar

Şu ana kadar android uygulamalarının en basit birimi olan aktiviteleri gördünüz. Aktiviteler, uygulamanın textbox, buttons vs. gibi widget'lara sahip olan arayüzlerini görüntülerler. Hesap makinesi örneğinde Aktivitenizin onCreate metodunda görmüş olduğunuz


metod aktivitenizin kullanıcı arayüzünü görüntülemesini sağlayan metodudur.Android'de kullanıcı arayüzleri klasik masaüstü veya web uygulamalarına nazaran xml kullanılarak hazırlanırlar. Arayüz kütüphanesi biraz geniş olduğu için bir kaç yazıya böldüm ve bu yazımda sadece layoutlara odaklanmak istiyorum.

Layouts

Layoutlar arayüz için kontrolleri yerleştirmenize yarayan ViewGroup sınıfından türetilmişlerdir. Layoutları iç içe kullanabildiğiniz gibi bunların değişik kombinasyonları ile karmaşık arayüzler oluşturabilirsiniz.

Android SDK arayüz tasarımı için bazı hazır basit layoutlar içermektedir.

  • FrameLayout: En basit layouttur ve tüm view'ları sol üst köşeye yerleştirir. Birden fazla view eklendiğinde her zaman son eklenen view bir öncekini görünmez yapar.
  • LinearLayout: İçerisine yerleştirilen view'ları yatay veya dikey olarak yerleştirir. 
  • RelativeLayout:Esnek bir layouttur ve alt view'larınızı ekran sınırlarına veya diğer viewlara bağlı olarak viewlarınızın pozisyonunu belirlemenize imkan sağlar.
  • TableLayout:Adındanda anlaşılabileceği gibi satır ve sütunlar kullanarak viewlarınızı yerleştirmenizi sağlar.
  • Gallery:Gallery layoutu tek satırlık bir içeriği yatay olarak görüntülemeye yardımcı olur.
Bunlara ek olarak RelativeLayout'a benzer  olan AbsoluteLayout bulunmaktadır. AbsoluteLayout'ta kullanacağınızın bir view'ın x ve y koordinatlarını kesin olarak belirtmeniz gerekir. Kullanımı zor olduğundan çok fazla tercih edilmezler. AbsoluteLayout'ların yerine RelativeLayout kullanabilirsiniz.

Layoutların Kullanımı

Yukarıda da bahsettiğim gibi android kullanıcı arayüzleri XML kullanılarak oluşturulurlar. Şimdi basit bir LinearLayout kullanımını görelim.



LinearLayout tag'ının içerisinde yer alan layout_width ve layout_height layoutunuzun ekran boyutlarını belirlemenize yarar. Rakamsal değer alabileceği gibi hazır değerlerde alabilmektedirler. Ekran boyutlarındaki değişkenlikten dolayı rakamsal değerler kullanmak fazla tercih edilmektedir. Hazır değerlere ise;
  • fill_parent: Bir üst layout'u tamamen doldurur. Eğer layout'unuz en üstteki layout ise ekranı kaplar
  • match_parent:fill_parent'în API level 8'den sonraki adıdır. Kısaca ikisi aynıdır.
  • wrap_content:Layout'unuzun kullandığınız view kadar büyük olmasını belirtir.
Son olarakta yine LinearLayout tagında gördüğünüz orientation ise LinearLayout'unuzun dikey veya yatay konumunu gösterir. Alabileceği iki değer bulunur vertical ve horizontal.

Son olarak'ta tagları arasında yer alan ve tagları ise sizin layout içerisine yerleştirmiş olduğunuz Viewlarınızdır.

Şimdi ise gelelim layout'ları nasıl kullanmanız gerektiğine. Layout'ları aktiviteleriniz içerisinde kullanmak gerçekten zorlayıcı bir süreç olduğu gibi yanlış tasarımlar uygulamanızda performans kaybı ve çalışma zamanı hatalarına sebep olabilirler. Bu yüzden layoutları kullanırken dikkat etmeniz gereken bazı noktalar mevcuttur.

  • Gereksiz layout kullanımından her zaman kaçının. Örneğin ikiside match_parent olarak ayarlanmış iç içe iki layout kullanmanız gereksiz olacaktır.
  • Çok fazla View kullanımından kaçının. Kullandığınız her view arayüzün görüntülenme süresini uzatıcaktır.
  • İç içe plan oluşturmamaya çalışın. Örneğin yatay bir linearlayout içerisinde dikey bir linearlayout kullanmak yerine relativelayout tercih edebilirsiniz.
  • Android SDK layoutopt komut satırı aracını bulundurmaktadır. Bu arada layout kaynağını belittiğinizde bu araç sizin için layoutu analiz ederek geliştirmeler için önerilerde bulundurur. Aynı zamanda Eclipse üzerindeki Lint size arayüz oluştururken önerilerde bulunacaktır, bunlara dikkat etmeniz sizin yararınıza olacaktır.
Android layout'ları bu kadardır. Bir sonraki yazımda View oluşturma ve bunları nasıl kişiselleştireceğinizden bahsedeceğim.


20 Haziran 2012 Çarşamba

Android Kullanıcı Arayüzü

"Kullanımı zor olan bir yazılımla ilgili hiçbir bahane olamaz, çünkü bu geliştirilebilir. Kullanıcı bir hata yaptığında, kullanıcıyı suçlayamazsanız. Bu yüzden onlardan bu hatanın nasıl olduğunu öğrenin ve düzeltin. Her zaman bir kullanıcının yazılımı kullanırken sizden daha çok zamanı olur, buna saygı gösterilmesi gerekir. Güzel bir kullanıcı arayüzü her zaman basit olmalıdır."
                                                                                       Jono DiCarlo
 Eski text tabanlı telefonları hatırlarmısınız bilmem ama sadece yön tuşları ve numpad'i ile kullanılıyor olmalarına rağmen çok kolay bir arayüze sahiptiler. Hiç kimse telefonu aldığında bu nasıl kullanılıyor gibi bir derdi olmuyordu herşey gayet açıktı. Günümüzde ise artık mobil cihazları kontrol edebilmek için herhangi bir araca ihtiyacamız yok, sadece dokunarak veya sesli komutlar ile kontrol edebiliyoruz. Bu dokunmatik cihazların bir diğer özelliği ise arayüzlerinde hiçbir kısıtlamama olmaması. Bu özellik güzel olduğu kadar bir o kadar kötü bir şeye dönüşebilşir. İşte bu yüzden her zaman tasarladığınız arayüz basit, sezgisel, ilgi çekici ve işlevsel olmalıdır. Kullanıcı, arayüzü gördüğü anda anlamalıdır. Peki bunun için neler yapılmalıdır.
  •  Kesinlikle uygulama arayüzünüzü başka bir platforma bağlamayın. Kullanıcılar her zaman cihazlarını kullanırken evlerindeymiş gibi rahat hissetmelidirler. Markanız ve platform görünümünü herzaman dengelemelisiniz. Kullanıcılar göze çok batan ve sürekli karşılarına çıkan marka logolarından hoşlanmazlar.
  • Çok fazla progress bar/dialog vs. ve onay kutularını kullanmayın. Örneğin Android'de kullanıcıya mesaj vermek istediğinizde mesaj dialog penceresi yerine Toast kullanın.
  • Katı ve mutlak konumlandırılmış layoutlar oluşturmayın.
  • Android cihazlarda UI tasarımı yaparken px(pixel) yerine dp(veya yazılar için sp ) tercih edin.
  • Font boyutlarınızı iyi ayarlayın. Çok büyük fontlar göze çok batar, küçükler ise bir çok kişi tarafından görülmeyebilir.
  • Kullanacağınız renkleri iyi ayarlayın, birbirine zıt renkler kullanmayın ve her zaman uygulamanızı renk körü olan insanlarında kullanacağını düşünerek renklerinizi seçin.
  • Android cihazlar birden fazla ekran boyutu ve yoğunluğuna sahip olduğundan mümkün olduğunca her ekran yoğunluğu için kaynaklar oluşturun. Hesap makinesi örneğinde resource dizinini genişlettiğinizde 4 ayrı drawable dizinini farketmişsinizdir. Bu dizinlerin yanında yer alan mdpi, hdpi, ldpi ve xhdpi ekran yoğunluklarını gösterir. 
  • 320dp: tipik telefon ekranı (240x320 ldpi, 320x480 mdpi, 
    480x800 hdpi, vs.). 
    480dp: Tweener Tablet(Galaxy S2 ve s3 vs.)
    (5" ten büyük ekranlar) (480x800 mdpi).   
    600dp: 7" tablet(600x1024 mdpi).   
    720dp: 10" tablet (720x1280 mdpi, 800x1280 mdpi, vs).
    
     
  • Dokun etkileşimli nesnelerinizi mümkün olduğunca büyük tasarlayın.
  • Düzgün hizalama ve kenarlıklar kullanmaya dikkat edin.
  • Aktivite stackini düzgün bir şekilde yönetin. Kullanıcı geri tuşuna bastığında herzaman bir önceki ekrana dönmelidir.
  • Ekran döndürmeyi düzgün ayarlayın. Kullanıcılar cihazı hem yatay hem dikey kullanabilirler.
  • Tema, stil, boyut ve renk resourceları kullanarak gereksiz kaynak kullanımını minimuma indirin.
  • Son olarakta Android dizayn kılavuzunu münkün olduğunca kullanmaya dikkat edin. 
Arayüzlerini basite indirgemek açısından ActionBar veya DashBoard kullanabilirsiniz.
Action Bar


Twitter DashBoard

Kullanıcının minimum düzeyde kullanması gereken aktivitelerinizi menu'ye yerleştirin Böylelikle arayüzünüzdeki kalabalığı azatmış olursunuz.
Opera Menu
Basit bir şekilde android uygulamalarında arayüz tasarlarken dikkat etmeniz gereken noktalar bunlar. Bir sonraki yazımda Layoutlar ve Widget araçlarından bahsedeceğim. Şimdilik görüşmek üzere

15 Haziran 2012 Cuma

Android Activity Sınıfı

Android Aktiviteleri

Hesap Makinesi örneğinde android aktivitelerinden kısa bir şekilde bahsetmiştim. Bu önemli bir konu olduğundan burda biraz daha detaylı olarak bahsetmek istiyorum. Daha öncede belirttiğim gibi, Android uygulamarı'nın klasik java uygulamalarından farkı main methodu kullanmaması ve activity, view, sqliteopenhelper gibi superclasslardan türetiliyor olması. Şu an için sadece activity super class'ından bahsedeceğim.

Aktiviteler android uygulamalarının sunum tabakasıdır. Uygulamalardaki her ekran bir activity sınıfından türetilmiştir. Bu sınıftan türetilen sınıflarda kullanıcı arayüzünü oluşturmak için View'lar kullanılır. Daha sonra View'lardan bahsedeceğim.

Akitivite Yaşam Döngüsü

Uygulamada çalıştırılan her aktivite birer Stack(yığın) üzerinde LIFO(Last-In First-Out) şeklindedepolanır.
Yandaki şekilde daha iyi bir şekilde çalışma yapısı görülmektedir. Son çağrılan aktivite her zaman en üste yerleştirilir. Yalnız önemli olan nokta, Aktivite Stack'inde bir önceki aktiviteye geri dönüldüğünde son aktiviteniz stackten yok edilir ve bir önceki aktivite son aktiviteniz olur.










Activity Sınıfı Methodları

Yandaki şekilde bir Aktivite'nin nasıl çalıştığı görüşmektedir. Hesap Makinesi örneğinden hatırlayacağınız gibi Aktivite sınıfımızda onCreate() methodu'nu override etmiştik. Şekildende anlaşıldığı gibi aktivite sınıfı sadece onCreate() methodun'dan oluşmamaktadır.

onPause() methodu: Bu method aktivite'nizden başka bir aktiviteyi çağırdığınızda çalışır. Çağırma işlemini gerçekleştiğiniz aktivite çalışmasını durdurur ve stack'te korunmaya başlanır. Çağırdığınız aktivite'nin ise onCreate() methodu çalıştırılarak stack'te en üste yerleşir.
onDestroy() methodu: Bu method stackteki en üst aktivite'den bir önceki aktiviteye geçiş yapıldığında çalışır ve o aktiviteyi tamamen stack üzerinden siler.
onResume() methodu:Bu method yine en üst aktiviteden bir önceki aktiviteye geçiş yapıldığında çalıştırılır. Burda bir örnek verecek olursak.
A ve B isimli iki aktiviteniz olduğunu varsayalım ve A aktivitesi B aktivitesini çağırmakta. Şimdi Stack'in en üstünde B aktivitesi bulunmakta. Bir önceki, yani A aktivitesine geçiş yapıldığına önce B aktivitesine ait onDestroy() methodu çalıştırılarak B aktivitesi silinir. Daha sonra da A aktivitesine ait onResume() methodu çalıştırılarak A aktivesi son kaldığı durumdan itibaren tekrar stack'te en üste yerleşerek çalışmasına devam eder.

Aktivite Sınıfımız şimdilik bu kadar, ilerleyen yazılarımda bir aktiveden diğer bir aktiviteye nasıl geçiş yapılacağını ve nasıl veri gönderileceğinden bahsedeceğim.

14 Haziran 2012 Perşembe

Android Hesap Makinesi

Genelde ilk blog yazısı olarak her zaman HelloWorld seçilir. Fakat yeni oluşturduğunuz android projenizi üstünde hiçbir değişiklik yapmadan derlediğinizde karşınıza HelloWorld geliyor. Bu yüzden bende kolay olması açısından basit bir hesap makinesi uygulamasıyla başlamayı tercih ettim.


Yeni Uygulama Oluşturma

Öncelikle yeni android uygulamınızı oluşturmak için File>New>Android Project'i seçiyorsunuz. Karşınıza gelen ekranda Project Name bölümüne HesapMakinesi yazıp, ilerliyoruz.






















Karşınıza Android Versiyon seçim ekranı gelecektir. Bu kısım belki şu an için çok önemli olmayabilir, fakat ilerideki projelerinizde gerçekten büyük önemi olacaktır. Android versiyonlarının arasında gerçekten büyük farklar mevcut. Örneğin; uygulamanızda ActionBar kullanmak istiyorsanız Android bu özelliği versiyon 3.0(API Level 11) ve üzerinde desteklemektedir. Bu sebeple ya Android 3.0(HoneyComb) veya üst bir versiyonu tercih ediceksiniz ya da kendi actionbar'ınızı oluşturucaksınız. İleride ActionBar'la ilgili Tutorial oluşturmayı düşünüyorum.
Şimdi projemize kaldığımız yerden devam edelim, yukarıda açıkladığım durumdan dolayı bu alışkanlığın oluşması için bizde uygulamamız için düşük bir versiyon seçerek daha üst android versiyonlarınıda destekleyelim. .Android 2.1(API Level 7)'yi seçip devam edelim.






















Şimdi Android Projemizi oluşturmanın son adımına geldik. Burda Uygulama adınızı, java'dan bildiğinizi varsaydıyım package adınızı ve aktivite(ilerleyen bölümlerde değineceğim) adınızı giriyorsunuz. Ben package name hariç diğerlerinde şu an için değişiklik yapmadım.
Package name: com.android.hesapmakinesi girip Proje oluşturma işlemimizi bitirerek bir sonraki bölüme geçelim.






















AndroidManifest.xml Dosyası

 Her Android uygulaması manifest dosyasına sahip olması gerekir. Bu dosya uygulamanız hakkındaki gerekli bilgileri içerir. Örneğin; yukarı seçtiğimiz Android versiyonunun bu dosyada bulunması gerekmektedir. Proje oluşturulduğunda bu dosya'da otomatik olarak projenin ana dizininde oluşturulur. Sizin sadece üzerinde uygulamanız için gerekli oynamaları yapmanız gerekmektedir. Bir örnek daha verecek olursam, varsayalım ki uygulamanızın internete bağlanması gerekiyor, bunun için AndroidManifest.xml dosyasında gerekli izni tanımlamanız gerekmektedir. Ek ve bu bölüme son olarak, bu dosya üzerinde tanımladığınız her izin kullanıcı GooglePlay'den uygulamanızı download etmek istediğinde karşısına bu izinleri onaylamasını gerektiren bir ekran görecektir. Bu sebeple gereksiz yetkilere izin vermemeye dikkat edin. Uygulamanız kamera'yı kullanmıyacaksa kamera yetkisi istemeniz gereksiz ve güvenlik açığına neden olacaktır.

Aşağıda gördüğünüz kod projemiz için otomatik olarak oluşturulan AndroidManifest.xml dosyasıdır. Şu an için bir değişiklik yapmamıza gerek yok. AndroidManifest.xml dosyasında kod'la değişiklik yapılabileceği gibi kendi UI'si de mevcuttur. İsteğe bağlı olarak UI'de kullanılabilir.


Android Kullanıcı Arayüzü

 Android kullanıcı arayüzleri xml dosyalarını kullanmaktadır.  UI dosyaları proje dizininizin res>layout klasöründe yer almaktadır. Android SDK kullanıcı arayüzü tasarımınızı yine sadece xml koduyla yapabileceğiniz gibi kolaylık olması açısından SDK'nın sağladığı birde kullanıcı arayüzü bulunmaktadır. Yeni başlayanlara tavsiyem ikisinide kullanmalarından yana olacaktır.

UI tasarlarken dikkat edilmesi gereken en önemli unsur, ekran boyutlarıdır. Android mobil cihazlar iPhone ve ya iPad gibi tek tip ekrana sahip değiller. Androidlerin bugün cep telefonlarında 3"-5.5" tablet'lerde ise 7"-11" arasında değişen boyutlarda ekrana sahipler.
Bu konuda daha detaylı bilgiyi Android developer sayfasında bulabilirsiniz.
http://developer.android.com/guide/practices/screens_support.html

Evet artık HesapMakinesi uygulamamızın kullanıcı arayüzünü tasarlamaya başlayabiliriz.

Yukarıdaki resimde görüldüğü gibi res>layout dizininde bulunan main.xml dosyasını açalım. En başta bahsettiğim HelloWorld yazan textview'ımızı silelim.
Şimdi ekranımıza soldaki toolbaxımdan birtane TextView, LinearLayout(Horizontal) ve bu LinearLayout'un içerisine 4 adet'te buton yerleştirelim.

Şu an için butonlardaki isimleri değiştirmiyelim. Bir sonraki bölümde diğer bir resource'umuz olan Strings.xml dosyasından bahsedeğim ve buton isimlerimizi burada tanımladıktan sonra düzenleyeceğiz. Normalde layout üzerinden de isim değişikliği yapılabilmektedir. Fakat bunu yaptığınızda editör size Strings.xml dosyasını kullanmanız gerektiğini gösteren bir uyarı verecektir. Bunun sebebi ise uygulamanız cihaz üzerinde çalıştırılırken kullanılması gereken minimum memory boyutunu android işletim sisteminin bilmesi gerekmetedir. Aksi taktirde kullanıcının tüm hafıza alanı doluyken uygulamnızı başlattığında herhangi biryerde kapatma hatası alabilir. Strings.xml'de tüm yazıları belirlediğinizdeyse işletim sistemi bunun için gerekli hafıza alanını hesaplayacak ve garbage denilen kısımdaki verileri silerek uygulamanıza yer açacaktır.

 Strings.xml

strings.xml dosyası res>values dizininde bulunmaktadır. İleride bu dizinde yine menu, color gibi yeni resourcelar tanımlanız gerekecektir. Biz şimdilik strings.xml'de kalalım. strings.xml dosyasıda yine kod yazabileceğiniz bir xml editörünün yanında kullanıcı arayüzüde barındırmaktadır. İsteğe bağlı olarak tercih yapabilirsiniz. Benim kendi fikrim yine kod editörünü kullanmaktan yana.

Uygulamamız için strings.xml dosyasını aşağıdaki gibi değiştirelim.









Yukarıdaki değişikliği yaptıktan sonra kaydedelim. Şimdi buton isimlerimizi main.xml kullanıcı arayüzü dosyamızdan değiştirebiliriz. main.xml dosyasını açalım ve kodumuzu aşağıdaki gibi değiştirelim.

android:textSize="25sp" ile yazı boyutumuzu ve android:text="@string/div" vs. ilede buton yazılarmıızı ayarladık. Dikkat ettiyseniz eğer android:id="@+id/carpma" vs. şeklinde ibareler bulunmaktadır. Kullanıcı tarafından görünmezler. Burda id sizin arayüzde kullandığınız view'ı R classında hexadecimal olarak tanımlamada kullanılır. Aktivetelerinizde view'larına event'leri yazarken bu id'leri kullanırsınız. Default olarak ViewAdı1 vs şeklinde bir atama yapılır. Fakat büyük projelerde bu karışıklığa neden olacağından kendi id'lerinizi vermeniz yararınıza olacaktır.

Artık aktivitemize kodumuzu yazmaya başlayabiliriz.

HesapMakinesiActivity.class

Android uygulamaları normal java uygulamalarının aksine main method'yula çalışmazlar. Bunun yerine her android classı Activity vs. SDK'ya ait superclass'lardan türetilirler.
Ben şu an sadece Activity class'ına değineceğim. uygulamanızda kullanıcağınız class'ları activity classından türeteceğinizi belirtmiştim. uygulamanın ilk activity'si AndroidManifest.xml dosyasındaki tanımına göre çağrılmaktadır. Bu class çağırıldığında ilk çalışan method onCreate method'u olacaktır. Bizim override etmemiz gereken method'da şu an için onCreate methodu'dur. Aşağıdaki kodu inceleyip kendi projenize ekleyin.








Artık uygulamamızı bitirdik ve sıra geldi çalıştırıp denemeye.

AVD Manager

Bu bölümde nasıl uygulamalarınızı test etmeniz için nasıl yeni emülator oluşturulacağından bahsedeceğim. Öncelikle Window menüsünden AVD Manager'ı seçelim. Karşınıza gelen Ekran'dan New butonuyla yeni Emülator oluşturma penceresini açın.















  
 Karşımıza gelen bu ekrandan Name bölümüne Emülatör adımızı yazalım ve Target bölümün'de de uygulamınızın kullandığı Android versiyonu'nu  seçiniz. Hesap Makinesi için biz Android 2.1 kullanmıştık. Create AVD diyerek Emülatörü'müzü oluşturup liste penceresini kapatalım.

Emülatörü'müzü de oluşturduktan sonra artık uygulamamızı test edebiliriz.

Test

Şimdi java toolbar'ımızdan Run iconuna tıklayarak Android Application'ı seçip OK butonuna basınız. Evet, şu an gidip kendinize bir kahve yapabilir ya da kısa bir mola verebilirsiniz. Ne yazık ki Emülatör'ün yüklenmesi biraz zaman alıyor. Emülatör'ün yükleme işlemi bittikten sonra emülatör ekranında uygulamanız yer alıcaktır. Burdan değişik değerler girerek uygulamınızı test edebilirsiniz.

 Uygulamanızın Ekran Görüntüsü aşağıdaki gibi olacaktır.

Hepinize bu rehberi kullandığınız için teşekkürler ve Android programlama konusunda başarılar dilerim.