Anasayfa Mobil Android Programlama Ders 4: Layout-dosya, XML Kodlama ve Ekranın Pozisyonu

Android Programlama Ders 4: Layout-dosya, XML Kodlama ve Ekranın Pozisyonu

Bu derste Android etkileşim içinde layout-dosya oluşturmayı öğreneceğiz.Sonra XML kodları inceleyeceğiz ve ekranın pozisyonunun nasıl ayarlanması gerektiğini öğreneceğiz…

1 – Etkileşim içinde Layout – dosya oluşturma

Geçen derste etkileşimin ( Activity) ne olduğunu öğrendik. Etkileşim, layout dosyayı okuyor ve layout’un içindekilerini yansıtıyor. Bu derste etkileşimin hangi layout’u çalıştırması gerektiğini nereden anladığını da göreceğiz.

Şimdi yeni projeyi açalım:

  • Project name: P004-LayoutFiles
  • Build Target: Android 4.2
  • Application name: LayoutFiles
  • Package name: tr.androidApp.LayoutFiles
  • Create Activity: MainActivity

Proje geliştirdiğimiz zaman etkileşim için bir java – klas açılıyor.

Proje açıldığında ve etkileşim çalıştığı zaman uygulama bu klasın metodunu çağıracak. Bu metodları (Fonksiyonları) kodlayarak etkileşimin davranışını değiştirebiliriz.

Projeyi yaratırken ve etkileşimi belirlendiği zaman ona MainActivity ismi veriyorduk.

Layout 01

MainActivity yaratıldığı zaman Eclipse aynı zamanda bir java klas yaratıyor. Şimdi bu klası inceleyelim:src/ tr.androidApp.LayoutFiles /MainActivity.java

MainActivity

MainActivity’yi çift tıklandığında karşımıza böyle bir pencere gelecek:

onCreateJava klasımızda onCreate metod otomatik olarak oluşuyor.Uygulama etkileşimi oluşturup gösterdiği zaman onCreate metodu çalıştırıyor, onCreateOptionsMenu sonra ilgileneceğiz.Şimdi bizim için önemli olan:setContentView(R.layout.main) setContentView metodun amacı layout dosyasından var olan bilgileri etkileşim pencereye yerleştirmek. Etkileşimi oluşturduktan sonra Eclipse bize otomatik olarak java-klası yaratıyor. İlerde biz bu klasları kendimiz yaratmayı da öğreneceğiz. Bu klasa bakalım. Bu dosyayı açacağız: src/tr.AndroidApp.LayoutFiles/MainActivity.java 

Adres olarak program dosyanın ID’sini kullanıyor. Bu ID’lerin dosya yolu şu şekilde: gen/ tr.androidApp.LayoutFiles /R.java ve program bu yolu otomatik olarak yaratıyor.

R_java

Bu dosyayı açabilirsiniz ama değişiklik yapmanızı şimdilik tavsiye etmiyorum. Proje R klasta tüm ID’leri tutuyor. Res/layout/main.xml dosyasını açalım ve orada nelerin var olduğuna bakalım

Layout_HelloWorld

Uygulamayı çalıştıralım (CTRL+F11).

MainActivity_HelloWorld

Etkileşim main.xml dosyanın içeriğini yansıttı. Şimdi başka bir dosyanın içeriğini yansıtmayı deneyelim. Bunu yapmak için yeni bir layout dosya yaratacağız. Mesela myscreen.xml. res/layout dosyasını seçelim ve “yeni dosya yarat” tuşuna basalım.

yeni_xml

Karşımıza böyle bir pencere gelecektir:

myscreen

File: seçiminde myscreen.xml ismini girdikten sonra Finish butonuna basacağız.

my_screen

Bu dosyayı açalım ve Properties’i kullanarak TextView’u ekleyelim. Mesela “Bu ekranın özellikleri main.xml değil myscreen.xml dosyada belirleniyor”.

yeni_layout

Aynı anda Eclipse bize hata oluştuğunu bildirecektir.

hata_error

[I18N] Hardcoded string “…”, should use @string resource. Şimdilik bu hatayı dikkate almayalım. Sonraki derslerde onun nasıl çözüleceğini de öğreneceğiz. R.java dosyasında değişikliklerin oluşması için mutlaka projeyi kaydedelim: CTRL+ SHIFT+S. Şimdi etkileşimi öyle ayarlayalım ki layout main.xml’i kullanmasın. Fakat onun yerine yeni myscreen.xml layout’u kullansın. MainActivity.java dosyasını açalım ve SetContentView satırını değiştirelim. R.layout.main yerine R.layout.myscreen değerini gireceğiz.

myscreenSetCode

Değişiklikleri kaydedelim ve uygulamayı çalıştıralım.

avd_myscreen

Ekranda görüyoruz ki etkileşim bizim yeni myscreen.xml dosyadan bilgi okumuş.

2 – Layout – dosya XML şeklinde

Main.xml açıldığında onu bir görsel olarak karşınızda görüyorsunuz. Yani ekranda ise Main.xml’ın nasıl görüneceğini gösteriliyor. Aşağıda iki tane düğüme görebilirsiniz: Graphical Layout ve main.xml. Şimdi main.xml’i açalım.

main_xml

Burada xml isimleri View elementlerin klaslarıdır, tırnak işareti içerisinde olan uzantılar ise bizim Properties sekmede değiştirdiğimiz View’lerın özellikleridir. Properties sekmede yaptığımız değişiklikleri burada da yapabiliriz. Mesela TextView içeriği değiştirelim. Örnekte “yeni text” yazdık.

yeni_text

Kaydedelim ve Graphical Layout’a açalım.

Graphical_layout

Genelde Android kitapları yazanlar, layout dosyanın içeriğini xml formatta veriyorlar. XML parçaları kopyalayıp yapıştırabiliriz. Bu bize zaman tasarrufu sağlayacaktır.

3 – Layout – dosyanın ekranın pozisyon değişiminde davranışı

Layout dosya ekranın pozisyonu otomatik olarak dikey olarak sayıyor. Mesela tableti yatay pozisyonuna getirdiğimiz zaman ne olacak? Deneyelim.

Myscreen.xml’i değiştirelim. Yeni dört tane butonu ve bir yazı ekleyelim.

Xml kodunu projenize kopyalayabilirsiniz.

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout

xmlns:android=”http://schemas.android.com/apk/res/android”

android:orientation=”vertical”

android:layout_width=”match_parent”

android:layout_height=”match_parent”>

<TextView

android:id=”@+id/textView1″

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”ekranda dikey pozisyon”>

</TextView>

<LinearLayout

android:layout_height=”wrap_content”

android:layout_width=”match_parent”

android:id=”@+id/linearLayout1″

android:orientation=”vertical”>

<Button

android:id=”@+id/button1″

android:layout_width=”wrap_content”

android:layout_height=”116dp”

android:text=”Button1″ >

</Button>

<Button

android:id=”@+id/button2″

android:layout_width=”wrap_content”

android:layout_height=”118dp”

android:text=”Button2″ >

</Button>

<Button

android:id=”@+id/button3″

android:layout_width=”wrap_content”

android:layout_height=”122dp”

android:text=”Button3″ >

</Button>

<Button

android:id=”@+id/button4″

android:layout_width=”wrap_content”

android:layout_height=”126dp”

android:text=”Button4″ >

</Button>

</LinearLayout>

</LinearLayout>

Projeyi çalıştıralım. Gördüğümüz gibi dikey pozisyonunda tüm butonlar normal görünüyor.

avd_dikey_butonlar

Şimdi emülatorde Ctrl+F12 basalım. Ekranın pozisyonu yatay şeklini aldı ve bizim dördüncü butonumuz ekrana sığmıyor.

avd_yatay_buton

Bu problemi çözmek için bir tane layoutu daha ekleceğiz. Bu layout bizim butonları yatay pozisyonuna yerleştirecek. Etkileşimsiz dikey pozisyonda dikey layoutu kullanacak ve yatay pozisyonda yatay layoutu kullanacak. İlk önce yeni bir klasör oluşturalım res/layout-land ve onun içinde myscreen.xml dosyayı. Bu dosyayı yatay pozisyonda kullanacağız.

Klasör oluşturmak için res klasöre farenin sağ düğmesine basıyoruz(res, New > Folder, Folder name = layout-land).

yeni_klasor

Sonra yeni bir xml dosya oluşturacağız (layout-land, New > Android XML File, File name = myscreen.xml) ve Finish butonuna basıyoruz.

Aşağıdaki kodu yeni myscreen.xml dosyaya kopyalayınız.

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout

xmlns:android=”http://schemas.android.com/apk/res/android”

android:orientation=”vertical”

android:layout_width=”match_parent”

android:layout_height=”match_parent”>

<TextView

android:id=”@+id/textView1″

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”ekranda yatay pozisyon”>

</TextView>

<LinearLayout

android:layout_height=”wrap_content”

android:layout_width=”match_parent”

android:id=”@+id/linearLayout1″

android:orientation=”horizontal”>

<Button

android:text=”Button1″

android:id=”@+id/button1″

android:layout_height=”100dp”

android:layout_width=”100dp”>

</Button>

<Button

android:text=”Button2″

android:id=”@+id/button2″

android:layout_height=”100dp”

android:layout_width=”100dp”>

</Button>

<Button

android:text=”Button3″

android:id=”@+id/button3″

android:layout_height=”100dp”

android:layout_width=”100dp”>

</Button>

<Button

android:text=”Button4″

android:id=”@+id/button4″

android:layout_height=”100dp”

android:layout_width=”100dp”>

</Button>

</LinearLayout>

</LinearLayout>

Uygulamayı çalıştıralım Ctrl+F11

ekranda_yatay_poz

Gördüğünüz gibi kodumuz başarıyla çalışarak yeni layout’ta, butonları ekrana sığdırarak düzgün bir şekilde görüntüledi.

Bu derste etkileşim içinde layout-dosya  oluşturmayı  ve Eclipse’te  XML kodları gördük. Sonra ekranın pozisyon nasıl değiştirmesi gerektiğini öğrendik. Gelecek dersimizde layout’un çeşitleri olan LinearLayout, TableLayout, RelativeLayout ve AbsoluteLayout’u inceleyeceğiz. Yeni derslerde görüşmek üzere Technopat’ı takip etmeye devam edin…

Android Programlamaya Giriş Ders 1: SDK Kurulumu ve Ayarları

Android Programlamaya Giriş Ders 2: AVD Kurulumu ve ilk Projenin Çalıştırılması

Android Programlamaya Giriş Ders 3: Ekranın Nesneleri ve Nesnelerin Özellikleri

Android Programlama Ders 4: Layout-dosya, XML Kodlama ve Ekranın Pozisyonu

Android Programlama Ders 5: Layout Çeşitleri

Android Programlama Ders 6: Kod İçerisinden View Nesneleriyle Çalışma