55
Android‘e Giriş Eğitimi Dökümanları 2/2 Android Uygulama Geliştirme Ortamının İncelenmesi Bilgi Teknolojisi Eğitim Programları Bu Çalışma Univerist Materyal geliştirme ekibi tarafından Bilgi Teknolojileri Eğitimleri için derlenmiştir. Dökümanla ilgili kaynaklar makalenin sonunda “Kaynakça” kısmında detaylı bir şekilde belirtilmiştir.

Android'e Giriş Eğitimleri 2_2

Embed Size (px)

Citation preview

Page 1: Android'e Giriş Eğitimleri 2_2

Android‘e Giriş Eğitimi Dökümanları 2/2

Android Uygulama Geliştirme Ortamının İncelenmesi Bilgi Teknolojisi Eğitim Programları

Bu Çalışma Univerist Materyal geliştirme ekibi tarafından Bilgi Teknolojileri Eğitimleri için derlenmiştir. Dökümanla ilgili kaynaklar makalenin sonunda “Kaynakça” kısmında detaylı bir şekilde belirtilmiştir.

Page 2: Android'e Giriş Eğitimleri 2_2

1

8.GÖRSEL KOMPONENTLER

Uygulamalarımızı tasarlarken gereksinim duyabileceğimiz görsel öğeler bize Google tarafından

sağlanmıştır. Android SDK ile gelen ve layout dosyalarında kullanacağımız temel öğeleri aşağıdaki

gibi sıralayabiliriz;

TextView

Metin değerlerini ekranda göstermek için kullanılır.

EditText

Kullanıcıdan alınacak metin ya da numara gibi girdileri kaynak kod tarafına iletmek için kullanılır.

HTML’deki input benzeri bir davranış gösterir. Kullanıcı giriş yaparken gireceği değere göre klavye

tipi seçilebilir.

ImageView

Resimleri ekranda göstermek için ImageView’dan faydalanırız. ImageView drawable klasöründe yer

alan dosyaları ya da başka bir kaynaktan elde edilen resimleri görüntülemek için uygundur.

Button

Düğme oluşturmak için Button öğesi kullanılabilir. Kullanıcı düğmeye bastığında kod içerisinde

oluşturulan bir dinleyici (onClickListener) içindeki kod çalıştırılarak düğmeye bir eylem atanabilir.

ListView

Satırlardan oluşan bir tablo oluşturmak için kullanılır. Belirli bir kaynaktan (veritabanı ya da web

servis) çekilen veriyi göstermek için uygundur. Uygulamalarda en sık kullanılan görsel öğelerin

başında gelir. Özellikle, satır tasarımlarının özel layout dosyaları ile değiştirilebilmesi esnek bir

kullanım sağlar.

WebView

Uygulama içerisinde bir HTML tabanlı web sitesi göstermek için kullanılır. Bu web sitesi uzak bir

sunucuda olabileceği gibi uygulamanın içinde saklanan HTML dosyaları da olabilir. Hibrid bir

uygulama hazırlamak için uygun bir yapıdır.

Spinner

Kullanıcının karşısına çoktan seçmeli bir menü getirmek için kullanılır. select HTML etiketiyle

karşılaştırılabilir. Kullanıcı Spinner öğesine bastığında karşısına geliştiricinin belirlediği bir menü

açılır ve burada seçim yapması beklenir. Yapılan seçimin cevabı kaynak kod içerisinde bir Listener

yardımıyla alınır.

MapView

Uygulamalara kolaylıkla Google Maps entegrasyonu yapmak için kullanılır. Google’dan alınan bir

API anahtarı yardımıyla uygulamamızda Google haritalarda yer alan bütün özellikleri MapView

yardımıyla kullanabiliriz. Konum tabanlı uygulamaların vazgeçilmez parçasıdır.

ProgressBar

Page 3: Android'e Giriş Eğitimleri 2_2

2

Kullanıcının karşısına bir durum çubuğu gelmesini sağlar. Yapılan uzun süreli bir işlemin (örn. web

servis çağırma, veritabanı güncelleme vb.) ne kadar süreceğine dair kullanıcı dostu bir mesaj

vermek için kullanır. AsyncTask konusu içerisinde daha detaylı anlatılacaktır.

SeekBar

Kullanıcının sağa ve sola çekebileceği bir çubuk oluşturur. Bu şekilde kullanıcı bir ses dosyasında

ileri geri gidebileceği gibi bir renk cetvelinde özel renkler belirleyebilir. Kullanıcının yaptığı değişim

bir Listener metodu uyarır ve kaynak kod içerisinde ilgili işlemlerin yapılmasını sağlar.

CheckBox

Kullanıcının evet / hayır değeri verebileceği bir kutu oluşturur.

9.LISTVIEW KULLANIMI

Mobil cihazlarda kullanıcılara birbiriyle ilişkili verileri listeyle vermek çok tercih edilen bir yöntemdir.

Kullanıcı listedeki veriler içinde tek parmağıyla yukarı-aşağı sürükleme yaparak dolaşabilir.

Android'te listeleme işlemleri yapabilmek için ListView isimli görsel öğe kullanılır. ListView, kendi

içinde satır satır TextView öğeleri bulunduran bir yapıdır. Bunun gibi birçok View'dan oluşan görsel

öğeler ViewGroup olarak da sınıflandırılır.

Aşağıdaki örnekte bir ListView'ı birkaç ülke ismiyle dolduracağız. Ardından listede üzerine

dokunulan ülkenin adını bir diyalog penceresinde göstereceğiz.

9.1.Yerleşim Dosyalarını Düzenleme

Öncelikle ListView'ı üzerinde tutacak olan Activity'nin (MainActivity.java) tasarımını çıkaralım. Bunun

için res/layout/ altındaki activity_main.xml dosyasını kullanıyoruz.

1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

2. xmlns:tools="http://schemas.android.com/tools"

3. android:layout_width="match_parent"

4. android:layout_height="match_parent"

5. android:paddingBottom="@dimen/activity_vertical_margin"

6. android:paddingLeft="@dimen/activity_horizontal_margin"

7. android:paddingRight="@dimen/activity_horizontal_margin"

8. android:paddingTop="@dimen/activity_vertical_margin"

9. tools:context=".MainActivity" >

10.

11. <ListView

12. android:id="@+id/listView1"

13. android:layout_width="match_parent"

14. android:layout_height="wrap_content"

Page 4: Android'e Giriş Eğitimleri 2_2

3

15. android:layout_alignParentLeft="true"

16. android:layout_alignParentTop="true" >

17. </ListView>

18.

19. </RelativeLayout>

Gördüğünüz gibi ListView'ı bir RelativeLayout içinde tutuyoruz. Kodların kalabalık olması bu yüzden.

Burada asıl önemli şey android:id="@+id/listView1" satırı. Burada ListView'ımıza listView1 ismini

veriyoruz.

XML üzerinde bir view nesnesine isim verirken o nesnenin android:id özelliğine @+id/ ön ekini ve

ardından da istediğimiz ismi veriyoruz.

Bu ismi (id) daha sonra Java sınıfımız içinde ListView'a erişmek için kullanacağız.

9.2.Gösterilecek Verileri Ayarlama

Şimdi listemizde göstereceğimiz ülke isimlerini taşıyan bir String dizisi tanımlayalım.

Bunu MainActivity sınıfımızın bir alanı olarak tanımlıyoruz. Böylece bu Activity oluşturulduğu an

elimizde bir ülke listesi olacak.

1. //Dosya Adı : MainActivity.java

2.

3. package org.gelecegiyazanlar.ornek.listview;

4.

5. import android.os.Bundle;

6. import android.app.Activity;

7.

8. public class MainActivity extends Activity {

9.

10. private String[] ulkeler =

11. {"Türkiye", "Almanya", "Avusturya", "Amerika","İngiltere",

12. "Macaristan", "Yunanistan", "Rusya", "Suriye", "İran", "Irak",

13. "Şili", "Brezilya", "Japonya", "Portekiz", "İspanya",

14. "Makedonya", "Ukrayna", "İsviçre"};

15.

16. @Override

17. protected void onCreate(Bundle savedInstanceState) {

18. super.onCreate(savedInstanceState);

19. setContentView(R.layout.activity_main);

Page 5: Android'e Giriş Eğitimleri 2_2

4

20. }

21. }

Bu basit String dizi tanımlamasından sonra artık yukarıda sözünü ettiğimiz Java sınıfı içinde

ListView'a erişmeyi ve onu yönetmeyi gerçekleştirelim. Bunun için şu üç adımı gerçekleştirmelisiniz.

(A) Kullanıcıya gösterilen ListView'a ulaşabilmek için onun bir referansını almak

(B) ListView'ımızı verilerle (ülke adları) buluşturacak olan Adapter'ı tanımlamak

(C) ListView'ımıza, bağlanacağı Adapter'ı belirtmek

9.3.ArrayAdapter nedir?

Adapter bir veri kaynağıyla, veriye ihtiyacı olan nesneyi birbirine bağlamaya yarayan yapılardır.

ListView gibi bir dizi veriyi içinde bulunduran yapılara, bu verileri ArrayAdapter aracılığıyla

veririz. ArrayAdapter bir veri kaynağındaki verileri (kısaca, veri modelini) görsel öğelerde

kullanmaya uygun hale getirir. Bunun görsel anlatımı şu şekildedir:

Prizdeki elektrik, telefonumuzun kullanacağı elektrikten farklı olduğu için bir dönüşüme ihtiyaç duyar.

Bu dönüşümü adaptör aracılığıyla yaparız. Adaptör, şebekeden gelen elektriği alır ve telefonun

kullanacağı türe çevirir.

Page 6: Android'e Giriş Eğitimleri 2_2

5

9.4.Verileri Gösterme

ArrayAdapter'ın veri ile görsel öğe arasındaki görevini inceledikten sonra kodumuza

(MainActivity.java) geri dönelim:

1. //Dosya Adı: MainActivity.java

2.

3. package org.gelecegiyazanlar.ornek.listview;

4.

5. import android.os.Bundle;

6. import android.widget.ArrayAdapter;

7. import android.widget.ListView;

8. import android.app.Activity;

9.

10.

11. public class MainActivity extends Activity {

12.

13. private String[] ulkeler =

14. {"Türkiye", "Almanya", "Avusturya", "Amerika","İngiltere",

15. "Macaristan", "Yunanistan", "Rusya", "Suriye", "İran", "Irak",

16. "Şili", "Brezilya", "Japonya", "Portekiz", "İspanya",

17. "Makedonya", "Ukrayna", "İsviçre"};

18.

19. @Override

20. protected void onCreate(Bundle savedInstanceState) {

21. super.onCreate(savedInstanceState);

22. setContentView(R.layout.activity_main);

23.

24. //(A) adımı

25. ListView listemiz=(ListView) findViewById(R.id.listView1);

26.

27. //(B) adımı

28. ArrayAdapter<String> veriAdaptoru=new ArrayAdapter<String>

29. (this, android.R.layout.simple_list_item_1, android.R.id.text1, ulkeler);

30.

31. //(C) adımı

32. listemiz.setAdapter(veriAdaptoru);

33.

Page 7: Android'e Giriş Eğitimleri 2_2

6

34. }

35. }

Ana kodumuzu Activity'nin onCreate() metoduna yazıyoruz. Böylelikle Activity oluşturulur

oluşturulmaz verilerimizi ArrayAdapter yardımıyla ListView'da göstermiş oluyoruz. Activity'nin her

onCreate() oluşunda çalışacak kodları şöyle açıklayabiliriz:

(A) adımında, önce liste öğemize (listemiz) bir referans değişkeni tayin ediyoruz ki artık o öğemizi

bir değişken ile kullanabilelim. findViewById() ile XML'de android:id ile isim verdiğimiz öğelere

erişiriz.

(B) adımında, new deyimiyle bir ArrayAdapter oluşturuyoruz. Oradaki <String>, ArrayAdapter'ın

içinde tutacağı verilerin türünü belirten bir deyim. ArrayAdapter'ın yapılandırıcı metodundaki

parametrelerse şu anlama geliyor:

o this: Context. Yani bağlam. Bu this deyimiyle değer olarak Activity'nin kendisinin dönmesini

sağlıyoruz (Activity sınıfının içindeyiz). ArrayAdapter, çalıştığı yerle ilgili bilgiyi Context'e ulaşarak

bulur.

o android.R.layout.simple_list_item_1: resource. Bu parametre, kullanıcının göreceği listenin

yerleşim dosyasıdır. Listemiz bu layout dosyasından bina edilecektir.

o android.R.id.text1: textViewResourceId Bu parametre, layout dosyasındaki TextView'ın adını (id)

verdiğimiz yerdir. Her bir veri buradaki bir TextView'a basılır.

(C) adımında artık ayarlamalarını bitirdiğimiz ArrayAdapter'i listemize gösteriyoruz.

Şu an uygulamamızı çalıştırdığımızda şöyle bir görüntü elde ederiz:

Page 8: Android'e Giriş Eğitimleri 2_2

7

9.5.Tıklama Olaylarını Yakalama

Sıra geldi listeye dokunulduğunda/tıklandığında olacaklara. Bunun için liste öğesine bir tıklama

dinleyici tayin etmemiz gerekiyor. Bu tıklama dinleyici ile tıklanan öğenin sırasını alıp, aynı

sırayı ulkeler isimli dizide indis olarak kullanacağız. Bu yolla ülke adını alıp ekrana diyalog olarak

göstereceğiz.

NOT: Aşağıdaki kodu onCreate() metodunun içine ve listemiz.setAdapter()'dan sonra yazmalısınız.

Page 9: Android'e Giriş Eğitimleri 2_2

8

1. //Dosya Adı: MainActivity.java

2.

3. listemiz.setOnItemClickListener(new OnItemClickListener() {

4.

5. @Override

6. public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position,

7. long id) {

8.

9. AlertDialog.Builder diyalogOlusturucu =

10. new AlertDialog.Builder(MainActivity.this);

11.

12. diyalogOlusturucu.setMessage(ulkeler[position])

13. .setCancelable(false)

14. .setPositiveButton("Tamam", new OnClickListener() {

15. @Override

16. public void onClick(DialogInterface dialog, int which) {

17. dialog.dismiss();

18. }

19. });

20. diyalogOlusturucu.create().show();

21.

22. }

23. });

NOT: Liste için tıklama/dokunma olaylarını dinlediğiniz setOnItemClickListener metodunun doğru

çalışması için kodunuzun başında

import android.widget.AdapterView.OnItemClickListener;

ifadesi bulunmalıdır.

listemiz.setOnItemClickListener() metodu, parametre olarak öğe tıklamalarını yakalamak için

oluşturulmuş bir arayüz (interface) alıyor. new ile hemen anonim

bir setOnItemClickListener oluşturuyoruz ve girilmesi zorunlu metotları Eclipse IDE yardımıyla

(setOnItemClickListener'ın altını kırmızı çizgiyle çizecektir; "add unimplemented methods"a

tıklamanız yeterli) ekliyoruz.

Listedeki bir öğeye tıklandığında onItemClick() metodu çalıştırılır.Bu metod bize hangi View'a

(burada ListView) tıklandığını, kaçıncı sıradaki (position) öğeye tıklandığını ve o öğenin adının (id)

bilgisini verir.

Kodumuzdaki önemli nokta AlertDialog oluşturucuyu tanımladıktan sonraki

Page 10: Android'e Giriş Eğitimleri 2_2

9

diyalogOlusturucu.setMessage(ulkeler[position])

kısmı. Burada oluşturacağımız diyalogun göstereceği yazıyı ayarlıyoruz. Parametre olarak ulkeler

dizisinin position indisli öğesini veriyoruz. position, onItemClick() metoduyla bize geliyor. Tıklanan

öğenin listedeki sırasını elde etmiş oluyoruz.

Diyalog kutusunu oluştururken bu sefer setPositiveButton(text, listener) metodunda, gösterilecek

düğmede yazacak metni ve tıklandığında olacakları yazıyoruz. İkinci parametre olarak yine

bir tıklama dinleyiciye ihtiyacımız var. Bununla bu düğmeye tıklandığında (onClick) olacakları

yazıyoruz. Buna göre diyalog kutumuzu kapatıyoruz.

Sonuç

Tıklama/dokunma dinleme işlemi için yazdığımız anonim sınıflardan oluşan bu kod yoğunluğu

gözümüzü korkutmamalı. Genelde sık sık tekrar edilen kodlardan oluşuyor. Üstelik bu kodu

yazarken editörün yardımını da alıyoruz.

Dokunma olayları için yazdığımız koddan sonra uygulamamızda bir listeye tıklandığında şöyle bir

görüntü elde ediyoruz:

Bu eğitim içeriğinde basit bir ListView gösterimini gerçekleştirdik. Ayrıntılı bir ListView örneği için

Android 301 eğitimlerindeki ListView Özelleştirmesi dersine bakabilirsiniz.

10.ANDROIDMANIFEST.XML

AndroidManifest.xml dosyası, herhangi bir Android projesinin olmazsa olmaz dosyasıdır. Bu

dosya xmlformatında oluşturulduğu için hem makina hem de insan tarafından okunabilir. Ayrıca

Android Geliştirme Ortamı - ADT'nin sağladığı özelliklerle birlikte, görsel arayüzü ile

uygulamalarınızda istediğiniz değişiklikleri kolayca yapabilmenizi sağlayan bir yapıya da

bürünmüştür.

Page 11: Android'e Giriş Eğitimleri 2_2

10

Aşağıdaki ekran görüntüsünde görebileceğiniz gibi ADT içinde AndroidManifest.xml dosyası 5 farklı

sekmeye ayrılmıştır. Şimdi tek tek bunların ne anlama geldiklerini ve bunlarla neler yapabileceğinize

bakalım:

10.1.Manifest

Manifest sekmesinde uygulamamızın paket adı, versiyon numaraları dahil başlıca özellikleri

değiştirebiliyoruz. Hemen altında yer alan "Manifest Extras" bölümünde ise, uygulamamızda yer

alacak kütüphaneler, kullanılabilecek ekran boyutları gibi bazı temel özellikler de eklenebilir.

Örneğin, burada yer alan Uses Sdk seçeneği ile uygulamamızın çalışmasını istediğimiz minimum

SDK sürümü ve hedeflediğimiz ana SDK sürümünü seçebiliyoruz:

Page 12: Android'e Giriş Eğitimleri 2_2

11

10.2.Application

Application sekmesinde uygulamamızın temel değişkenlerini ayarlayabiliyoruz. Uygulamanın tema,

simge, logo, açıklama ve gereken izinler gibi özelliklerini buradan ayarlayabileceğimiz gibi çoğu

zaman kodlama gerektirecek donanım hızlandırma, kullanıcı alanının yönetimi, yedekleme (backup)

gibi bazı özellikler için de görsel arayüzü kullanabiliyoruz. Örneğin, aşağıdaki ekran görüntüsünde

görebileceğiniz gibi Hardware accelerated (Donanım hızlandırma) = true şeklinde ayarladığımız

uygulama, artık bu özelliğe sahip oluyor. Kod çıktısını ise AndroidManifest.xml sekmesinde

gözlemleyebiliriz:

10.3.Instrumentation

Instrumentation sekmesinde uygulamanıza ek "enstrümanlar" ekleyebilirsiniz. Enstrümanlar,

uygulamanızın çalıştığı süreçten (process) ayrı olarak uygulamanızla ilgili testleri yerine getiren,

onun yaşam döngüsüne karışan ve onu takip eden Android bileşenleridir. Daha çok fonksiyonel

testler yazdığınızda burayı kullanacaksınız.

Page 13: Android'e Giriş Eğitimleri 2_2

12

10.4.AndroidManifest.xml

Tüm bu yukarıda saydığımız bileşenlerin kodda görüntülendiği ortam AndroidManifest.xml'dir.

Burada isterseniz görsel arayüzde yaptığınız değişikliklerin yansımalarını görebilirsiniz, isterseniz

de hiç görsel arayüze bulaşmadan doğrudan xml kodu da yazabilirsiniz:

İpucu: Application sekmesinde donanım hızlandırmayı görsel arayüzden etkin duruma getirmiştik,

yukarıdaki ekran görüntüsünde bu durumun xml kodundaki yansımasını görebilirsiniz

11.DESTEKLEME KÜTÜPHANESİ'NİN (SUPPORT LİBRARY) KURULUMU

Android'te farklı API seviyeleri için uygulama geliştirirken bazı özelliklerin eski sürümlerde

olmadığını fark etmişsinizdir. İşte bu noktada devreye Support Library yani Destekleme Kütüphanesi

Page 14: Android'e Giriş Eğitimleri 2_2

13

devreye girer. Android destekleme kütüphanesi, Andorid API'lerinin geriye dönük

uyumluluğunu sağlayan bir takım kod kütüphanerinden oluşur. Her destekleme kütüphanesi belli

Android API seviyesi için geriye dönük uyumluluk sağlar.

Geliştirdiğiniz projeye Android Destekleme Kütüphaneleri'ni nasıl kuracağınız, kullanmayı istediğiniz

özelliklere ve destek vermek istediğiniz Android sürüm yelpazesinin genişliğine bağlıdır.

Bu eğitim içeriği Destekleme Kütüphanesi (Support Library) paketinin indirilmesinden projeye

eklenmesine kadar olan kısımlarda size rehberlik edecektir:

1. Destekleme Kütüphanesi'nin (Support Library) indirilmesi

2. Destekleme Kütüphanesi'nin seçimi

3. Destekleme Kütüphaneleri'nin eklenmesi

1. Kütüphanelerin ek kaynaklar (Resources) olmadan eklenmesi

2. Kütüphanelerin ek kaynaklarıyla birlikte eklenmesi

4. Destekleme Kütüphanesi API'lerinin kullanımı

1. Manifest dosyasındaki ilan (Declaration) değişiklikleri

5. Kod Örnekleri

11.1..Destekleme Kütüphaneleri'nin (Support Library) İndirilmesi

Android Destekleme Kütüphanesi paketi Android SDK'ya ek olarak sunulur ve Android SDK Yönetici

(Android SDK Manager) aracılığıyla ulaşılabilir. Destekleme Kütüphanesi dosyalarını edinmek için

aşağıdaki talimatları takip edin:

1. Android SDK Manager'ı açın.

2. SDK Manager penceresindeyken listeyi aşağı kaydırın ve Extrac dizinine gelin.

3. Android Support Library öğesini seçin.

NOT: Eğer Android Studio kullanıyorsanız bunun yerine Android Support Repository'yi seçin ve

kurun.

4. Sağ alttaki Install Packages... düğmesine tıklayın.

Page 15: Android'e Giriş Eğitimleri 2_2

14

Resim 1: Android SDK Manager ve seçili Android Support Library öğesi.

Kütüphane dosyaları Android SDK dizininin olduğu yere inecektir. SDK dizininizin

altındaki/extras/android/support/ dizininde bulabilirsiniz.

11.2.Destekleme Kütüphaneleri'nin Seçimi

Bir destekleme kütüphanesini uygulamanıza eklemeden önce hangi özellikleri uygulamanıza

eklemek istediğinize ve destekleyeceğiniz en düşük Android sürümünün ne olacağına karar

vermelisiniz. Farklı destekleme kütüphanelerinin sağladığı özellikler hakkında daha fazla bilgi almak

için Destekleme Kütüphanesi Özellikleri (Support Library Features) belgesine bakınız.

11.3.Destekleme Kütüphaneleri'nin Eklenmesi

Bir Destekleme Kütüphanesi'ni kullanmak için projenizin CLASSPATH bağımlılıklarını ona uygun

düzeltmeniz gerekir. CLASSPATH bağımlılıkları, projenizin doğru geliştirilmesi, derlenmesi ve

çalıştırılması için gerekli bağımlılıklara ilişkin bilgileri tutar. Bu işlemi kullanmak istediğiniz her

Destekleme Kütüphanesi için gerçekleştirmeniz de gerekiyor.

Page 16: Android'e Giriş Eğitimleri 2_2

15

Eğer bir kütüphanenin kaynak (resource) içerdiğinden emin değilseniz Destekleme Kütüphanesi

Özelliklerisayfasına bakınız. Sıradaki bölümler kaynaklarla veya kaynaklar olmadan destekleme

kütüphanesini projenize nasıl ekleyeceğinizi açıklıyor.

11.3.Kütüphanelerin Ek Kaynaklar (Resources) Olmadan Eklenmesi

Eclipse kullanıyorsanız:

1. Android SDK Manager kullanarak Android Support Library'yi indirdiğinizden emin olun.

2. Projenizin ana dizininde /libs isimli bir dizin oluşturun.

3. Android SDK kurulum dizinindeki ilgili JAR dosyasını (Örn: /extras/android/support/v4/android-

support-v4.jar dizininde) projenizin /libs dizinine kopyalayın.

4. JAR dosyasına sağ tıklayın ve Build Path > Add to Build Path öğesini seçin.

Android Studio kullanıyorsanız:

1. Android SDK Manager kullanarak Android Support Repository'yi indirdiğinizden emin olun.

2. Uygulamanızın build.gradle dosyasını açın.

3. dependencies bölümüne destekleme kütüphanesini ekleyin. Örneğin "v4 support" kütüphanesini

eklemek için şu satırları ekleyebilirsiniz:

1. dependencies {<br />

2. &nbsp; &nbsp; ...<br />

3. &nbsp; &nbsp; compile "com.android.support:support-v4:20.0.+"<br />

4. }

Kütüphanelerin ek kaynaklarıyla birlikte eklenmesi

Bir destek kütüphanesini uygulamanıza kaynaklarıyla beraber (örneğin Action Bar için v7

appcompat gibi) eklemek için şunları yapabilirsiniz:

Eclipse kullanıyorsanız:

Öncelikle destek kütüphanesi temelli bir kütüphane projesi oluşturmalısınız:

Kütüphane Projesi nedir?

Bir Android kütüphane projesi paylaşılan Android kaynak kodlarını ve kaynaklarını (resources) bir

arada tutan projedir. Diğer Android projeleri kütüphane projelerini referans alabilir ve derleme

zamanında onun derlenmiş kaynaklarını kendi .apk dosyasına dahil edebilir. Birçok uygulama

projesi aynı kütüphaneye referans verebilir. Aynı zamanda tek uygulama projesi de birden fazla

kütüphane projesine referans verebilir. Daha fazla bilgi için buraya bakabilirsiniz.

Page 17: Android'e Giriş Eğitimleri 2_2

16

1. Android SDK Manager kullanarak Android Support Library'yi indirdiğinizden emin olun.

2. Bir kütüphane projesi oluşturun ve gerekli JAR dosyalarının projenin Build Path'inde olduğuna emin

olun:

1. File menüsünden Import'u seçin.

2. Existing Android Code Into Workspace seçeneğini seçin ve Next'e basın.

3. SDK kurulum dizinine ve ardından destekleme kütüphanesi dizinine göz atın. Örneğin

birappcompat projesi ekliyorsanız /extras/android/support/v7/appcompat/ dizinine bakmalısınız.

4. Proje eklemeyi bitirmek için Finish düğmesine basın. v7 appcompat projesi için android-support-v7-

appcompat isimli bir proje görüyor olmalısınız.

5. Bu yeni kütüphane projenizde /libs dizinine girip tüm JAR dosyalarının üzerine gelip sağ

tıklayarak Build Path > Add to Build Path seçeneğini seçmelisiniz. Örneğin v7 appcompat projesi

eklediğinizde libs dizinindeki android-support-v4.jar ve android-support-v7-

appcompat.jar dosyalarını Build Path'e ekleyin.

6. Kütüphane projenizin dizinine sağ tıklayın ve Build Path > Configure Build Path öğesini seçin.

7. Order and Export sekmesindeyken az önce Build Path'e eklediğiniz .jar dosyalarını işaretleyin ki

bu kütüphane projesine bağımlı olan projeler için kullanılabilir olsun. Örnekteki appcompat projesi

için android-support-v4.jar ve android-support-v7-appcomat.jar dosyalarının ikisini de dışarı

aktarımı (export) gerekiyor.

Page 18: Android'e Giriş Eğitimleri 2_2

17

8. Android Dependencies öğesinin işaretini kaldırın.

9. Değişiklikleri tamamlamak için OK düğmesine basın.

Artık bir ya da birden fazla uygulama projesinde kullanabileceğiniz, seçtiğiniz destekleme

kütüphanesini sağlayan bir kütüphane projeniz var.

Bu kütüphane projesini uygulama projenize ekleyebilirsiniz:

1. Project Explorer'da iken projenize sağ tıklayın ve Properties'i seçin.

2. Soldaki Android öğesini seçin.

3. Library bölümündeki Add düğmesini seçin.

4. Açılan pencereden kütüphane projesini seçin ve OK düğmesine basın. Örneğin appcompat

projesi android-support-v7-appcompat olarak listeleniyor olmalı.

5. OK düğmesine basın.

Page 19: Android'e Giriş Eğitimleri 2_2

18

NOT: Eğer android-support-v7-mediarouter destekleme kütüphanesini kullanıyorsanız onun

android-support-v7-appcompat kütüphanesine bağımlılığı olduğuna dikkat ediniz. android-support-

v7-mediarouter kütüphanesini derlemek istiyorsanız çalışma alanınıza (workspace) iki projeyi de

import etmelisiniz. Bunun ardından v7 appcompat projesini bir kütüphane olacak şekilde v7

mediarouter kütüphane projesine ekleyebilirsiniz.

Android Studio kullanıyorsanız:

1. Android SDK Manager kullanarak Android Support Repository'yi indirdiğinizden emin olun.

2. Uygulamanızın build.gradle dosyasını açın.

3. dependencies bölümüne destekleme kütüphanesi ile ilgili ibareyi ekleyin.

Örneğin appcompatprojesini dahil etmek için compile "com.android.support:appcompat-

v7:18.0.+" satırını ekleyin:

1. dependencies {<br />

2. &nbsp; &nbsp; ...<br />

3. &nbsp; &nbsp; compile "com.android.support:appcompat-v7:18.0.+"<br />

4. }

11.4.Destekleme Kütüphanesi API'lerinin Kullanımı

Destekleme Kütüphanesinin mevcut Android framework API'leri için destek sağlayan sınıflarının,

framework sınıflarına benzeyen tipik isimleri vardır fakat android.support paketinde yer alırlar

veya *Compat son ekiyle isimlendirilmişlerdir.

Uyarı: Destekleme kütüphanesinden sınıflarla çalıştığınızda doğru paketten doğru sınıfı import

ettiğinizden emin olmalısınız. Örneğin ActionBar sınıfı üzerinde çalışırken:

• Destekleme kütüphanesi kullanıyorken android.support.v7.app.ActionBar

• API 11 ve üst sürümleri için geliştiriyorken android.app.ActionBar

sınıflarını import ettiğinizden emin olmalısınız.

NOT: Uygulama projenize destekleme kütüphanesini dahil ettikten sonra, uygulamanızın APK

dosyasını yayıma (release) hazırlayan ProGuard isimli aracı kullanmanızı ısrarla öneriyoruz. Kaynak

kodunuzu koruma işlevine ek olarak ProGuard, uygulamanıza eklediğiniz her kütüphanedeki

kullanılmayan sınıfları kaldırır ve bu sayede uygulamanızın indirme boyutunu mümkün olduğu kadar

küçültür. Daha fazla bilgi için ProGuard belgelerine bakınız.

Page 20: Android'e Giriş Eğitimleri 2_2

19

11.5.Manifest Dosyasındaki İlan (Declaration) Değişiklikleri

Uygulamanızın geriye dönük uyumluluğunu destekleme kütüphanesi kullanarak artırıyorsanız,

uygulamanızın manifest dosyasını da güncellediğinizden emin olmalısınız. Özellikle <uses-sdk>

etiketinin android:minSdkVersion elementini güncellemelisiniz. Örneğin:

1. &lt;uses-sdk

2. &nbsp; &nbsp; &nbsp; android:minSdkVersion="7"

3. &nbsp; &nbsp; &nbsp; android:targetSdkVersion="20" /&gt;

Bu değişiklik Google Play Store'a uygulamanızın Android 2.1 (API 7) ve üstü Android sürümü kurulu

cihazlara kurulabileceğini söyler.

NOT: Eğer v4 support ve v7 appcompat kütüphanelerini uygulamanıza dahil ediyorsanız minimum

SDK sürümünü "7" olarak ("4" değil) tanımlamalısınız. Uygulamanıza eklediğiniz en yüksek

destekleme kütüphanesinin seviyesi, üzerinde çalışabileceği en düşük API sürümünü belirler.

Kod Örnekleri

Her destekleme kütüphanesi destek API'lerini kolaylıkla kullanmaya başlayabilesiniz diye kod

örnekleri içerir. Bu kodlar SDK Manager'dan indirdiğiniz paketin içinde yer alır ve Android SDK

kurulum dizininde bulunurlar:

4. sürüm için örnekler: /extras/android/support/samples/Support4Demos/

7. sürüm için örnekler: /extras/android/support/samples/Support7Demos/

13. sürüm için örnekler: /extras/android/support/samples/Support4Demos/

App Navigation örnekleri: /extras/android/support/samples/SupportAppNavigation/

Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış

içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta

belirlenen koşullara göre kullanılmıştır.

Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Support Library Setup

12.ACTİON BAR EKLEMEK

Action Bar, uygulamanızın Activity'leri için gerçekleyebileceğiniz en önemli tasarım elementlerinden

birisidir. Diğer Android uygulamalarıyla tutarlı bir arayüz sağlanmasına yardımcı olacak

ve uygulamanızı kolayca alışılabilir kılacak birkaç önemli kullanıcı arayüzü özelliği sağlar. Ana

işlevleri şunlardır:

Uygulamanıza bir kimlik veren ve kullanıcının uygulamanızdaki yerini belli eden ayrılmış bir alan

Page 21: Android'e Giriş Eğitimleri 2_2

20

Önemli eylemlere (Arama gibi) tahmin edilebilir bir yolla erişim

Navigasyon ve görüntü değiştirme desteği (sekmelerle veya açılır listelerle)

Bu eğitim içeriği ve altındakiler Action Bar'ın temellerine hızlı bir geçiş niteliğinde olacak.

Sıradaki Konular

Action Bar'ı Ayarlamak: Basit bir Action Bar'ı Activity'nize nasıl ekleyeceğinizi öğrenebilirsiniz.

(Android Support Library kullanarak)

Eylem Düğmelerini Eklemek: Action Bar'a nasıl kullanıcı eylemi ekleyebileceğinizi ve tepki

verdireceğinizi öğrenebilirsiniz.

Action Bar'ı Biçimlendirmek: Action Bar'ınızın görünümünü nasıl özelleştireceğinizi öğrenebilirsiniz.

Action Bar'ı Kaplama Olarak Kullanmak: Action Bar'ı layout'unuzun önüne kaplama olarak eklemeyi

ve gizlerken geçişleri kullanıcıya fark ettirmeden yapmayı öğrenebilirsiniz.

Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış

içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta

belirlenen koşullara göre kullanılmıştır.

Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Adding the Action Bar

12.1.Action Bar'ı Ayarlamak

En temel haliyle Action Bar, Activity'nin başlığını ve uygulamanın simgesini (solda) gösterir. En basit

halinde bile kullanıcılara nerede olduklarını bildirmek ve uygulamanızın kimliğini tutarlı kılmak için

kullanışlıdır.

Örnek 1: Activity başlığı ve uygulama simgesiyle birlikte örnek bir Action Bar

Action Bar'ı eklemek için Action Bar'a izin veren bir temayı kullanan Activity gerekiyor. Böyle bir

temanın nasıl isteneceği uygulamanızın desteklediği en düşük Android sürümüne bağlıdır. Bu

nedenle bu eğitim içeriği desteklenebilecek en düşük Android sürümüne bağlı olarak iki parçaya

ayrılmıştır.

Page 22: Android'e Giriş Eğitimleri 2_2

21

Android 3.0 Ve Üstünü Desteklemek

Android 3.0 (API level 11) ile birlikte Theme.Holo temasını kullanan tüm Activity'lerin içine Action

Bar yerleştirilmiş oldu. Theme.Holo teması targetSdkVersion veya minSdkVersion değerlerini "11"

veya yukarısı yaptığınızda varsayılan olarak etkin olan bir temadır.

Kısacası Activity'lerinize Action Bar eklemek istiyorsanız, basitçe her iki değeri 11 ve üstü yapmanız

yeterli. Örnek:

1. &lt;manifest ... &gt;<br />

2. &nbsp; &nbsp; &lt;uses-sdk android:minSdkVersion="11" ... /&gt;<br />

3. &nbsp; &nbsp; ...<br />

4. &lt;/manifest&gt;

Not: Eğer kendiniz bir tema oluşturduysanız, onun Theme.Holo temasını ebeveyni (parent) olarak

kullandığından emin olmalısınız.

Artık Theme.Holo teması, uygulamanıza ve tüm Activity'lerine Action Bar gösterilebilmesini

sağlayacaktır.

Android 2.1 Ve Üstünü Desteklemek

Android 3.0'dan aşağıdaki (Android 2.1'e kadar) sürümlerde Action Bar eklemek için uygulamanıza

Android Support Library'yi eklemeniz gerekiyor.

Başlamak için "Support Library Kurulumu" belgesini okumanız ve v7 appcompat kütüphanesini

kurmanız gerekiyor.

Projeniz ile Support Library entegrasyonunu tamamladıysanız devam edebilirsiniz:

1. Activity'nizi ActionBarActivity sınıfından türeyecek şekilde güncelleyin. Örneğin:

public class MainActivity extends ActionBarActivity { ... }

2. Manifest dosyasında <application> elemanını veya her <activity> elemanını Theme.AppCompat

temasını kullanacak şekilde güncelleyin. Örneğin:

&lt;activity android:theme="@style/Theme.AppCompat.Light" ... &gt;

NOT: Eğer kendiniz bir tema oluşturduysanız, onun Theme.AppCompat temasını ebeveyni (parent)

olarak kullandığından emin olmalısınız. Ayrıntılar için Action Bar'ı Biçimlendirmek içeriğine

bakabilirsiniz.

Artık Activity'niz Android 2.1 (API 7) ve üzerindeki sürümlerde Action Bar ile birlikte gelecektir.

Manifest dosyasında uygulamanızın API seviyesini de uygun şekilde belirtmeniz gerektiğini bir kez

daha hatırlatmış olalım:

Page 23: Android'e Giriş Eğitimleri 2_2

22

1. &lt;manifest ... &gt;

2. &nbsp; &nbsp; &lt;uses-sdk android:minSdkVersion="7"

&nbsp;android:targetSdkVersion="18" /&gt;

3. &nbsp; &nbsp; ...

4. &lt;/manifest&gt;

Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış

içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta

belirlenen koşullara göre kullanılmıştır.

Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Setting Up the Action Bar

12.2.Eylem Düğmeleri Eklemek

Action Bar, uygulamanızın o anki bağlamıyla ilgili önemli işlemleri düğme olarak

üzerinize eklemenize olanak sağlar. Bu düğmeler bir simge ve/veya metin ile doğrudan Action Bar'ın

üzerinde görünür. Bundan sonra bu düğmeleri "Eylem düğmeleri" olarak anacağız. Action Bar'a

sığmayan veya yeterince önemli olmayan eylemler bir yere gizlenir. Bu yere da taşan eylemler

bölümü (actions overflow) ismini veriyoruz.

Resim 1. Arama için bir eylem düğmesi ve ek eylemleri bulunduran "taşan eylemler" bölümüyle (sağdaki üç nokta) bir Action Bar.

Bu belgede şu başlıkları bulacaksınız:

1. Eylemlerin XML İçinde Tanımlanması

2. Eylemlerin Action Bar'a Eklenmesi

3. Eylem Düğmelerinin Tepki Vermesi

4. Alt Seviyedeki Activity'ler için Yukarı Düğmesinin Eklenmesi

12.3.Eylemlerin XML içinde Tanımlanması

Tüm eylem düğmeleri ve taşan eylemler bölümündeki diğerleri bir XML menü kaynağı olarak

tanımlanır. Eylem düğmelerini Action Bar'a eklemek için projenizin res/menu dizininde yeni bir XML

dosyası oluşturun. İçine de eklemek istediğiniz her eylem için bir <item> öğesi ekleyin. Örneğin:

res/menu/main_activity_actions.xml

1. &lt;menu xmlns:android="http://schemas.android.com/apk/res/android" &gt;<br />

2. &nbsp; &nbsp; &lt;!-- Arama, eylem düğmesi olarak görülebilir&nbsp;--&gt;<br />

Page 24: Android'e Giriş Eğitimleri 2_2

23

3. &nbsp; &nbsp; &lt;item android:id="@+id/action_arama"<br />

4. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:icon="@drawable/ic_action_arama"<br />

5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:title="@string/action_arama"<br />

6. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:showAsAction="ifRoom" /&gt;<br />

7. &nbsp; &nbsp; &lt;!-- Ayarlar, daima&nbsp;taşan eylemler bölümünde durabilir&nbsp;--

&gt;<br />

8. &nbsp; &nbsp; &lt;item android:id="@+id/action_ayarlar"<br />

9. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:title="@string/action_ayarlar"<br />

10. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:showAsAction="never" /&gt;<br />

11. &lt;/menu&gt;

Bu şekilde bir kod ile arama eylemi eğer Action Bar'da yeterli alan varsa eylem düğmesi

olarak görüntülenir. Fakat Ayarlar eylemi daima taşan eylemler bölümünde görünür. (Varsayılan

olarak tüm eylemler taşan eylemler bölümünde görünür fakat daha iyisi, önemli her eylemi açıkça

göstermektir)

NOT: Android'in ikonografisi ile en iyi uyumu yakalamak için Action Bar Simge Seti içinde sunulan

simgeleri kullanmalısınız.

"icon" özelliği için bir görselin kaynak ID'sini vermeniz gerekiyor. Projenizin res/drawable dizinine

kaydettiğiniz bitmap görselinin isminin @drawable/ ile başlaması gerekir. Örneğin

"@drawable/ic_action_arama" ifadesi ic_action_arama.png dosyasına karşılık gelir. Benzer şekilde

"title" özelliği de projenizin res/values/ dizinindeki XML dosyasında tanımlı bir string kaynağını

kullanır. Bu konuyu daha sonra Basit Kullanıcı Arayüzleri Oluşturma (Building a Simple User

Interface) başlığı altında inceleyeceğiz.

NOT: Uygulamanızın simgesini veya diğer bitmap görsellerini oluştururken en önemli nokta, bu

kaynakların farklı ekran yoğunluklarına uygun farklı sürümlerini de oluşturmanızdır. Bu konu Farklı

Ekranları Desteklemek hakkındaki içerikte daha sonra ayrıntılı olarak ele alınacak.

Uygulamanız Android 2.1 gibi düşük sürümlerle uyumluluk için Support Library

kullanıyorsa, showAsAction özelliği android: isim uzayında kullanılamayacaktır. Support Library

tarafından sağlanan bu özellik yerine kendi XML isim uzayını tanımlamalısınız ve bunu

showAsAction özelliğinin ön eki olarak kullanmalısınız. (Elle verilmiş bir XML isim uzayı

uygulamanızın ismine uygun olmalıdır fakat istediğiniz herhangi bir isim de olabilir. Bu isim sadece

onu ilan ettiğiniz dosyanın kapsamında geçerli olacaktır) Örneğin:

res/menu/main_activity_actions.xml

Page 25: Android'e Giriş Eğitimleri 2_2

24

1. &lt;menu xmlns:android="http://schemas.android.com/apk/res/android"<br />

2. &nbsp; &nbsp; &nbsp; xmlns:uygulamaismi="http://schemas.android.com/apk/res-auto"

&gt;<br />

3. &nbsp; &nbsp; &lt;!-- Arama, eylem düğmesi olarak görülebilir --&gt;<br />

4. &nbsp; &nbsp; &lt;item android:id="@+id/action_search"<br />

5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:icon="@drawable/ic_action_search"<br />

6. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:title="@string/action_search"<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uygulamaismi:showAsAction="ifRoom" &nbsp;/&gt;<br

/>

8. &nbsp; &nbsp; ...<br />

9. &lt;/menu&gt;

12.4.Eylemlerin Action Bar'a Eklenmesi

Menü öğelerini Action Bar'a yerleştirmek için Activity'nizin onCreateOptionsMenu() isimli callback

metodunu gerçeklemeniz gerekir. Bu metotla Menu nesnesi içinde verilen menü kaynağını

gösterime hazır edebilirsiniz (inflate). Örneğin:

1. @Override

2. public boolean onCreateOptionsMenu(Menu menu) {

3. &nbsp; &nbsp; // Action Bar içinde kullanılacak menü öğelerini inflate edelim

4. &nbsp; &nbsp; MenuInflater inflater = getMenuInflater();

5. &nbsp; &nbsp; inflater.inflate(R.menu.main_activity_actions, menu);

6. &nbsp; &nbsp; return super.onCreateOptionsMenu(menu);

7. }

12.5.Eylem Düğmelerinin Tepki Vermesi

Kullanıcı eylem düğmelerine veya taşan eylemler bölmesindeki diğer öğelere tıkladığında, sistem

Activity'nizin onOptionsItemSelected() isimli callback metodunu çağırır. Bu metotdaki

gerçekleştiriminiz (implementasyonunuz) ise metodun

verdiği MenuItem üzerinden getItemId() metodunu çağırır ve böylece kullanıcının bastığı öğesi

belirlersiniz. Dönen ID değeri, sizin tanımladığınız <item> elementinin içindekiandroid:id özelliğinin

değeri olacaktır.

1. @Override

2. public boolean onOptionsItemSelected(MenuItem item) {

3. &nbsp; &nbsp; // Action Bar öğelerindeki basılmaları idare edelim

4. &nbsp; &nbsp; switch (item.getItemId()) {

5. &nbsp; &nbsp; &nbsp; &nbsp; case R.id.action_search:

Page 26: Android'e Giriş Eğitimleri 2_2

25

6. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; openSearch();

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;

8. &nbsp; &nbsp; &nbsp; &nbsp; case R.id.action_settings:

9. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; openSettings();

10. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;

11. &nbsp; &nbsp; &nbsp; &nbsp; default:

12. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return super.onOptionsItemSelected(item);

13. &nbsp; &nbsp; }

14. }

12.6.Alt Seviyedeki Activity'ler için Yukarı Düğmesinin Eklenmesi

Uygulamanıza ana giriş noktası sağlamayan ("ana" ekran olmayan Activity'ler) tüm ekranlar,

kullanıcıya mantıksal olarak ebeveyni olan ekrana geçebilmesi için Action Bar'daki yukarı düğmesi

yardımıyla uygulamanızın hiyerarşisi içinde gezinme yolunu sunmalıdır.

Resim 2. Gmail'deki Yukarı düğmesi.

Android 4.1 ve üzerinde çalışırken veya Support Library'deki ActionBarActivity'yi

kullanırken, "yukarı" gezinmeyi sağlamak için manifest dosyasında Activity'ye ebeveyn olan

Activity'yi basitçe tanımlamalı ve o alttaki Activity'de Action Bar için "yukarı" düğmesinin etkin

olmasını sağlamalısınız.

Aşağıdaki örnekte, bir Activity'nin ebeveyn Activity'sini manifest dosyasında nasıl tanımlayacağınızı

görebilirsiniz:

1. &lt;application ... &gt;<br />

2. &nbsp; &nbsp; ...<br />

3. &nbsp; &nbsp; &lt;!-- Ana (main) Activity&nbsp;(Ebeveyni olmayan) --&gt;<br />

4. &nbsp; &nbsp; &lt;activity<br />

5. &nbsp; &nbsp; &nbsp; &nbsp; android:name="org.tcellgy.android.ornek1.MainActivity"

...&gt;<br />

6. &nbsp; &nbsp; &nbsp; &nbsp; ...<br />

7. &nbsp; &nbsp; &lt;/activity&gt;<br />

8. &nbsp; &nbsp; &lt;!-- MainActivity'nin bir çocuğu&nbsp;--&gt;<br />

9. &nbsp; &nbsp; &lt;activity<br />

10. &nbsp; &nbsp; &nbsp; &nbsp; android:name="org.tcellgy.android.ornek1.DetayActivity"<br

/>

Page 27: Android'e Giriş Eğitimleri 2_2

26

11. &nbsp; &nbsp; &nbsp; &nbsp; android:label="@string/title_activity_detay"<br />

12. &nbsp; &nbsp; &nbsp; &nbsp;

android:parentActivityName="org.tcellgy.android.ornek1.MainActivity" &gt;<br />

13. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- 4.0 ve aşağısını desteklemek için ebeveyn Activity meta-

datası&nbsp;--&gt;<br />

14. &nbsp; &nbsp; &nbsp; &nbsp; &lt;meta-data<br />

15. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

android:name="android.support.PARENT_ACTIVITY"<br />

16. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

android:value="com.example.myfirstapp.MainActivity" /&gt;<br />

17. &nbsp; &nbsp; &lt;/activity&gt;<br />

18. &lt;/application&gt;

Ardından setDisplayHomeAsUpEnabled() metodunu çağırarak uygulama simgenizin Yukarı

düğmesi gibi çalışmasını sağlayabilirsiniz:

1. @Override

2. public void onCreate(Bundle savedInstanceState) {

3. super.onCreate(savedInstanceState);

4. setContentView(R.layout.activity_displaymessage);

5.

6. getSupportActionBar().setDisplayHomeAsUpEnabled(true);

7. // minSdkVersion değerini 11 ve üstüyse bunu kullanın:

8. // getActionBar().setDisplayHomeAsUpEnabled(true);

9. }

Sistem MainActivity'yi DetayActivity'nin ebeveyni bildiği için kullanıcı Yukarı düğmesine bastığında

uygun ebeveyn Activity gösterilecektir - sizin Yukarı düğmesi için bir şey yapmanıza gerek

kalmayacaktır.

Yukarı gezinme hakkında daha fazla bilgi için Yukarı Gezinmeyi Sağlamak (Providing Up

Navigation) belgesine bakınız.

Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış

içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta

belirlenen koşullara göre kullanılmıştır.

Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Adding Action Buttons

Page 28: Android'e Giriş Eğitimleri 2_2

27

12.7.Action Bar'ı Biçimlendirmek

Action Bar, kullanıcının uygulamanıza aşina olmasını ve gerçekleştireceği eylemleri daha kolay

tahmin etmesini sağlar. Fakat bu durum, uygulamanızdaki Action Bar'ın diğer uygulamalardakiyle

aynı olması gerektiği anlamına gelmiyor. Action Bar'ı ürününüzü daha iyi yansıtacak ya da

çağrıştıracak şekilde biçimlendirmek isterseniz, kolaylıkla Android'in stil ve tema kaynaklarını

kullanabilirsiniz.

Android'in "dark" ve "light" Action Bar stili içeren birkaç tane Activity teması kendiliğinden vardır.

Action Bar'ınızın görünümünü değiştirmek istediğinizde bu temalardan yeni tema türetebilirsiniz.

NOT: Action Bar için Support Library API'lerini kullanıyorsanız, stillerinizde mutlaka

Theme.AppCompat tema ailesini kullanmalısınız. Böyle yaptığınızda stillerinizde ilan ettiğiniz stil

özelliklerini iki kere ilan etmiş olmanız gerekecek: biri platformun stil özelliklerini (android: isim

uzayındaki özellikler) kullanarak ilan edilecek, diğeri Support Library içindeki stil özelliklerini

kullanarak ilan edilecek. Bu cümle kafanızı karıştırmasın. Support Library kullanan örneklerdeki bu

iki seferlik kullanımı aşağıdaki örneklerde bulabilirsiniz.

Bu belgede Action Bar Biçimlendirme ile ilgili şu başlıkları bulacaksınız:

1. Yerleşik Android Temasının Kullanılması

2. Arkaplanın Özelleştirilmesi

3. Metin Renginin Özelleştirilmesi

4. Sekme Göstergesinin (Tab Indicator) Özelleştirilmesi

12.8.Yerleşik Android Temasının Kullanılması

Android'in Action Bar renklerine uygulanabilecek iki temel Activity teması var:

Theme.Holo isimli "dark" yani "karanlık" bir tema

Theme.Holo.Light isimli "light" yani "aydınlık" bir tema

Page 29: Android'e Giriş Eğitimleri 2_2

28

Bu temaları tüm uygulamanıza veya birbirinden bağımsız olarak Activity'lerinize uygulamak için

manifest dosyanızdayken android:theme özelliğini <application> veya <activity> elementlerinde

ilan edebilirsiniz. Örnek:

&lt;application android:theme="@android:style/Theme.Holo.Light" ... /&gt;

Theme.Holo.Light.DarkActionBar temasını ilan ederek Activity'nin geri kalanı aydınlık temayı

kullanırken Action Bar'ınızın karanlık temayı kullanmasını da sağlayabilirsiniz.

Eğer Support Library kullanıyorsanız, Theme.AppComat temalarını kullanmanız gerekiyor:

Karanlık tema için Theme.AppCompat teması

Aydınlık tema için Theme.AppCompat.Light teması

Aydınlık tema ve karanlık Action Bar için Theme.AppCompat.Light.DarkActionBar teması

Page 30: Android'e Giriş Eğitimleri 2_2

29

Action Bar'daki simgelerinizin Action Bar renkleriyle uyumlu ve seçilebilir olduğundan emin

olmalısınız. Yardımcı olması açısından Holo Light ve Holo Dark Action Bar temaları için

kullanabileceğiniz Action Bar Simge Seti'ne göz atmalısınız.

12.9.Arkaplanın Özelleştirilmesi

Action Bar'ın arkaplanını değiştirmek için Activity'niz için özel (custom) bir tema oluşturmalı

ve "actionBarStyle" isimli özelliği override (yeniden yazmalısınız) etmelisiniz. Bu özellik başka bir

stili işaret edecek. Bu stilde de Action Bar arkaplanı için bir resim kaynağı (drawable

resource) tanımlayabileceğiniz "background" özelliğini override edeceksiniz.

Uygulamanız gezinme sekmeleri (navigation tabs) veya ayrılmış (split) Action Bar kullanıyorsa,

bunlar için de arkaplan tanımlayabilirsiniz. Bunu yapmak için

sırasıyla backgroundStacked ve backgroundSplit isimli özellikleri kullanabilirsiniz.

Dikkat: Burada önemli olan şey özel temanızdan uygun bir ebeveyn temanın ve onun stillerinden

uygun stillerin ilan (declaring) edilmesidir. Bir ebeveyn (parent) stil olmadığında Action Bar'ınız

birçok stil özelliğinden mahrum kalacaktır - kendiniz onları tek tek ilan etmezseniz.

Android 3.0 Ve Üst Sürümleri İçin

Sadece Android 3.0 ve üst sürümlerini destekleyecekseniz, Action Bar'ınızın arkaplanını şuna

benzer şekilde tanımlayabilirsiniz:

res/values/themes.xml

1. &lt;?xml version="1.0" encoding="utf-8"?&gt;

2. &lt;resources&gt;

3. &nbsp; &nbsp; &lt;!-- uygulama veya Activity ye uygulanacak tema --&gt;

4. &nbsp; &nbsp; &lt;style name="OzelActionBarTemasi"

5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@android:style/Theme.Holo.Light.DarkActionBar"&gt;

6. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarStyle"&gt;@style/OzelActionBarStili&lt;/item&gt;

Page 31: Android'e Giriş Eğitimleri 2_2

30

7. &nbsp; &nbsp; &lt;/style&gt;

8.

9. &nbsp; &nbsp; &lt;!-- Action Bar stili --&gt;

10. &nbsp; &nbsp; &lt;style name="OzelActionBarStili"

11. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"&gt;

12. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:background"&gt;@drawable/actionbar_background&lt;/item&gt;

13. &nbsp; &nbsp; &lt;/style&gt;

14. &lt;/resources&gt;

Ardından temayı tüm uygulamaya veya bağımsız olarak Activity'lere uygulayabilirsiniz:

&lt;application android:theme="@style/OzelActionBarTemasi" ... /&gt;

veya

&lt;activity android:theme="@style/OzelActionBarTemasi" ... /&gt;

Android 2.1 Ve Üst Sürümleri İçin

Support Library kullandığınızda yukarıdaki tema şu şekilde olmalıdır:

res/values/themes.xml

1. </p>

2.

3. <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />

4. &lt;resources&gt;<br />

5. &nbsp; &nbsp; &lt;!-- uygulama veya activity ye uygulanacak tema --&gt;<br />

6. &nbsp; &nbsp; &lt;style name="OzelActionBarTemasi"<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/Theme.AppCompat.Light.DarkActionBar"&gt;<br />

8. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarStyle"&gt;@style/OzelActionBarStili&lt;/item&gt;</p>

9.

10. <p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Support Library uyumluluğu için --&gt;<br />

11. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- dikkat edin android: ön eki yok --&gt;<br />

12. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="actionBarStyle"&gt;@style/OzelActionBarStili&lt;/item&gt;<br />

13. &nbsp; &nbsp; &lt;/style&gt;</p>

14.

Page 32: Android'e Giriş Eğitimleri 2_2

31

15. <p>&nbsp; &nbsp; &lt;!-- Action Bar stilleri --&gt;<br />

16. &nbsp; &nbsp; &lt;style name="OzelActionBarStili"<br />

17. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"&gt;<br />

18. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:background"&gt;@drawable/actionbar_background&lt;/item&gt;</p>

19.

20. <p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Support Library uyumluluğu için --&gt;<br />

21. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- dikkat edin android: ön eki yok --&gt;<br />

22. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="background"&gt;@drawable/actionbar_background&lt;/item&gt;<br />

23. &nbsp; &nbsp; &lt;/style&gt;<br />

24. &lt;/resources&gt;</p>

25.

26. <p>

Ardından temayı tüm uygulamaya veya bağımsız olarak Activity'lere uygulayabilirsiniz:

&lt;application android:theme="@style/OzelActionBarTemasi" ... /&gt;

veya

&lt;activity android:theme="@style/OzelActionBarTemasi" ... /&gt;

12.10.Metin Renginin Özelleştirilmesi

Action Bar'ın içindeki metnin rengini değiştirmek için her text elementinin farklı özelliklerini override

etmelisiniz - yeniden yazmalısınız:

Action Bar başlık metni: "textColor" özelliği olan özel bir stil oluşturun ve oluşturduğunuz

özel actionBarStyle stilinde kullanmak üzere titleTextStyle barındıran yeni bir stil tanımlayın.

Not: titleTextStyle özelliğine uygulanan özel stil ebeveyn stil

olarakTextAppearance.Holo.Widget.ActionBar.Title stilini kullanmalıdır.

Action Bar sekmeleri: Activity temanızda actionBarTabTextStyle'ı ezin.

Eylem düğmeleri: Activity temanızda actionMenuTextColor'ı ezin.

Android 3.0 Ve Üst Sürümleri İçin

Sadece Android 3.0 ve üstünü destekleyeceğimiz zaman şuna benzeyecek bir XML stil dosyası

oluşturabilirsiniz:

1. </p>

Page 33: Android'e Giriş Eğitimleri 2_2

32

2.

3. <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />

4. &lt;resources&gt;<br />

5. &nbsp; &nbsp; &lt;!-- uygulama veya activity ye uygulanacak tema --&gt;<br />

6. &nbsp; &nbsp; &lt;style name="OzelActionBarTemasi"<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parent="@style/Theme.Holo"&gt;<br />

8. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarStyle"&gt;@style/OzelActionBarStili&lt;/item&gt;<br />

9. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarTabTextStyle"&gt;@style/OzelActionBarStiliTabText&lt;/item&gt;<br />

10. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionMenuTextColor"&gt;@color/actionbar_text&lt;/item&gt;<br />

11. &nbsp; &nbsp; &lt;/style&gt;</p>

12.

13. <p>&nbsp; &nbsp; &lt;!-- ActionBar stilleri --&gt;<br />

14. &nbsp; &nbsp; &lt;style name="OzelActionBarStili"<br />

15. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parent="@style/Widget.Holo.ActionBar"&gt;<br

/>

16. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:titleTextStyle"&gt;@style/OzelActionBarStiliTitleText&lt;/item&gt;<br />

17. &nbsp; &nbsp; &lt;/style&gt;</p>

18.

19. <p>&nbsp; &nbsp; &lt;!-- Action Bar başlık metni --&gt;<br />

20. &nbsp; &nbsp; &lt;style name="OzelActionBarStiliTitleText"<br />

21. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/TextAppearance.Holo.Widget.ActionBar.Title"&gt;<br />

22. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:textColor"&gt;@color/actionbar_text&lt;/item&gt;<br />

23. &nbsp; &nbsp; &lt;/style&gt;</p>

24.

25. <p>&nbsp; &nbsp; &lt;!-- Action Bar sekme metinlerinin stilleri --&gt;<br />

26. &nbsp; &nbsp; &lt;style name="OzelActionBarStiliTabText"<br />

27. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/Widget.Holo.ActionBar.TabText"&gt;<br />

28. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:textColor"&gt;@color/actionbar_text&lt;/item&gt;<br />

29. &nbsp; &nbsp; &lt;/style&gt;<br />

Page 34: Android'e Giriş Eğitimleri 2_2

33

30. &lt;/resources&gt;</p>

31.

32. <p>

Android 2.1 Ve Üst Sürümleri İçin

Support Library kullandığınızda, XML stil dosyanızı şuna benzer şekilde oluşturabilirsiniz:

1. </p>

2.

3. <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />

4. &lt;resources&gt;<br />

5. &nbsp; &nbsp; &lt;!-- uygulama veya activity ye uygulanacak tema --&gt;<br />

6. &nbsp; &nbsp; &lt;style name="CustomActionBarTheme"<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parent="@style/Theme.AppCompat"&gt;<br />

8. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarStyle"&gt;@style/MyActionBar&lt;/item&gt;<br />

9. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarTabTextStyle"&gt;@style/MyActionBarTabText&lt;/item&gt;<br />

10. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionMenuTextColor"&gt;@color/actionbar_text&lt;/item&gt;</p>

11.

12. <p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Support Library uyumluluğu için --&gt;<br />

13. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- dikkat edin android: ön eki yok --&gt;<br />

14. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="actionBarStyle"&gt;@style/MyActionBar&lt;/item&gt;<br />

15. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="actionBarTabTextStyle"&gt;@style/MyActionBarTabText&lt;/item&gt;<br />

16. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="actionMenuTextColor"&gt;@color/actionbar_text&lt;/item&gt;<br />

17. &nbsp; &nbsp; &lt;/style&gt;</p>

18.

19. <p>&nbsp; &nbsp; &lt;!-- Action Bar stilleri --&gt;<br />

20. &nbsp; &nbsp; &lt;style name="MyActionBar"<br />

21. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/Widget.AppCompat.ActionBar"&gt;<br />

22. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:titleTextStyle"&gt;@style/MyActionBarTitleText&lt;/item&gt;</p>

23.

Page 35: Android'e Giriş Eğitimleri 2_2

34

24. <p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Support Library uyumluluğu için --&gt;<br />

25. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- dikkat edin android: ön eki yok --&gt;<br />

26. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="titleTextStyle"&gt;@style/MyActionBarTitleText&lt;/item&gt;<br />

27. &nbsp; &nbsp; &lt;/style&gt;</p>

28.

29. <p>&nbsp; &nbsp; &lt;!-- Action Bar başlık metni --&gt;<br />

30. &nbsp; &nbsp; &lt;style name="MyActionBarTitleText"<br />

31. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"&gt;<br />

32. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:textColor"&gt;@color/actionbar_text&lt;/item&gt;<br />

33. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- textColor, Support Library ile geriye uyumlu bir özelliktir

--&gt;<br />

34. &nbsp; &nbsp; &lt;/style&gt;</p>

35.

36. <p>&nbsp; &nbsp; &lt;!-- Action Bar sekmelerinin metni --&gt;<br />

37. &nbsp; &nbsp; &lt;style name="MyActionBarTabText"<br />

38. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/Widget.AppCompat.ActionBar.TabText"&gt;<br />

39. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:textColor"&gt;@color/actionbar_text&lt;/item&gt;<br />

40. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- textColor, Support Library ile geriye uyumlu bir özelliktir

--&gt;<br />

41. &nbsp; &nbsp; &lt;/style&gt;<br />

42. &lt;/resources&gt;</p>

43.

44. <p>

12.11.Sekme Göstergesinin (Tab Indicator) Özelleştirilmesi

Gezinme sekmelerinde (navigation tabs) kullanılan göstergelerde (aşağıdaki örnekte seçili

sekmenin altında beyaz çizgiyi görüyorsunuz) değişiklik yapmak için actionBarTabStyle özelliğini

override eden bir Activity teması oluşturmalısınız. actionBarTabStyle özelliğinde "background"

özelliğini ezdiğiniz başka bir stil kaynağını işaret etmelisiniz. Bu stil kaynağında state-list olarak

andığımız ve farklı durumlara ilişkin tanımlamaları içeren bir drawable olmalı.

Page 36: Android'e Giriş Eğitimleri 2_2

35

Not: State-list'ler yani durumların listesini bulunduran drawable kaynakları önemlidir. O an seçilen

sekmeyi diğer sekmelerden ayırabilmeniz için arkaplanını değiştirebilirsiniz. Bir düğmenin birden

fazla durumunu yöneteceğiniz drawable kaynakları nasıl oluşturacağınız hakkında daha fazla bilgi

için Durum Listesi - State List belgesini okuyunuz.

Aşağıdaki örneğimizde bir Action Bar sekmesinin farklı durumları için belli arkaplan görselleri

göstermenize yarayan state-list drawable kaynağını görebilirsiniz:

res/drawable/actionbar_tab_indicator.xml

1. </p>

2.

3. <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />

4. &lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt;</p>

5.

6. <p>&lt;!-- DÜĞMEYE BASIL/MA/DIĞINDAKİ DURUMLAR --&gt;</p>

7.

8. <p>&nbsp; &nbsp; &lt;!-- Odaklamasız-Non focused durumlar --&gt;<br />

9. &nbsp; &nbsp; &lt;item android:state_focused="false" android:state_selected="false"<br />

10. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="false"<br />

11. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:drawable="@drawable/tab_unselected"

/&gt;<br />

12. &nbsp; &nbsp; &lt;item android:state_focused="false" android:state_selected="true"<br />

13. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="false"<br />

14. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:drawable="@drawable/tab_selected"

/&gt;</p>

15.

16. <p>&nbsp; &nbsp; &lt;!-- Odaklı-Focused durumlar (d-pad veya fare ile üzerine gelip

odaklandığında gibi) --&gt;<br />

17. &nbsp; &nbsp; &lt;item android:state_focused="true" android:state_selected="false"<br />

18. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="false"<br />

Page 37: Android'e Giriş Eğitimleri 2_2

36

19. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

android:drawable="@drawable/tab_unselected_focused" /&gt;<br />

20. &nbsp; &nbsp; &lt;item android:state_focused="true" android:state_selected="true"<br />

21. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="false"<br />

22. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:drawable="@drawable/tab_selected_focused"

/&gt;</p>

23.

24. <p><br />

25. &lt;!-- DÜĞMEYE BASILDIĞINDAKİ DURUMLAR --&gt;</p>

26.

27. <p>&nbsp; &nbsp; &lt;!-- Odaklamasız-Non focused durumlar --&gt;<br />

28. &nbsp; &nbsp; &lt;item android:state_focused="false" android:state_selected="false"<br />

29. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="true"<br />

30. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

android:drawable="@drawable/tab_unselected_pressed" /&gt;<br />

31. &nbsp; &nbsp; &lt;item android:state_focused="false" android:state_selected="true"<br />

32. &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="true"<br />

33. &nbsp; &nbsp; &nbsp; &nbsp; android:drawable="@drawable/tab_selected_pressed"

/&gt;</p>

34.

35. <p>&nbsp; &nbsp; &lt;!-- Odaklı-Focused durumlar (d-pad veya fare ile üzerine gelip

odaklandığında gibi) --&gt;<br />

36. &nbsp; &nbsp; &lt;item android:state_focused="true" android:state_selected="false"<br />

37. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="true"<br />

38. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

android:drawable="@drawable/tab_unselected_pressed" /&gt;<br />

39. &nbsp; &nbsp; &lt;item android:state_focused="true" android:state_selected="true"<br />

40. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:state_pressed="true"<br />

41. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

android:drawable="@drawable/tab_selected_pressed" /&gt;<br />

42. &lt;/selector&gt;</p>

43.

44. <p>

Page 38: Android'e Giriş Eğitimleri 2_2

37

Android 3.0 Ve Üst Sürümleri İçin

Sadece Android 3.0 ve üstünü desteklediğinizde XML stil dosyanız şuna benzer bir şey olacaktır:

res/values/themes.xml

1. </p>

2.

3. <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />

4. &lt;resources&gt;<br />

5. &nbsp; &nbsp; &lt;!-- uygulama ya da activity ye uygulanacak tema --&gt;<br />

6. &nbsp; &nbsp; &lt;style name="OzelActionBarTemasi"<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parent="@style/Theme.Holo"&gt;<br />

8. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarTabStyle"&gt;@style/OzelActionBarSekmeleri&lt;/item&gt;<br />

9. &nbsp; &nbsp; &lt;/style&gt;</p>

10.

11. <p>&nbsp; &nbsp; &lt;!-- Action Bar sekme stilleri --&gt;<br />

12. &nbsp; &nbsp; &lt;style name="OzelActionBarSekmeleri"<br />

13. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/Widget.Holo.ActionBar.TabView"&gt;<br />

14. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Sekme belirticileri - tab indicators --&gt;<br />

15. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:background"&gt;@drawable/actionbar_tab_indicator&lt;/item&gt;<br />

16. &nbsp; &nbsp; &lt;/style&gt;<br />

17. &lt;/resources&gt;</p>

18.

19. <p>

Android 2.1 Ve Üst Sürümleri İçin

Support Library kullandığınızda XML stil dosyanız şuna benzer bir şey olacaktır:

res/values/themes.xml

1. </p>

2.

3. <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />

4. &lt;resources&gt;<br />

5. &nbsp; &nbsp; &lt;!-- uygulama ya da activity ye uygulanacak tema --&gt;<br />

Page 39: Android'e Giriş Eğitimleri 2_2

38

6. &nbsp; &nbsp; &lt;style name="OzelActionBarTemasi"<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parent="@style/Theme.AppCompat"&gt;<br />

8. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:actionBarTabStyle"&gt;@style/OzelActionBarSekmeleri&lt;/item&gt;</p>

9.

10. <p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Support library uyumluluğu için --&gt;<br />

11. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- android: ön eki olmadığına dikkat edin --&gt;<br />

12. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="actionBarTabStyle"&gt;@style/OzelActionBarSekmeleri&lt;/item&gt;<br />

13. &nbsp; &nbsp; &lt;/style&gt;</p>

14.

15. <p>&nbsp; &nbsp; &lt;!-- Action Bar sekme stilleri --&gt;<br />

16. &nbsp; &nbsp; &lt;style name="OzelActionBarSekmeleri"<br />

17. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;parent="@style/Widget.AppCompat.ActionBar.TabView"&gt;<br />

18. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Sekme belirticileri - tab indicators --&gt;<br />

19. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="android:background"&gt;@drawable/actionbar_tab_indicator&lt;/item&gt;</p>

20.

21. <p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Support library uyumluluğu için --&gt;<br />

22. &nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- android: ön eki olmadığına dikkat edin --&gt;<br />

23. &nbsp; &nbsp; &nbsp; &nbsp; &lt;item

name="background"&gt;@drawable/actionbar_tab_indicator&lt;/item&gt;<br />

24. &nbsp; &nbsp; &lt;/style&gt;<br />

25. &lt;/resources&gt;</p>

26.

27. <p>

Action Bar için tümden stiller üretmenize yarayan Android Action Bar Style Generator isimli aracı

deneyebilirsiniz.

Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış

içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta

belirlenen koşullara göre kullanılmıştır.

Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Styling the Action Bar

Page 40: Android'e Giriş Eğitimleri 2_2

39

13.UYGULAMANIN CİHAZ ÜZERİNDE ÇALIŞTIRILMASI

Uygulamayı Android yüklü bir cihazda çalıştırmak için tek yapmamız gereken, önce cihazınızın

Ayarlar'ında USB hata ayıklama modunu devreye almanız, ardından da cihazı bilgisayara USB

portundan bağlamanız gerekir. Eğer bilgisayarımızda cihazla ilgili sürücüler doğru şekilde

yüklendiyse (Windows için) DDMS içerisinde cihazı görebilmemiz gerekir. Eğer

cihaz görüntülenemiyorsa, o modele ait sürücüleri üretici sayfasından yüklememiz gerekir (Device

Drivers). Sürücülerin yüklenmesi bittikten sonra DDMS cihazımızı tanıyacaktır.

NOT : Bazen Eclipse’i yeniden başlatmak gerekebilir.

Cihaz görüntülendikten sonra tek yapmamız gereken tıpkı sanal makinada olduğu gibi projede Run

As...seçeneğini tıklayıp uygulamayı cihazda başlatmaktır. Bu aşamadan sonra APK dosyası

hazırlanır ve uygulama cihaza atılır. Cihazın konsol mesajları (log) aynı sanal makinada olduğu

gibi LogCat altından görüntülenebilir.

14.UYGULAMANIN PAKETLENMESİ VE İMZALANMASI

Yazdığınız Android uygulamasının cihaz üzerinde ya da sanal makinadaki testlerinden sonra,

Google Play'de yayınlanmaya hazır olduğunu düşünüyorsanız sonraki iki adımda, önce

uygulamanızın çalıştırılabilir paketinin oluşturulması ve sonrasında imzalanması gerekecektir.

Page 41: Android'e Giriş Eğitimleri 2_2

40

14.1.Android Uygulama Paketi (.apk)

.apk dosyaları Android Application Package File olarak adlandırılır ve uygulama kodlarının

paketlenerek çalıştırılabilir hale gelmesini sağlar. Uygulama paketleri aslında her işletim sistemi için

farklı yapılarda ve isimlerde de mevcuttur: Windows ortamında .msi, Mac OS ortamında .dmg, Linux

ortamında ise .rpm, .debvb.

Android'de biten projemizi Google Play'de yayınlamak için ADT'de geliştirilmiş bir araç

bulunmaktadır. Projemizde AndroidManifest.xml dosyasını açalım ve aşağıdaki ekran

görüntüsünde olduğu gibi Manifestsekmesi'nde "Use the Export Wizard" linkine tıklayalım:

Bu link, eskiden Android'de Eclipse üzerinden son derece karmaşık ve uzun olan bu onay sürecini

epey hızlandıran güzel bir araçtır. Linke tıkladığımızda karşımıza aşağıdaki ekran görüntüsü

gelecektir. Burada projemizin oluşturulacağı adı belirleyip ilerliyoruz:

Page 42: Android'e Giriş Eğitimleri 2_2

41

Şimdi uygulamamızın anahtarının tutulacağı klasörü belirlememiz gerekiyor. Eğer ilk kez bu klasörü

oluşturacaksak, Create new keystore seçeneğini, mevcut uygulamamızı güncelliyorsak Use

existing keystore seçeneğini kullanmalısınız. Burada dikkat etmemiz gereken en önemli nokta,

yeni belirleyeceğimiz parolamızdır. İleride işimize yarayacak olan bu parolayı kaybetmemiz

durumunda geri dönüş mümkün olmayabilir:

Page 43: Android'e Giriş Eğitimleri 2_2

42

Parolamızı ve klasörümüzü belirledikten sonra uygulamamızın bazı detaylarını belirtmemiz gereken

bir ekrana yönlendirileceğiz. Yine burada ilgili yerleri doldurarak ilerleyelim:

Son olarak ekrana oluşturulan ve imzalanan .apk dosyasını konumlandırmamızı istediğimiz kısım

gelecektir. Buradan istediğimiz yeri seçerek imzalı .apk dosyamızı oluşturarak bu süreci

tamamlıyoruz:

Page 44: Android'e Giriş Eğitimleri 2_2

43

15.GOOGLE PLAY'E UYGULAMA YÜKLEME VE GÜNCELLEME

Android uygulamamızı yazdık, imzaladık ve paketledik. Artık kullanıcılarla buluşturma vakti. Her

Android cihazında mevcut gelen Google Play uygulama mağazasına, yazdığımız uygulamayı

göndermek için yine Google tarafından sunulan Google Play Developer Console kullanmamız

gerekiyor.

Google Play Store üzerinde uygulama yayınlayabilmek için Google hesabınızla Play Store'a

kaydolmanız gerekmektedir. Bunun için senelik 25 Amerikan doları gibi bir ücret ödemelisiniz.

Geliştirici hesabımızla Google Play Store'un uygulama yayınlama sayfası girdiğimizde karşımıza

geliştirici kontrol paneli gelir ve varsa mevcut uygulamalarımız aşağıda olduğu gibi listelenir:

Ancak biz ilk kez bir uygulama yayınlayacaklar için ekranın boş gelmesi normaldir. O halde hemen

uygulamamızı yayınlamaya başlayalım.

Page 45: Android'e Giriş Eğitimleri 2_2

44

Google Play Geliştirici Konsolu'nu açtığımızda karşımıza gelen ilk ekranda Yeni uygulamalar

ekleyindüğmesini kullanarak sürece başlıyoruz:

Yeni uygulamalar ekleyin dedikten sonra karşımıza aşağıdaki gibi ufak bir pencere gelecektir.

İstersek önceden hazırladığımız APK dosyasını karşı tarafa yüklebilir, istersek de Mağaza Girişi için

gerekli sunumları hazırlarız. Ancak burada uygulamamızın dilini ve başlığını yazmamız gerekiyor:

APK yüklemek için bilgisayarımızda bulunan ve önceden oluşturduğumuz imzalı ve paketlenmiş

APK dosyasını yüklüyoruz. Konsol'da bize üç sekme sunulur: Üretim, Beta Testi ve Alfa Testi

şeklinde. Bu bölümler aslında uygulamamızı son hale getirene kadar (kullanıcıyla buluşmaya hazır)

Page 46: Android'e Giriş Eğitimleri 2_2

45

süreç takibi yapmamızı sağlamak içindir. Eğer uygulamamızın kullanıcıya sunulmasına hazır

olmadığını düşünüyorsanız henüz, alfa yada beta testine alabilirsiniz. Bu durumunda bazı özellikleri

mevcuttur aslında. Örneğin, beta testinde olan uygulamanızı yalnızca belirli kullanıcılarla (sizin

tanımlayabileceğiniz de dahil) buraya yükleyerek de paylaşabilirsiniz. Eğer uygulamanız

kullanıcılarla buluşmaya hazırsa, direkt üretim kısmına APK dosyamızı yükleyerek süreci

tamamlayalım:

Sol navigasyondan görebileceğiniz gibi APK sekmesinin altında Mağaza Girişi vardır. Onu

açtığımızda ise Mağaza'da uygulamamızın nasıl görüneceğini belirleyeceğiz. İlk olarak karşımıza

aşağıdaki gibi bir ekran görüntüsü çıkacaktır. Burada uygulamamızın yayınlanmasını istediğimiz

dilleri ve her biri için uygulamamızın adını, mağaza açıklamasını ve istersek tanıtım metni ve

uygulamada yaptığımız son değişiklikleri kullanıcıların da haberdar olabilmeleri için girebiliriz:

Page 47: Android'e Giriş Eğitimleri 2_2

46

Sayfanın altına doğru ilerlediğimizde uygulamamızdan çektiğimiz ekran görüntülerini

koyabileceğimiz yer geliyor. Burası kullanıcıların uygulamayla ilgili markette ekran görüntülerini

görebildikleri ve uygulamamız hakkında fikir sahibi olabilecekleri bir yer olduğundan, geliştiricilerin

uygulamalarını göterebilmeleri açısından son derece önemlidir:

Ekran görüntülerinin altında mağazada uygulamamızın yer almasını istediğimiz kategoriyi

belirlememiz ve kullanıcıların bize ulaşabilecekleri geliştirici mailimizi paylaşmamız da yarar var:

Page 48: Android'e Giriş Eğitimleri 2_2

47

Mağaza Girişi'ni tamamladıktan sonra, sol navigasyon menüsünde yer alan fiyatlandırma

seçeneğine tıklayalım. Burada uygulamamızı hangi ülkelerde ve ne kadara yayınlamak istediğimize

karar veriyoruz:

Bütün bu işlemleri gerçekleştirdikten sonra, eğer bir yerde hata almamışsak, konsolda sağ üstte yer

alan taslak düğmesi yayınla halini alacaktır. Uygulamamız artık yayınlayabiliriz.

Page 49: Android'e Giriş Eğitimleri 2_2

48

15.1.Uygulama Güncellemesi

Mevcut uygulamalarımızı geliştirici konsolunu açtığımızda görüntüleyebiliyoruz. Burada yer alan

uygulamalardan hangisinde işlem yapmak istiyorsak onu tıkladığımızda karşımıza aşağıdaki ekran

görüntüsü gelecektir:

Bu panelde, mevcut uygulamanızın indirilme istatistiklerine, hangi Android sürümü dahil,

ulaşabilirsiniz. Aldığı oyların ve yorumların detaylarına, varsa yaşanan kilitlenmeleri

görüntüleyebilirsiniz.

Sol navigasyon menüsünde yer alan diğer seçeneklerle ise mevcut uygulamanızı güncelleme de

kullancağınız yeni APK dosyasını ve gerek duyarsanız yenilemek istediğiniz mağaza giriş bilgilerini

de güncelleyebilirsiniz. Burada dikkat etmeniz gereken en önemli nokta ise; güncelleyeceğiniz

uygulamanın sürüm numarasının mevcut uygulamanızın sürüm numarasından büyük olması

gerektiğidir.

Unutmayın: Örneğin, mevcut uygulamanızın sürüm numarası 1.1.0 ise yeni güncelledğiniz APK

dosyasında sürüm numaranızı 1.2.0 yapın!

16.ANDROID İÇİN SIK SORULAN SORULAR

Eclipse’de yeni bir plugin nasıl yüklerim?

Eclipse IDE içerisinde yeni bir eklenti yüklemek için Help menüsü altında Install New

Software seçeneğini seçmeniz gerekmektedir.

Page 50: Android'e Giriş Eğitimleri 2_2

49

Bu sayede karşınıza yeni bir eklenti yükleme sihirbazı gelir ve siz de buradan eklentiyi yükleme

fırsatı bulabilirsiniz. Yapmanız gereken, Add düğmesine tıklayarak karşınıza gelen pencereye

eklentinin isimini (Name) ve yükleme adresini (Location) yazmak olacaktır. Geçerli bir web adresi

girdikten sonra Ok düğmesine bastığınızda adres taranır ve Eclipse ile uyumlu bir eklenti bulunursa

listelenir.

Page 51: Android'e Giriş Eğitimleri 2_2

50

Yeni bir sanal makinayı nasıl oluştururum?

Uygulamanızı mutlaka cihaz üzerinde denemek zorunda değilsiniz. Eğer farklı Android sürümlerinde

cihazlarınız yoksa, bunun yerine sanal bir emülatör üzerinde uygulamanızı çalıştırabilirsiniz. Bunun

için yapmanız gereken, Android Virtual Device Manager’ı çalıştırarak yeni bir cihaz eklemek

olacaktır.

Eclipse uygulamamı otomatik olarak bir sanal makinada açıyor. Bunu nasıl değiştiririm?

Projenizi başlatırken hangi sanal veya gerçek cihazda çalıştıracağınızı değiştirmek için proje üzerine

sağ tuşla tıklayarak, Run As.. altında Run Configurations menüsüne tıklayınız.

Page 52: Android'e Giriş Eğitimleri 2_2

51

Run Configurations ekranı içerisinde Target sekmesine geldiğinizde uygulamanın nerede

çalıştırılmasını istiyorsanız, bunu ayarlayabilirsiniz. Always prompt to pick a device seçeneği

projeyi her çalıştırdığınızda cihaz seçimi yapabileceğiniz bir ekran getirecektir

Yeni bir Activity nasıl başlatırım?

Yeni bir Activity başlatmak için yapmanız gereken, yeni bir Intent yaratmak ve bu Intent’i startActivity

metodu ile çalıştırmak olacaktır. Örneğin, bir düğmeye basıldığında yeni bir ekran çalıştırmak için

aşağıdaki kod parçasını kullanabilirsiniz.

1. Button done = (Button) findViewById(R.id.add_note_button);<br />

2. &nbsp; &nbsp; &nbsp; done.setOnClickListener(new OnClickListener() {<br />

3. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@Override<br />

4. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public void onClick(View v) {<br />

5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Intent intent = new

Intent(MainActivity.this,SecondActivity.class);<br />

6. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; startActivity(intent);<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />

8. &nbsp; &nbsp; &nbsp; });Buradaki kodda MainActivity mevcut Activity sınıfını, SecondActivity

ise yeni açılacak Activity sınıfını belirtmektedir.

Page 53: Android'e Giriş Eğitimleri 2_2

52

Yeni bir Activity ile parametre nasıl gönderilir?

Yeni bir Activity oluştururken bir parametre göndermek isterseniz, Intent sınıfı altında

gelen putExtrametodundan faydalanabilirsiniz. putExtra metodu yeni oluşturulan Activity ile birlikte

istenilen değişkenlerin paslanmasına yardımcı olacaktır.

1. Button done = (Button) findViewById(R.id.add_note_button);<br />

2. &nbsp; &nbsp; &nbsp; done.setOnClickListener(new OnClickListener() {<br />

3. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@Override<br />

4. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public void onClick(View v) {<br />

5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Intent intent = new

Intent(MainActivity.this,SecondActivity.class);<br />

6. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; intent.putExtra("yas", 29);<br />

7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; intent.putExtra("isim", "Ahmet");<br />

8. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; startActivity(intent);<br />

9. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />

10. &nbsp; &nbsp; &nbsp; });Yukarıdaki kodda gördüğünüz gibi 29 ve Ahmet değerleri yas ve

isim anahtarıyla Intent içerisine eklendi ve bir sonraki Activity’e ulaştırıldı. Yeni oluşturulan Activity

içerisinde bu değişkenlere ulaşmak için yapmanız gereken ise aşağıdaki gibidir;

1. Bundle bundle = getIntent().getExtras();<br />

2. int yas = bundle.getInt("yas");<br />

3. String isim = bundle.getString("isim");

Bir Intent ile birlikte gönderilen değişkenleri almak için getExtras metodunu kullanırız. Daha sonra

verdiğimiz anahtar değerine karşılık gelen değeri get.... metodlarından birisi ile alarak bir değişkene

atayabiliriz.

SharedPreferences ile bir değer nasıl saklarım?

SharedPreferences uygulamanızdaki çeşitli değerleri anahtar - değer mantığı ile saklamanıza

yardımcı olur. Bu şekilde uygulamanıza özel tutulması gereken çeşitli parametreleri ya da

kullanıcıdan talep ettiğiniz bazı ayarları ya da bilgileri kolayca saklayıp gerektiğinde geri

çağırabilirsiniz.

SharedPreferences’ı kullanmak için yapmanız gereken getSharedPreferences metodu ile

uygulamaya özel saklama yerine kayıt yapacağımızı belirtmemiz gerekir. Bir değeri yazmak için ise

SharedPreferences.Editor sınıfından faydalanırız.

Page 54: Android'e Giriş Eğitimleri 2_2

53

1. SharedPreferences sp = getSharedPreferences("MyApp", Context.MODE_PRIVATE);<br />

2. SharedPreferences.Editor spEditor = sp.edit();<br />

3. spEditor.putBoolean("ilkCalisma", true);<br />

4. spEditor.commit();

Yukarıdaki kod parçacağında SharedPreferences.Editor ile yeni bir düzenleyici açılmış

ve putBooleanmetodu ile “ilkCalisma” anahtar değeriyle bir boolean değer saklanmıştır. Saklanmak

istenen değerler putmetodları ile eklendikten sonra commit metodu ile yazma işlemi tamamlanır ve

değerler saklanmış olur. Context.MODE_PRIVATE ise bu değişkenlerin sadece bizim uygulamamız

tarafından okunması sağlar.

SharedPreferences ile saklanan bir değeri nasıl çağırırım?

SharedPreferences ile saklamış olduğumuz bir değere ulaşmak içinse tek yapmamız

gereken,getSharedPreferences metodunu çağırmak ve get metodlarını kullanarak değişkenimizi

almak olacaktır.

1. SharedPreferences sp = getSharedPreferences("MyApp", Context.MODE_PRIVATE);</p>

2.

3. <p>boolean ilkCalisma = sp.getBoolean("ilkCalisma", false);

Burada kullanılan get metodlarında ilk parametre olarak sakladığınız değerin anahtarı, ikinci değer

olarak bu değişkenin bulunamadığı takdirde alması gereken değer istenir.

Page 55: Android'e Giriş Eğitimleri 2_2

54

Kaynakça https://developer.android.com/index.html

http://source.android.com/

http://www.yazilimcilardunyasi.com/p/mobil-programlama.html

http://www.programlamadefteri.com/android-programlama-dersleri

https://gelecegiyazanlar.turkcell.com.tr/konu/android