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.



3 Mart 2014 Pazartesi

Android Uygulamasına Arkafon Müziği Ve Arkaplan Resmi Ekleme






Merhaba arkadaşlar.Bu yazımda Android uygulamamıza nasıl arka fon müziği ve resim  ekliyebiliriz onu yazıcam.
Önce resimden başlayalım.Arka plana eklemek istediyimiz resmi kopyalayın ve projenizdeki res(resource) klasorü içindeki drawable-hdpi klasörune yapıştırın.



Görduyumuz uzere res klasörunde drawable türünden 5 farklı dosya var.(eyer Android sürümünüz 4.4.2 ise.eski  sürümlerde 5 olmaya bilir).

  • drawable-hdpi
  • drawable-ldpi
  • drawable-mdpi
  • drawable-xhdpi
  • drawable-xxhdpi
Dikkat etdiyseniz kopyaladıgımız resmi drawable-hdpi klasörüne diyilde diğer 4 klasörden herhangi birinede yapıştıra bilirdik,bunu yapmamamın sebebi uygulamayı çalıştıracagım emulatör(sanal makine)'ün boyutunun 
hdpi'ye göre ayarlamamdır.Daha dogru şekilde soylesek kullanacagım layout'un buyukluyu örneğin 150x150 boyutundaysa hdpi'yi,200x200 ise xhdpi'yi,100x100 ise mdpi'yi,75x75 ise ldpi'yi seçmem lazım.(kaynak)
Klasöre ekleme işleminden sonra bu resim dosyasını xml dosyasına eklemekde gerekiyor.Bunun için
activity_main.xml dosyasını açıp aşagıdaki kodu bu dosyaya ekliyoruz.

   android:background="@drawable/android"
Resim dosyamızın ismi "android.jpg" dir,ama gorduyumuz gibi dosya uzantısını dikkate almıyoruz.
Ekledikden  sonra kodlarımız bu şekilde gözükücek.

  • activity_main.xml
--AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    android:background="@drawable/android"
    tools:context=".MainActivity"-- 
--AbsoluteLayout--

(arkadaşlar  yukarıdaki kod blogunda < ve > işaretleri yenine -- kullandım,kod blogunda ,< ve > html gibi yorumlandıgından kod blogu gosterilmiyordu)
Uygulamamızı çalıştıralım.Gördüyümüz gibi arka plana resim eklenmiştir


Şimdie ise arkafon  müziği ekleyelim.Yeniden ekleyeceğimiz müzik dosyasını kopyalayıp res klasöründeki drawable-hdpi klasörüne yapıştıralım.


Şimdi ise MainActivity.java(uygulama çalışırken çalıştırılacak kodların bulundugu sınıf) sınıfını açalım.
MainActivity.java
package com.example.ilkuygulamam;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

}
Arkafonda müzügin çalmasını istiyorsak,önce sınıfımızda  bir MediaPlayer oluşturmamız lazım.
Oluşturma kodu aşagıdaki gibidir.
MediaPlayer music=MediaPlayer.create(MainActivity.this, R.drawable.mymusic);             

Bu kodu classımıza ekliyoruz ve MediaPlayer'i çalıştırmak içinde ayrıca 
music.start();
kodunu eklememiz gerekiyor.
  • MainActivity.java
package com.example.ilkuygulamam;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.media.MediaPlayer;
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  MediaPlayer music=MediaPlayer.create(MainActivity.this, R.drawable.mymusic);
  music.start();
  
 }

}
Şimdi uygulamamızı çalıştıralım,uygulamamız çalıştıgında goruntu aşagıdaki gibidir,ama arka fonda muzik çalmakdadır ;).


2 Mart 2014 Pazar

Android Uygulaması Oluşturma Ve Çalıştırma

Merhaba arkadaşlar,bu yazımda Android uygulaması oluşturma ve çalıştırılmasını anlatıcam,ayrıca
oluşturulan uygulamanın bileşenlerindende bahsedeceğim.
Uygulama oluşturmak için File->New->Project yolunu takip edelim.



Android Application Project'i seçip Next diyelim.


2 kere next dedikden sonra boyle bir sonuçla karşılaşmamız gerekiyor.
Buradaki Activity Name oluşturulacak Activity'nin ismi,Layout Name ise bu Activity için oluşturulacak Arayuz penceresi için oluşturulacak olan xml dosyasının ismini temsil ediyor.Finish    dedikten    sonra uygulamamız otomatik oluşturulucak.  

.

  • MainActivity.java


MainActivity.java sinifı,uygulamamız çalıştırıldıgında,çalıştırılıcak olan kodları barındıran sınıfdır.

  • onCreate() Metodu
OnCreate() metodu hem yeni bir aktivite oluşturulurken hem de aktivitenin yeniden oluşturulması esnasında çağrılan bir metotdur.Bu metotta Bundle nesnesinin okunması gerekir. Eğer bundle nesnesi null  ise sistem yeni bir aktivite oluşturur ,bundle null deyilse  activitiyeyi yeniden oluşturur ve önceki bilgileri bu aktiviteye  aktarır.
  • setContentView() Metodu
setContentView() metodu, çalıştıracagımız Activity için kendimizin oluşturdugu veya oluşturulan xml dosyasının bu activity'ye eklenmesini saglar,ve her bir Activity sinifının en az bir xml dosyası olması gerekir.


  • activity_main.xml


Bu activity_main.xml dosyamızın Graphical Layout kısmıdır.Buradan Uygulamamızın Arayüzünü surukle-bırak yoluyla oluştura biliriz,activity_main.xml'e tıkladıgımızda bu arayuzun arka plan kodlarını gorebiliriz.


Kod gorunumu bu şekildedir.

Buradan arayuzumuzun bileşenlerinin ozelliklerini deyişe,ve arayuzumuze yeni bileşenler ekleye biliriz.


  • AndroidManifest.xml


AndroidManifest.xml dosyası uygulamamızın tüm kurallarının bulundugu dosyadır,uygulamamız çalıştırılmadan once,uygulamammızın  butun Activityleri bu dosyada  tanımlanmalıdırlar,
Bir Android uygulamasının bileşenlerinin bir kısmından bahsetdik,diger kısımlarındanda ilerde uygulamalar gelişdirirken bahsedeceğim.
Şimdi gelelim uygulamamızın çalıştırılmasına.
Uygulamamızın kodlarının derlenmesi işini Android SDK Tools görur,çalıştırmak içinse ya gerçek bir Android işletim sistemli makineye(örn:Android işletim sistemli bir telefon),yada kendimizin oluşturacagı Sanal Makine'ye  ihtiyacımmız vardır.

  • Sanal Android Makinesi nasıl oluşturulur?
Bunu yapmak için Android Virtual Device Manager'i kullanıyoruz.




Android Virtual Device Manager'i açdıktan sonra New diyoruz ve makinemizi oluşturuyoruz.
Oluşturdugumuz bu sanal makinelerin çalışması uzun surdugunden,alçak ozellikli makine oluşturmanız tavsiyedir.Sanal Makineyide oluşturdukdan sonra artık uygulamamızı çalıştıra biliriz,bunun için Run dememiz yeterli.Umarım  bu yazım herkese yardımcı olur,İy Çalışmalar.