Android Programlama Ders 9: Res/values Klasörünü İnceliyoruz

In Mobil, Teknoloji by Victor CuiumjuLeave a Comment

Android programlama öğrenmeye devam ediyoruz. Bu derste res/values klasörlerin amacı nedir? Bu dosyalarda neler kaydedilir ve nasıl kullanılır? İşte bunları öğreneceğiz…

Res (resource) alt dosyalarda uygulamanın farklı kaynakların topladığı yerdir. Daha önce gördüğümüz layout-dosyalar da res/layout’ta bulunuyor. Şimdi res/values klasöre daha ayrıntılı bakalım. Bu klasörün amacı projenin kaynakların (farklı tiplerden) tutulmasıdır. Öncelikle String ve Color tiplerine bakalım.

Yeni proje oluşturalım:

  • Project name: P009_ResValues
  • Build Target: Android 4.2
  • Application name: ResValues
  • Package name: tr.androidApp .resvalues
  • Create Activity: MainActivity

 res/values/strings.xml dosyayı açalım

strings

Üç tane String tipi nesne görüyoruz:

Hello world – ara yüzarsayılan  olarak main.xml içinde TextView Text özelliği taşıyor. TextView bu nesnenin içeriğini yansıtıyor.

hello_world

app_name – Varsayılan olarak etkileşim (Activity) ve uygulama için başlık olarak kullanılıyor.

Bu özelliği Manifest klasöründe belirleniyor. Manifest klasörünü detaylı olarak gelecek derslerde inceleceğiz.

Bu nesnelere basıldığı zaman, sağ tarafta nesnelerin ne olduğuna yönelik bir açıklama vardır: İsim (Name) ve değer (Value)

attributes

Name – ID’dir. ID eşsiz (Benzersiz) olmalıdır. Bunun için R.java dosyasında bu String nesneye ulaşmak için konstant (Sabit) bir isim oluşuyor.

R_java

Şimdi daha önce gördüğümüz kaynakları kullanmaya çalışalım.

İlk önce main.xml’de aşağıdaki verdiğim kodları kullanarak yeni bir ekran oluşturalım:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_height=”match_parent”
android:layout_width=”match_parent”
android:orientation=”vertical”>
<LinearLayout
android:layout_width=”match_parent”
android:id=”@+id/llTop”
android:orientation=”vertical”
android:layout_weight=”1″
android:layout_height=”match_parent”>
<TextView
android:text=”TextView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:id=”@+id/tvTop”
android:layout_marginTop=”30dp”>
</TextView>
<Button
android:text=”Button”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:id=”@+id/btnTop”
android:layout_width=”wrap_content”>
</Button>
</LinearLayout>
<LinearLayout
android:layout_width=”match_parent”
android:id=”@+id/llBottom”
android:orientation=”vertical”
android:layout_weight=”1″
android:layout_height=”match_parent”>
<TextView
android:text=”TextView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:id=”@+id/tvBottom”
android:layout_marginTop=”30dp”>
</TextView>
<Button
android:text=”Button”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:id=”@+id/btnBottom”>
</Button>
</LinearLayout>
</LinearLayout>

Ekran iki ayrı bölüme ayrılıyor. LinearLayout, Button ve TextView içeriyor. LinearLayout için fonun rengi  ve TextView, Button – metni değiştirelim. Bunu yapmak için kaynakları (Resources) kullanacağız. Ekranda yukarıdaki bölümde View nesneleri özellikleri (properties) kullanarak değiştireceğiz. Ve aşağıdaki kodu kullanarak.

Values klasöründe yeni bir dosya açalım isimi myres (My resource: Yani kaynaklarım) olsun.

yeni_xml_dosya

myres_xml

Resource Type yerine Values ve File için myres gireceğiz. Finish butona basıyoruz. Karşımıza aşağıdaki gibi pencere gelecektir.

myres_devami

Dosyayı oluştuktan sonra yeni bir nesne yüklemek için Add butona basıyoruz.

yeni_nesne_olusturma

Bastıktan sonra nesnenin tipini, ismini ve değerini seçiyoruz. Dört tane String ve iki tane Color nesnesi oluşturalım:

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

<resources>

<string name=”tvTopText”>yukardaki tekst</string>

<string name=”btnTopText”>yukardaki buton</string>

<string name=”tvBottomText”>asagidaki tekst</string>

<string name=”btnBottomText”>asagidaki buton</string>

<color name=”llTopColor”>#336699</color>

<color name=”llBottomColor”>#339966</color>

</resources>

Elle girebilirsiniz veya yukarıdaki kodu myres.xml dosyaya  kopyalayabilirsiniz. Kaydedelim ve R.java dosyasını kontrol edelim.

R_java_kontrol

Tamam kaynakları oluşturduk, şimdi View nesnelerini kullanmak için ayarlamaları yapalım.

İlk önce yukarıdaki nesneler için ayarları yapalım. llTop’un özelliklerinde (Properties)  arka planında (Background) sağa tarafta düğmeye basıyoruz (Üç tane nokta). Color seçiminde llTopColor seçiyoruz.

L0011_L_lltop

tvTop için özellikler, Text içinde TvTopText seçeriz.

btnTop için özellikler, Text içinde btnTopText seçeriz.

Arka planın rengi, butonda ve TextView’de myres.xml dosyasında belirttiğimiz yazılarla değişti.

Aşağıdaki bölümü değiştirmek için kodu yazacağız. Bunun için ilk başta nesneleri buluruz ve sonra onlara değerleri atarız.

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

LinearLayout llBottom = (LinearLayout) findViewById(R.id.llBottom);
TextView tvBottom = (TextView) findViewById(R.id.tvBottom);
Button btnBottom = (Button) findViewById(R.id.btnBottom);

llBottom.setBackgroundResource(R.color.llBottomColor);
tvBottom.setText(R.string.tvBottomText);
btnBottom.setText(R.string.btnBottomText);

}
}

Dikkat ederseniz metin değerini değiştirmek için setText metodunu kullandık. Kodların çalışıp çalışmadığını görmek için emülatorü kullanacağız. Değişikleri görmek için GraphicalLayout uygun değildir, çünkü bu şekilde, onCreate metodu sadece uygulamayı çalıştırdığı zaman çalışır.

emulator

Ders Sonu Notları:

Bu derste String ve Color bir myres.xml dosyada iki tane kaynak oluşturduk. Ama daha kullanışlı bu kaynakları ayrı dosyalarda tutmaktadır. Gelecek derslerde biz bu yöntemi kullanacağız (Mesela strings.xml, colors.xml).

Res/values klasöründe kaynakların isimleri farklı olmalıdır. Bu demek farklı dosyalarda kaynakların ismi aynı olmayacaktır.

Gelecek derste uygulamanın bildirimleri (Logs) ve çıkan mesajları detaylı ilgileneceğiz.