- Olay Kaynağı(Event Source)
Olayı gerçekleştiren bir uygulama bileşenidir(button,textfield,textview,listview vs). - 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. - 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. - 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.