7 Mayıs 2014 Çarşamba

Yeni başlayanlar: Android programlamaya giriş - örnek uygulama: textView in textini değiştirme

Amacımız basitçe bir uygulama geliştirerek Android'de nesnelere erişmek ve özelliklerini kullanmak nasıl oluyor şeklinde tanımak. 
İlk önce Android Studio uygulamasını indirin. Nerden mi bulacaksınız benim gibi googleden zaten googlenin kendi ürünü. İndirdikten sonra sizden JDK nın makinanıza kurulu olmasını isteyecektir. Tabiki yine googleden JDK download araması ile indiriyoruz. Kurulumunuz tamamlandıktan sonra uygulamayı çalıştıralım. İlk başta boş bir proje açın gelen şeylere next demeyi unutmayın :) Tabi projenize makul bir ad da verin.

Şimdi projemizin ekranı karşımıza geldi. İlk başta kod ekranını göreceksiniz. Tasarım ekranına geçmek için res klasörü altında bulunan layout klasörüne girin ve oradaki xml dosyasını açın. Açılan xml dosyası tasarım bilgisini içermektedir. Benim gibi eski bir yazılımcı iseniz bu olayı linuxda uygulama yazmaya çalışırken hatırlamış olmalısınız. İster tasarım kısmında ister alt kısımda ki iki butondan text olana basarak xml kaynağında çalışın fark etmez. Önemli olan sonuç.

Sayfaya iki adet element ekliyorum biri textView denilen label diğeri de buton. Yapılandırmayı xml dosyası olarak yazıyorum.

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.sampleapp2.app.MainActivity">

   
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

       
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/main_text"
            android:id="@id/lblMain" />

       
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/click_me"
            android:id="@id/btnMain" />
   

Yukarıda ki kodların tamamı şimdilik sizi ilgilendirmiyor. Sadece LinearLayout yani satır satır oluşan bir layout üzerine nesnelerimizi koyduğumuzu bilin. Bunu tasarım ekranında sol tarafta ki layout kategorisinden bularak sayfaya sürükleyip bırakabilirsiniz.

İkinci olarak textView nesnemizde sayfaya atılmış durumda. Yine sol taraftan atmanız mümkün. Burada iki önemli husus var. Eğer tasarım ekranından iş görüyorsanız text özelliğini ayarlamak için Properties ekranındaki text özelliğine girip yan tarafında bulunan "..." tuşuna basarak aşağıdaki ekranı açmalı ve ekranın altında bulunan new resources butonuyla yeni bir metin eklemelisiniz.




Eğer xml formatında düzenleme yapıyorsanız yukardaki örnekteki gibi bir referans oluşturup bu referansı res klasörü altında ki values klasöründe bulunan strings içinde tanımlamanız gerek. Yukarıda benim örneğimde ki referansın tanımı aşağıdaki gibidir.




    SampleApp2
    Hello world!
    Settings
    Bu ana yazıdırTıkla

 

 Burada gördüğünüz gibi main_text tanımlanmış durumda. Aynı şey id değeri içinde geçerli. Yine her iki yöntemi kullanabilirsiniz. Ancak id tanımları için res/values/ids.xml dosyasına tanımlama yapmanız gerek.


lblMainbtnMain


 Bu işlemleri yaptıktan sonra aynı şeyleri buton için de yapın. Şimdi android ekranında iki nesneniz var. İlk textView ikincisi ise buton. Gelelim kod kısmında ki uğraşımıza.

package com.example.sampleapp2.app;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button _button = (Button)findViewById(R.id.btnMain);
        _button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                btnMain_OnClickListener(view);
            }
        });
    }

    public void btnMain_OnClickListener(View view) {
        TextView _mainText = (TextView)findViewById(R.id.lblMain);
        _mainText.setText("New world!");
    }

    public boolean onCreateOptionsMenu(Menu menu) {
       
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

 

Yukarıda kodlarımız bulunmakta. Burada neler yaptık onlara değineyim. MainActivity nesnemiz ActionBarActivity tipinden türetilmiştir. Ve bu sınıf onCreate fonksiyonunu otomatik çalıştırır. Dikkat ederseniz üst kısmında @override yazmaktadır. Bunun anlamı bu fonksiyonun ana nesneden devralındığını (ezdiğini) belirtmektir.

Öncelikle yapmamız gereken butonumuzu bu sınıfa tanıtmak. Bunun için findViewById fonksiyonunu kullanıyoruz. Bu fonksiyon genel control tipinde bir nesne döndürdüğü için başında buton tipine dönüşüm ifadesi bulunmakta. Zaten eşitliğin diğer yanında butonumuz da var. Dikkat! import kısmında buton kütüphanesi ekli. Aksi halde kodlarınız tanımayacaktır. butonumuzu bulmak için kullandığımız id değeri dikkatinizi çektiyse xml deki ile aynı. Yalnız R nedir diyecek olursanız hani res klasörümüz vardıya (yani resource) işte onu ifade ediyor. Resource yapısı linux sistemlerinde olduğu gibi android ve hatta qt gibi yapılarda da kullanılmaktadır. Evet artık buton nesnemizi oluşturduk. Tıklama olayını yakalamak için setOnClickListener fonksiyonunu çağırıyoruz. Bu da bizden View.OnClickListener() referansını istiyor. Biz standart new ile objeyi lambda olarak oluşturduk. Aslında yeni bir sınıf oluşturmak daha mantıklı olurdu. Her ne ise. Bu işlemi yaptıktan sonra içte bir fonksiyon daha oluştu. Bu fonksiyondan gelen değerleri dışarıda rahatça kullanabilmek için kendim oluşturduğum başka bir fonksiyona gönderdim. O da hemen o bloğun altında.  btnMain_OnClickListener fonksiyonuna ulaştıktan sonra burada da textViewimizi tanımlıyoruz. Aynı butonda ki mantık. Daha sonra setText fonksiyonuyla da yeni yazımızı textView e attık. Aslına bakarsanız yeni yazı bu şekilde statik ise yine resource üzerinden başka bir adla oluşturup onu vermek daha mantıklı olurdu. Bu seferlik bu şekilde olsun.

Uygulamayı çalıştırmak için play tuşuna basın ve sizden bir emulator oluşturmanızı istemesini bekleyin. Derleme bittikten sonra bir emulator seçme ekranı gelir. Açılan kısımdan emulator oluşturarak işleminize devam edebilirsiniz. Daha fazla bilgi için Google Android Studio sayfalarında ki yardım başlıklarını kullanabilirsiniz.

Bir daha ki yazımda görüşünceye dek esenlikle kalın... 

0 yorum: