14 Mart 2014 Cuma

Android Olay Yönetimi(Event Handling)

Android Olay Yönetimi bize uygulamamızdaki bileşenlerle(button,textfield,Menü,textview vs)  herhangi bir şekilde temasa geçtiyimizde devreye girer.Örnegin bir Button'a tıkladıgımızda uygulamamızın  herhangi  birşey yapmasını istiyorsak o zaman olay yönetimini kullanmalıyız.Olay yönetiminin 4 esas özelliyi vardır.

  1. Olay Kaynağı(Event Source)
    Olayı gerçekleştiren bir uygulama bileşenidir(button,textfield,textview,listview vs).
  2. Olay Dinleyicisi(Event Listener)
    Olay gerçekleştiyinde napılacagı yönünde karar veren bir Listener Classıdır.Örnegin OnClickListener classı.Olay gerçekleştiyinde bilgilendirilir.
  3. Olay Nesnesi(Event Object)
    Olay gerçekleştirildigi zaman oluşturulur ve olay ile ilgili bilgileri tutan nesnedir.
    Örnegin olay nesnemiz event olsun,event.getId() diyerek olayın hangi bileşen uzerinde gerçekleşdiyini oyrene biliriz.
  4. Olay İşleyicileri(Event Handler)
    Olay dinleyicisi tarafından olay yakalandıgında gereken kodun çalıştırılacagı metotlardır.
    Örneğin OnClickListener dinleyicisinin onClick(View event) metodu.
İki Button ve birde TextView'u olan bir örnege bakalım.
  • activity_main.xml
    --RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/RelativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" --
    
        --Button
            android:id="@+id/button1"
            android:layout_width="208dp"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button2"
            android:layout_alignParentTop="true"
            android:layout_marginTop="28dp"
            android:text="@string/bbutton" /--
    
        --Button
            android:id="@+id/button2"
            android:layout_width="205dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button1"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="14dp"
            android:text="@string/kbutton" /--
    
        --TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button2"
            android:layout_alignRight="@+id/button2"
            android:layout_below="@+id/button2"
            android:layout_marginTop="14dp"
            android:text="@string/textview" /--
    
    --/RelativeLayout--
  • strings.xml
    --?xml version="1.0" encoding="utf-8"?--
    --resources--
    
        --string name="app_name"--Android Event Handling--/string--
        --string name="action_settings"--Settings--/string--
        --string name="kbutton"--Küçült--/string--
        --string name="bbutton"--Büyüt--/string--
        --string name="textview"--Android Event Handler--/string--
      
    --/resources--
    
    
strings.xml dosyasında uygulamamızda kullanılan butun stringler tutulur,buradan uygulamamıza stringler ekleye bilir ve istediyimiz yerde onları uygun degişken isimleri ile kullana biliriz.
  • MainActivity.java
    public class MainActivity extends Activity{
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
                     
      //olay kaynakları tanımlanıyor    
      Button bButton=(Button)findViewById(R.id.button1);
      Button kButton=(Button)findViewById(R.id.button2);
                    
      //buttonlara tıklandıgında
      bButton.setOnClickListener(new View.OnClickListener() {
       
       @Override
       public void onClick(View v) {
        // TODO Auto-generated method stub
        //olay işleyicisi
        TextView text=(TextView)findViewById(R.id.textView1);
        text.setTextSize(25);
       }
      });
      kButton.setOnClickListener(new View.OnClickListener() {
       
       //olay işleyicisi  
       @Override
       public void onClick(View v) {
        // TODO Auto-generated method stub
        TextView text=(TextView)findViewById(R.id.textView1);
        text.setTextSize(15);
       }
      });
     }
    }
Uygulamayı çalıştıralım.Eger Büyüt buttonuna tıkladıgımızda mevcut textview'un boyutu buyuyecek,Küçült buttonuna tıkladıgımızda ise mevcut textview'un boyutu kuçulecekdir.



MainActivity.java sınıfındaki kodlardan gorduyumuz gibi her Button için ayrı bir dinleyici ve işleyici kullandık.
İstersek her iki Button için ortak bir dinleyici ve işleyici  de kullana biliriz.Bunu için OnClickListener interface'ni implement etmemiz lazım.
  • MainActivity.java
    public class MainActivity extends Activity implements OnClickListener{
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
          
      Button bButton=(Button)findViewById(R.id.button1);
      Button kButton=(Button)findViewById(R.id.button2);
      
      bButton.setOnClickListener(this);
      kButton.setOnClickListener(this);
     }
    
     @Override
     public void onClick(View event){
      // TODO Auto-generated method stub
      TextView text=(TextView)findViewById(R.id.textView1);
      
      if(event.getId()==R.id.button1){
       text.setTextSize(25);
      }
      if(event.getId()==R.id.button2){
       text.setTextSize(15);
      } 
     }
    }
Böylece her iki Button için ortak bir Listener kullana biliriz.



Hiç yorum yok:

Yorum Gönder