Basit Kullanıcı Arayüzü Yapmak
Bu dersimizde XML dosyamıza bir tane text field ve buton ekleyeceğiz.
Android'te arayüzü View ve ViewGroup'ların hiyerarşileri ile inşa ederiz.View objeleri sıklıkla kullandığımız text fields ve butonlardır.ViewGroup'ları ise görünmeyen bileşenlerdir ki ona bağlı olan nesnleşeri nasıl bağlacağını ortaya koyar, grid ya da vertical list gibi.
Bir Linear Layout oluşturmak
1.Project penceresinden app > res > layout > activity_main.xml.
Bu XML aktivitelerin düzenlerini tanımlar ve içinde "Hello World" yazan text view içerir.
2.Yazılı herşeyi silelim ve aşağıdaki kodu ekleyelim.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> </LinearLayout>
LinearLayout bir view gruptur (Aynı zamanda View Group'un alt sınıfıdır) yatay ve dikey olarak ayarlanabilir.
Bileşenleri tanıyalım:
Bileşenleri tanıyalım:
android:layout_width
: Genişliği ayarlarandroid:layout_height
: Yüksekliği ayarlarmatch_parent kullanıldığında bağlı bulunduğu view'e göre kendisini otomatik olarak ayarlar
Text Field Eklemek
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" /> </LinearLayout>
Bileşenleri Tanıyalım:
android:id
: View için tekil bir Id sağlar.Kod tarafında bu Id kullanarak bileşende okuma ya da düzenleme yapabiliriz.@ işareti ise herhangi bir objeyi XML dosyasından okumak istediğimizde kullanırız.edit_message olduğu gibi. (+
) işareti ise ID ilk defa tanımladığımızda gerekmektedir.Proje compile olduğunda ID R.java dosyasına oluşturulur ve EditText elementini temsil eder.android:layout_width
:android:layout_height
:"wrap_content" değer görünümün içeriğini uydurmaya ihtiyaç duyduğu gibi görünüm yalnızca kadar büyük olması gerektiğini belirtir."match_parent" bunu yukarıda açıklamıştık.
android:hint
: String Resources Ekleme
- Project penceresinden, res > values > strings.xml. açalım.
- Aşağıdaki gibi Ekleyelim
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My First App</string>
<string name="edit_message">Enter a message</string>
<string name="button_send">Send</string>
</resources>
Button Ekleme
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:id="@+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
</LinearLayout>
Çalıştıralım.
EditText'i Ekran'a sığdırmak için
activity_main.xml
dosyasındaki alanı<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
şeklinde değiştiriyoruz.Çalıştıralım sonrasında;
Send Button'a Bir Event Ekleyelim
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" />
nde Buton'a tıklandığında sendMessage() metodu çalışacak.
java > com.example.myfirstapp > MainActivity.java
açalım ve aşağıdaki gibi ekleyelim.
package com.example.mypc.myfirstapp; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; public class MainActivity extends AppCompatActivity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** Called when the user clicks the Send button */ public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } }
Intent
objesi çalışan iki ayrı bileşeni ayrı bileşenler arasındaki bağlanmayı sağlayan bir nesnedir
İkinci Activity Oluşturma
- Project penceresinden , app seçip New > Activity > Empty Activity.
- Configure Activity penceresinden "DisplayMessageActivity" Activity Name girip Finish tıklayın
DisplayMessageActivity.java aşağıdaki şekilde olması gerekmektedir.
package com.example.mypc.myfirstapp; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; public class MainActivity extends AppCompatActivity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** Called when the user clicks the Send button */ public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } }
Nesneleri açıklayalım:
putExtra()
metodu EditText
' değerini diğer intent'e taşır.EXTRA_MESSAGE
public bir değişen olduğundan farklı intentlerde anahtar olarak kullanılır.startActivity()
metodu DisplayMessageActivity
sınıfını bir örneğini başlatır.getStringExtra()
ilk faaliyetten gelen verileri alır.
Şimdi Çalıştıralım.
Evet istediğimiz şekilde çalıştı.Bir diğer derste görüşmek dileğiyle...
Hiç yorum yok:
Yorum Gönder