Upload
univerist
View
326
Download
11
Embed Size (px)
Citation preview
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.
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
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"
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);
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.
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.
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:
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.
8
1. //Dosya Adı: MainActivity.java
2.
3. listemiz.setOnItemClickListener(new OnItemClickListener() {
4.
5. @Override
6. public void onItemClick(AdapterView<?> 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
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.
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:
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.
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
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.
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.
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. ...<br />
3. 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.
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.
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.
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. ...<br />
3. 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.
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. <uses-sdk
2. android:minSdkVersion="7"
3. android:targetSdkVersion="20" />
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
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.
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. <manifest ... ><br />
2. <uses-sdk android:minSdkVersion="11" ... /><br />
3. ...<br />
4. </manifest>
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:
<activity android:theme="@style/Theme.AppCompat.Light" ... >
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:
22
1. <manifest ... >
2. <uses-sdk android:minSdkVersion="7"
android:targetSdkVersion="18" />
3. ...
4. </manifest>
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. <menu xmlns:android="http://schemas.android.com/apk/res/android" ><br />
2. <!-- Arama, eylem düğmesi olarak görülebilir --><br />
23
3. <item android:id="@+id/action_arama"<br />
4. android:icon="@drawable/ic_action_arama"<br />
5. android:title="@string/action_arama"<br />
6. android:showAsAction="ifRoom" /><br />
7. <!-- Ayarlar, daima taşan eylemler bölümünde durabilir --
><br />
8. <item android:id="@+id/action_ayarlar"<br />
9. android:title="@string/action_ayarlar"<br />
10. android:showAsAction="never" /><br />
11. </menu>
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
24
1. <menu xmlns:android="http://schemas.android.com/apk/res/android"<br />
2. xmlns:uygulamaismi="http://schemas.android.com/apk/res-auto"
><br />
3. <!-- Arama, eylem düğmesi olarak görülebilir --><br />
4. <item android:id="@+id/action_search"<br />
5. android:icon="@drawable/ic_action_search"<br />
6. android:title="@string/action_search"<br />
7. uygulamaismi:showAsAction="ifRoom" /><br
/>
8. ...<br />
9. </menu>
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. // Action Bar içinde kullanılacak menü öğelerini inflate edelim
4. MenuInflater inflater = getMenuInflater();
5. inflater.inflate(R.menu.main_activity_actions, menu);
6. 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. // Action Bar öğelerindeki basılmaları idare edelim
4. switch (item.getItemId()) {
5. case R.id.action_search:
25
6. openSearch();
7. return true;
8. case R.id.action_settings:
9. openSettings();
10. return true;
11. default:
12. return super.onOptionsItemSelected(item);
13. }
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. <application ... ><br />
2. ...<br />
3. <!-- Ana (main) Activity (Ebeveyni olmayan) --><br />
4. <activity<br />
5. android:name="org.tcellgy.android.ornek1.MainActivity"
...><br />
6. ...<br />
7. </activity><br />
8. <!-- MainActivity'nin bir çocuğu --><br />
9. <activity<br />
10. android:name="org.tcellgy.android.ornek1.DetayActivity"<br
/>
26
11. android:label="@string/title_activity_detay"<br />
12.
android:parentActivityName="org.tcellgy.android.ornek1.MainActivity" ><br />
13. <!-- 4.0 ve aşağısını desteklemek için ebeveyn Activity meta-
datası --><br />
14. <meta-data<br />
15.
android:name="android.support.PARENT_ACTIVITY"<br />
16.
android:value="com.example.myfirstapp.MainActivity" /><br />
17. </activity><br />
18. </application>
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
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
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:
<application android:theme="@android:style/Theme.Holo.Light" ... />
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ı
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. <?xml version="1.0" encoding="utf-8"?>
2. <resources>
3. <!-- uygulama veya Activity ye uygulanacak tema -->
4. <style name="OzelActionBarTemasi"
5.
parent="@android:style/Theme.Holo.Light.DarkActionBar">
6. <item
name="android:actionBarStyle">@style/OzelActionBarStili</item>
30
7. </style>
8.
9. <!-- Action Bar stili -->
10. <style name="OzelActionBarStili"
11.
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
12. <item
name="android:background">@drawable/actionbar_background</item>
13. </style>
14. </resources>
Ardından temayı tüm uygulamaya veya bağımsız olarak Activity'lere uygulayabilirsiniz:
<application android:theme="@style/OzelActionBarTemasi" ... />
veya
<activity android:theme="@style/OzelActionBarTemasi" ... />
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><?xml version="1.0" encoding="utf-8"?><br />
4. <resources><br />
5. <!-- uygulama veya activity ye uygulanacak tema --><br />
6. <style name="OzelActionBarTemasi"<br />
7.
parent="@style/Theme.AppCompat.Light.DarkActionBar"><br />
8. <item
name="android:actionBarStyle">@style/OzelActionBarStili</item></p>
9.
10. <p> <!-- Support Library uyumluluğu için --><br />
11. <!-- dikkat edin android: ön eki yok --><br />
12. <item
name="actionBarStyle">@style/OzelActionBarStili</item><br />
13. </style></p>
14.
31
15. <p> <!-- Action Bar stilleri --><br />
16. <style name="OzelActionBarStili"<br />
17.
parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"><br />
18. <item
name="android:background">@drawable/actionbar_background</item></p>
19.
20. <p> <!-- Support Library uyumluluğu için --><br />
21. <!-- dikkat edin android: ön eki yok --><br />
22. <item
name="background">@drawable/actionbar_background</item><br />
23. </style><br />
24. </resources></p>
25.
26. <p>
Ardından temayı tüm uygulamaya veya bağımsız olarak Activity'lere uygulayabilirsiniz:
<application android:theme="@style/OzelActionBarTemasi" ... />
veya
<activity android:theme="@style/OzelActionBarTemasi" ... />
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>
32
2.
3. <p><?xml version="1.0" encoding="utf-8"?><br />
4. <resources><br />
5. <!-- uygulama veya activity ye uygulanacak tema --><br />
6. <style name="OzelActionBarTemasi"<br />
7. parent="@style/Theme.Holo"><br />
8. <item
name="android:actionBarStyle">@style/OzelActionBarStili</item><br />
9. <item
name="android:actionBarTabTextStyle">@style/OzelActionBarStiliTabText</item><br />
10. <item
name="android:actionMenuTextColor">@color/actionbar_text</item><br />
11. </style></p>
12.
13. <p> <!-- ActionBar stilleri --><br />
14. <style name="OzelActionBarStili"<br />
15. parent="@style/Widget.Holo.ActionBar"><br
/>
16. <item
name="android:titleTextStyle">@style/OzelActionBarStiliTitleText</item><br />
17. </style></p>
18.
19. <p> <!-- Action Bar başlık metni --><br />
20. <style name="OzelActionBarStiliTitleText"<br />
21.
parent="@style/TextAppearance.Holo.Widget.ActionBar.Title"><br />
22. <item
name="android:textColor">@color/actionbar_text</item><br />
23. </style></p>
24.
25. <p> <!-- Action Bar sekme metinlerinin stilleri --><br />
26. <style name="OzelActionBarStiliTabText"<br />
27.
parent="@style/Widget.Holo.ActionBar.TabText"><br />
28. <item
name="android:textColor">@color/actionbar_text</item><br />
29. </style><br />
33
30. </resources></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><?xml version="1.0" encoding="utf-8"?><br />
4. <resources><br />
5. <!-- uygulama veya activity ye uygulanacak tema --><br />
6. <style name="CustomActionBarTheme"<br />
7. parent="@style/Theme.AppCompat"><br />
8. <item
name="android:actionBarStyle">@style/MyActionBar</item><br />
9. <item
name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item><br />
10. <item
name="android:actionMenuTextColor">@color/actionbar_text</item></p>
11.
12. <p> <!-- Support Library uyumluluğu için --><br />
13. <!-- dikkat edin android: ön eki yok --><br />
14. <item
name="actionBarStyle">@style/MyActionBar</item><br />
15. <item
name="actionBarTabTextStyle">@style/MyActionBarTabText</item><br />
16. <item
name="actionMenuTextColor">@color/actionbar_text</item><br />
17. </style></p>
18.
19. <p> <!-- Action Bar stilleri --><br />
20. <style name="MyActionBar"<br />
21.
parent="@style/Widget.AppCompat.ActionBar"><br />
22. <item
name="android:titleTextStyle">@style/MyActionBarTitleText</item></p>
23.
34
24. <p> <!-- Support Library uyumluluğu için --><br />
25. <!-- dikkat edin android: ön eki yok --><br />
26. <item
name="titleTextStyle">@style/MyActionBarTitleText</item><br />
27. </style></p>
28.
29. <p> <!-- Action Bar başlık metni --><br />
30. <style name="MyActionBarTitleText"<br />
31.
parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"><br />
32. <item
name="android:textColor">@color/actionbar_text</item><br />
33. <!-- textColor, Support Library ile geriye uyumlu bir özelliktir
--><br />
34. </style></p>
35.
36. <p> <!-- Action Bar sekmelerinin metni --><br />
37. <style name="MyActionBarTabText"<br />
38.
parent="@style/Widget.AppCompat.ActionBar.TabText"><br />
39. <item
name="android:textColor">@color/actionbar_text</item><br />
40. <!-- textColor, Support Library ile geriye uyumlu bir özelliktir
--><br />
41. </style><br />
42. </resources></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ı.
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><?xml version="1.0" encoding="utf-8"?><br />
4. <selector xmlns:android="http://schemas.android.com/apk/res/android"></p>
5.
6. <p><!-- DÜĞMEYE BASIL/MA/DIĞINDAKİ DURUMLAR --></p>
7.
8. <p> <!-- Odaklamasız-Non focused durumlar --><br />
9. <item android:state_focused="false" android:state_selected="false"<br />
10. android:state_pressed="false"<br />
11. android:drawable="@drawable/tab_unselected"
/><br />
12. <item android:state_focused="false" android:state_selected="true"<br />
13. android:state_pressed="false"<br />
14. android:drawable="@drawable/tab_selected"
/></p>
15.
16. <p> <!-- Odaklı-Focused durumlar (d-pad veya fare ile üzerine gelip
odaklandığında gibi) --><br />
17. <item android:state_focused="true" android:state_selected="false"<br />
18. android:state_pressed="false"<br />
36
19.
android:drawable="@drawable/tab_unselected_focused" /><br />
20. <item android:state_focused="true" android:state_selected="true"<br />
21. android:state_pressed="false"<br />
22. android:drawable="@drawable/tab_selected_focused"
/></p>
23.
24. <p><br />
25. <!-- DÜĞMEYE BASILDIĞINDAKİ DURUMLAR --></p>
26.
27. <p> <!-- Odaklamasız-Non focused durumlar --><br />
28. <item android:state_focused="false" android:state_selected="false"<br />
29. android:state_pressed="true"<br />
30.
android:drawable="@drawable/tab_unselected_pressed" /><br />
31. <item android:state_focused="false" android:state_selected="true"<br />
32. android:state_pressed="true"<br />
33. android:drawable="@drawable/tab_selected_pressed"
/></p>
34.
35. <p> <!-- Odaklı-Focused durumlar (d-pad veya fare ile üzerine gelip
odaklandığında gibi) --><br />
36. <item android:state_focused="true" android:state_selected="false"<br />
37. android:state_pressed="true"<br />
38.
android:drawable="@drawable/tab_unselected_pressed" /><br />
39. <item android:state_focused="true" android:state_selected="true"<br />
40. android:state_pressed="true"<br />
41.
android:drawable="@drawable/tab_selected_pressed" /><br />
42. </selector></p>
43.
44. <p>
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><?xml version="1.0" encoding="utf-8"?><br />
4. <resources><br />
5. <!-- uygulama ya da activity ye uygulanacak tema --><br />
6. <style name="OzelActionBarTemasi"<br />
7. parent="@style/Theme.Holo"><br />
8. <item
name="android:actionBarTabStyle">@style/OzelActionBarSekmeleri</item><br />
9. </style></p>
10.
11. <p> <!-- Action Bar sekme stilleri --><br />
12. <style name="OzelActionBarSekmeleri"<br />
13.
parent="@style/Widget.Holo.ActionBar.TabView"><br />
14. <!-- Sekme belirticileri - tab indicators --><br />
15. <item
name="android:background">@drawable/actionbar_tab_indicator</item><br />
16. </style><br />
17. </resources></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><?xml version="1.0" encoding="utf-8"?><br />
4. <resources><br />
5. <!-- uygulama ya da activity ye uygulanacak tema --><br />
38
6. <style name="OzelActionBarTemasi"<br />
7. parent="@style/Theme.AppCompat"><br />
8. <item
name="android:actionBarTabStyle">@style/OzelActionBarSekmeleri</item></p>
9.
10. <p> <!-- Support library uyumluluğu için --><br />
11. <!-- android: ön eki olmadığına dikkat edin --><br />
12. <item
name="actionBarTabStyle">@style/OzelActionBarSekmeleri</item><br />
13. </style></p>
14.
15. <p> <!-- Action Bar sekme stilleri --><br />
16. <style name="OzelActionBarSekmeleri"<br />
17.
parent="@style/Widget.AppCompat.ActionBar.TabView"><br />
18. <!-- Sekme belirticileri - tab indicators --><br />
19. <item
name="android:background">@drawable/actionbar_tab_indicator</item></p>
20.
21. <p> <!-- Support library uyumluluğu için --><br />
22. <!-- android: ön eki olmadığına dikkat edin --><br />
23. <item
name="background">@drawable/actionbar_tab_indicator</item><br />
24. </style><br />
25. </resources></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
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.
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:
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:
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:
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.
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)
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:
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:
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.
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.
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.
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.
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. done.setOnClickListener(new OnClickListener() {<br />
3. @Override<br />
4. public void onClick(View v) {<br />
5. Intent intent = new
Intent(MainActivity.this,SecondActivity.class);<br />
6. startActivity(intent);<br />
7. }<br />
8. });Buradaki kodda MainActivity mevcut Activity sınıfını, SecondActivity
ise yeni açılacak Activity sınıfını belirtmektedir.
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. done.setOnClickListener(new OnClickListener() {<br />
3. @Override<br />
4. public void onClick(View v) {<br />
5. Intent intent = new
Intent(MainActivity.this,SecondActivity.class);<br />
6. intent.putExtra("yas", 29);<br />
7. intent.putExtra("isim", "Ahmet");<br />
8. startActivity(intent);<br />
9. }<br />
10. });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.
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.
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