Android

Android Uygulamasını Oluşturan Öğeler Ve Celcius-Fahrenheit Dönüştürme Uyg. Üzerinde Anlatımı

Herkese merhabalar,

Bu yazımda bir  android uygulamasını oluşturan öğeler, bunların birbiri arasındaki ilişkileri üzerinde bazı kısa bilgiler vereceğim ve  öğeler arasındaki ilişkilerin anlaşılması açısından küçük bir uygulamanın geliştirilme aşamalarını anlatacağım.  Yardımcı olması dileğiyle 😉 .

A – Uygulamayı Oluşturan Öğelerin Tanıtımı

Öncelikle bir uygulamaya başlamadan önce  genel anlamda uygulamayı   oluşturan öğeleri kısaca tanıyalım. Aşağıdaki şekilde bir android projesini ilk açtığımızda varsayılan olarak karşımıza gelen öğeleri görebiliriz.  Nasıl proje  açıldığına gözatmak için buraya tıklayabilirsiniz. Öğeler hakkında kısaca bilgi vermek gerekirse;

[1] : Kaynak kodların yer aldığı kısımdır. Gerek Activity sınıflarımız gerekse diğer sınıflar burada yer alır. Dikkat edilmesi gereken şey, sınıf isimlerinin anlamlı olması ve paketlerle iyi bir şekilde kategorize edilmesidir. Bu hem yazılımın ne yaptığının anlaşılmasını kolaylaştıracak hem de yazılım gelişirme sürecinde bizlere kolaylık sağlayacaktır.

[2] : İçeriği otomatik üretilen bir sınıftır. Gerek sayfa düzeni gerekse manifest içerisinde yapılan çoğu değişiklik buraya otomatik olarak yansır. R.java sınıfı üzerinden birçok öğeye erişilir.

[3] : Uygulamada kullanılan kütüphanelerin yer aldığı kısımdır.

[4] : Uygulamada kullanılan  şekil, resim, foto, icon vb. görsel öğelerin yer aldığı kısımdır. Üç farklı görüntü kalitesinde kategorize edilmiştir.

[5] : Sayfa düzeni, sayfalar vb. öğelerin yer aldığı kısımdır.

[6] : Referans değerlerimizin yer aldığı kısımdır.  Örn: “unvan”, “blog yazarı” eşleştirmesi gibi. @string/unvan denildiğinde direk olarak bizlere “blog yazarı” değerini verecektir.

[7] : AndroidManifest.xml (Önemli)

Android  uygulamasının çalışması için gerekli tüm prensiplerin belirlendiği dosya diyebiliriz. Filtrelemeler, izinler, versiyon ayarları ve bir android uygulamasında  aklınıza gelebilecek birçok şey bu dosya içerisindeki verilere göre şekilleniyor. Örneğin, sms gönderme iznini vermediğimiz bir uygulama sms gönderemez veya internet erişimi vermediğimiz bir uygulamanın internete bağlanma imkanı yoktur. Ya da bir activity sınıfını bu dosyada tanıtmadığınız sürece uygulamanız içerisinde o sınıfa erişmeniz mümkün olmayacaktır. Bundan dolayı  bir android uygulamasının en önemli parçalarından diyebiliriz ve içeriği oluşturulurken çok dikkat edilmesi gerekir.

B- Uygulamanın Hayata Geçirilmesi

Projemizi açtık. Öğeler hakkında bilgi edindik. Sıra geldi basit bir celcius-fahrenheit sıcaklık dönüştürme uygulaması yazmaya.

Öncelikle uygulamamız için bir sayfa düzeni oluşturmamız gerekecektir. Layout kısma sağ tıklayıp  “donusturucu” isminde bir xml dosyası oluşturalım. İlk oluşturduğumuzda boş bir dosya olduğu için hata işareti göreceğiz. Ama  xml dosyasını kapatıp tekrar açtığımızda  görsel araç karşımıza gelecektir ve buradan boşluğa bir layout sürükleyerek uygulama ekranımız için ilk adımı atabiliriz.

Dilediğimiz herhangi bir layout’uda kullanabiliriz; ama ben kolaylık olması açısından linearLayout tercih ettim bu uygulamada. Ayrıca bize kolaylık sağlayan araçlar her zaman %100 verimlilikle çalışmayabiliyor. Bundan dolayı bazen xml kodunu açıp manuel olarak düzenlemeler yapmamız gerekebilir. Aşağıda android:orientation”vertical” öğesinin manuel olarak xml dosyasına eklendiğini görebilirsiniz.

donusturucu.xml düzen sayfamızı  araç yardımıyla aşağıdaki gibi düzenleyelim. Öğelerin merkezde olması için gravity’i center olarak ayarlamanız gerekecektir. (Not:Bazı durumlarda manuel olarak xml kodunda değişiklik yapmanız gerekebilir.)

donusturucu.xml sayfasındaki öğeler -eğer eclipse araç düzenindeherhangi bir değişiklik yapmadıysanız- ekranın sağ bölümünde bulunan outline sekmesi altında aşağıdaki gibi görünecektir. Ayrıca android:onClick=”tiklaHesapla” öğesini butona eklemeyi unutmayalım.

Uygulama sayfasının düzeninden sonra strings.xml içinde donusturucu.xml dosyasında kullanmak için  string tipinde değerler oluşturalım. Bunu Add… > String  seçtikten sonra Name, Value verilerini girerek gerçekleştirebiliriz. Aşağıda donusturucu.xml dosyasında kullanılmak üzere oluşturulmuş değerleri görüyoruz. Bunlara “@string/degerAdi” satırını kullanarak erişebilmekteyiz.

strings.xml değerlerimizi oluşturup bunları donusturucu.xml dosyamızda kullandıktan sonra uygulamamız büyük oranda tamamlanmış olacaktır. AndroidManifest.xml dosyamızı kontrol ettikten sonra uygulamamızı çalıştırıp kullanmaya başlayabiliriz. Programın çalıştırıldıktan sonraki halini aşağıdaki görüntülerde bulabilirsiniz.

Aşağıda uygulamanın kaynak kodlarını bulabilirsiniz.  Bunları incelemek hem yaptığımız uygulamanın sayfa düzeninin hemde strings.xml vb. dosyaların birlikte kullanımını anlamak açısından faydalı olacaktır.

———————————————————————————————————————————-

donusturucu.xml

<?xml version="1.0" encoding="UTF-8"?>
 <LinearLayout android:orientation="vertical"
     xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1"
   android:weightSum="1" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
     <ImageView android:src="@drawable/hosgeldiniz" android:id="@+id/imageView1"
        android:layout_width="wrap_content" android:layout_height="98dp"
         android:layout_weight="0.14"></ImageView>
     <TextView android:id="@+id/textView1" android:text="@string/DegerGiriniz"
       android:layout_gravity="center" android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>
    <EditText android:id="@+id/editText1" android:inputType="number"
        android:layout_height="wrap_content" android:layout_width="match_parent">
        <requestFocus></requestFocus>
    </EditText>
     <TextView android:textAppearance="?android:attr/textAppearanceLarge"
       android:text="@string/VarsayilanDeger" android:id="@+id/textView2"
      android:layout_height="wrap_content" android:layout_width="wrap_content"         android:layout_gravity="center"></TextView>
<RadioGroup android:layout_height="wrap_content" android:id="@+id/radioGroup1"
        android:layout_weight="0.13" android:layout_width="match_parent">
       <RadioButton android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:id="@+id/radio0"
           android:text="@string/Radio_celc" android:checked="true"></RadioButton>
       <RadioButton android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:id="@+id/radio1"
            android:text="@string/Radio_fa"></RadioButton>
    </RadioGroup>
     <Button android:id="@+id/button1" android:text="@string/TiklaDonustur"
       android:layout_width="120dp" android:layout_height="wrap_content"
        android:onClick="tiklaHesapla" android:layout_gravity="center"></Button>
</LinearLayout>

—————————————————————————————————————————–

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Dönüştür</string>
    <string name="Radio_celc">Celcius - Fahrenheit</string>
    <string name="Radio_fa">Fahrenheit - Celcius</string>
    <string name="TiklaDonustur">Dönüştür</string>
   <string name="DegerGiriniz">Değer Giriniz :</string>
   <string name="VarsayilanDeger">0.0</string>
</resources>

—————————————————————————————————————————-

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="Dersler.Andr03"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
 
<application android:icon="@drawable/donusturlogo" android:label="@string/app_name">
<activity android:name=".DonusturucuActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

——————————————————————————————————————————–

DonusturucuActivity.java

package Dersler.Andr03;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
 
public class DonusturucuActivity extends Activity {
 
private EditText text;
private TextView sonucGoster;
 
// Uygulama ilk açıldığında onCreate methodu çalışır.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Gösterilecek layout, donusturucu.xml olarak belirleniyor.
setContentView(R.layout.donusturucu);
 
/*
* Tanımlamış olduğumuz EditText tipindeki değişkene donusturucu.xml
* dosyasında yer alan editText1 atanıyor. Böylece text değişkenimizde
* yaptığımız her değişiklik editText1 değişkeninde bizlere
* yansıyacaktır.
*/
text = (EditText) findViewById(R.id.editText1);
sonucGoster =(TextView) findViewById(R.id.textView2);
}
 
/*
* donusturucu.xml dosyasındaki tiklaHesapla isminde bir tiklama olayı
* belirlemiştik. Aşağıdaki methodumuzda butona tıklandığında uygulamamızda
* ne yapılacağını belirliyoruz.
*/
public void tiklaHesapla(View view) {
 
// ID'ye göre görsel içindeki öğeleri switch-case yapısıyla
// seçimliyoruz.
switch (view.getId()) {
 
/*
* ID'si button1 olan öğeye tıklandığında çalışacak kısım.
* Not:donusturucu.xml dosyamız çok sayıda butonda içerebilirdi.
*
*/
case R.id.button1:
//Radio butonlarımızı fahrenheit ve celsius butonlarına atıyoruz.
RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio0);
RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio1);
 
//Eğer kullanıcı değer girmeden bir dönüştürme işlemi gerçekleştirmek ister ise,
//değer girmesi gerektiğini belirtiyoruz.
 
if (text.getText().length() == 0) {
Toast.makeText(this,
"Lütfen Dönüştürmek İçin Bir Değer Giriniz !",
Toast.LENGTH_LONG).show();
return;
}
//EditText'ten almış olduğumuz değeri float tipinde parse edip girisDegeri isimli
//değişkene atıyoruz.
float girisDegeri= Float.parseFloat(text.getText().toString());
 
//celcius Butonu tiklenmiş ise fahrenheitten celcius'a dönüştürme yapıyor
if (celsiusButton.isChecked()) {
 
sonucGoster.setText(String
.valueOf(donusturFahrenheit_Celsius(girisDegeri))+ " C");
 
//Diğer durumda celciustan fahrenheit'a dönüştürme yapıyoruz.
} else {
sonucGoster.setText(String
.valueOf(donusturCelsius_Fahrenheit(girisDegeri))+ " F");
 
}
break;
}
}
 
// Celcius'a dönüştür
private float donusturFahrenheit_Celsius(float fahrenheit) {
return ((fahrenheit - 32) * 5 / 9);
}
 
// Fahrenheit'a dönüştür
private float donusturCelsius_Fahrenheit(float celsius) {
return ((celsius * 9) / 5) + 32;
}
}

———————————————————————————————————-

hosgeldiniz.png

————————————————————————————————————-

Küçük bir uygulama üzerinde bir Android uygulamasını oluşturan öğelerin görev ve bibirleriyle olan ilişkilerini kısa bir şekilde anlatmaya çalıştım.  Bundan sonraki yazımda bir android uygulamasının nasıl imzalandığını anlatacağım. Hemen ardından da geniş çaplı bir uygulama düşünüyorum. (Maps vb.)  Okuduğunuz için çok teşekkürler. Görüşmek üzere 😉 .



One Comment

  1. android başlangıç için güzel anlatım eline sağlık admin bey 🙂

Comments are closed.