Android Programlama Ders 8: Olayların İşletmesinde Optimizasyon - Technopat
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Nasıl Yapılır
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Nasıl Yapılır
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Mobil - Android Programlama Ders 8: Olayların İşletmesinde Optimizasyon

Android Programlama Ders 8: Olayların İşletmesinde Optimizasyon

15 Nisan 2013 - 19:30
- Mobil, Teknoloji
Bu yeşil ufaklık Bugdroid kod adıyla da biliniyor.

Bu yeşil ufaklık Bugdroid kod adıyla da biliniyor.

Optimizasyon ile Android belleğini daha az kullanmanın yolları: Bu derste bir işleticiye birden fazla View nesnesini işletmeyi öğreneceğiz. Sonra etkileşimi bir işletici olarak kullanmayı öğreneceğiz…

Android uygulamalarında optimizasyonu öğrenmeye başlamak için yeni bir proje açalım:

  • Project name: P008-Listener
  • Build Target:Android 4.2
  • Application name: Listener
  • Package name: tr.androidApp.Listener
  • Create Activity: MainActivity

Geçen derste kullandığımız View nesneleri kullanacağız. main.xml kodu:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_height=”match_parent”
android:layout_width=”match_parent”
android:orientation=”horizontal”>
<LinearLayout
android:id=”@+id/linearLayout1″
android:layout_height=”match_parent”
android:orientation=”vertical”
android:layout_width=”match_parent”
android:layout_margin=”30dp”>
<TextView
android:layout_width=”wrap_content”
android:text=”TextView”
android:layout_height=”wrap_content”
android:id=”@+id/tvOut”
android:layout_gravity=”center_horizontal”
android:layout_marginBottom=”50dp”>
</TextView>
<Button
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:id=”@+id/btnOk”
android:text=”OK”
android:layout_width=”100dp”>
</Button>
<Button
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:id=”@+id/btnCancel”
android:text=”Cancel”
android:layout_width=”100dp”>
</Button>
</LinearLayout>
</LinearLayout>

1 – Bir işleticinin iki butonunun çalıştırması

Şu anda iki tane  buton ve bir tane TextView’ımız mevcut. Geçen dersteki gibi uygulama butonlara basıldığı zaman TextView mesajı verecektir. Ama şimdi bunu bir işletici vasıtasıyla gerçekleştireceğiz.

Hatırlatayım, bir buton kendi kendine bir şey yapamaz. Butonu etkinleştirmek için bir dinleyici (listener) gerekir. Bunu setOnClickListener metoduyla yapıyoruz.  Dinleyicinin fonksiyonu, butona basılıp basılmadığını kontrol etmektir. Basıldığı zaman dinleyici onClick metodunun içinde olan kodları çalıştırır.

Aşağıdaki algoritmayı yapıyoruz:

Dinleyici yaratıyoruz

onClick metodu dolduruyoruz

Dinleyici butona bağlıyoruz

Bizim örneğimizde  tek dinleyici iki butonu birden çalıştıracak. Dinleyicinin içinde hangi butona basıldığını belirleriz.

Nesneleri hazırlayalım ve işleticisi yaratalım:

public class MainActivity extends Activity {

TextView tvOut;
Button btnOk;
Button btnCancel;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// View-nesnelerini buluyoruz
tvOut = (TextView) findViewById(R.id.tvOut);
btnOk = (Button) findViewById(R.id.btnOk);
btnCancel = (Button) findViewById(R.id.btnCancel);

// isleticiyi yaratiyoruz
OnClickListener oclBtn = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
};

}
}

 

Şimdi onClick metodunu dolduralım. Aşağıda göreceğiniz üzere kodun girişinde View’ı bir nesne olarak kullanacağız, View değişkenine göre program gelişecek. Örneklerimizde bu View Ok veya Cancel butonu olacaktır. Bu View nesnenin ID öğrendikten sonra R.id.btnOk ve R.id.btnCancel karşılaşacağız. Sonuca göre hangi butona basıldığı belli oluyor. ID öğrenmek için getID metodu kullanılıyor. Sonuçları taramak için java-operatörü (switch) kullanacağız.

onClick metodu belirlenmesi:

 
 public void onClick(View v) {
         // id gore hangi buton basilmis ogrenecegiz
         switch (v.getId()) {
         case R.id.btnOk:
           // ОК butonu
           tvOut.setText("ОК butona bastiniz");
           break;
         case R.id.btnCancel:
           // Cancel butonu
           tvOut.setText("Cancel butona basiniz");
           break;
         }
       }

Eğer uygulamayı şimdi çalıştırırsak bir şey olmayacaktır. Çünkü dinleyiciyi yarattık ama onu butonlara bağlanmadık. İki buton için aynı dinleyiciyi bağlayalım:

btnOk.setOnClickListener(oclBtn);
btnCancel.setOnClickListener(oclBtn);

Programı çalıştıralım, program şimdi düzgünce çalışmalı. Tabii ki işletici sadece iki tane buton değil, daha da fazla buton için de uygulanabilir. Sadece buton değil, başka View nesneler için de geçerlidir. İleride bu özellikleri daha çok kullanacağız. Geçen ders ile aradaki en önemli fark, aynı işlem yapmak için iki tane değil, bir tane işletici kullanmış olmamız. Bu bize bellekten tasarrufu sağlıyor ki bu da cep telefonu ve tabletler önemli bir şey. Ve ikinci avantaj programın kodları anlamak ve takip etmek için kolaylık sağlıyor. Şimdi işletici yaratmak için başka bir yönteme bakalım. Bu yöntemde etkileşimin yaratığı nesne kullanacağız.

2 – Etkileşim(Activity) işletici olarak kullanılması

setOnClickListener (View.OnClickListener l) metodu kullanarak buton işleticiyi kendine bağlıyor. Bunu yapmak için herhangi arayüzü View.OnClickListener özelliği taşıyan nesneyi kullanabiliriz. Etkileşim(Activity) da olabilir. Biz sadece etkileşiminin klas olduğunu belirleyiciyiz ve View.OnClickListener ara yüzü kullanıyor. Sonra onCreate metodu dolduracağız. Yeni bir proje açalım:

 

  • Project name: P00801-ActivityListener
  • Build Target:Android 4.2
  • Application name: ActivityListener
  • Package name: tr.androidApp.ActivityListener
  • Create Activity: MainActivity

Aynı kodları kullanacağız:

<?xml version=”1.0″ encoding=”utf-8″?> <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_height=”match_parent” android:layout_width=”match_parent” android:orientation=”horizontal”> <LinearLayout android:id=”@+id/linearLayout1″ android:layout_height=”match_parent” android:orientation=”vertical” android:layout_width=”match_parent” android:layout_margin=”30dp”> <TextView android:layout_width=”wrap_content” android:text=”TextView” android:layout_height=”wrap_content” android:id=”@+id/tvOut” android:layout_gravity=”center_horizontal” android:layout_marginBottom=”50dp”> </TextView> <Button android:layout_height=”wrap_content” android:layout_gravity=”center_horizontal” android:id=”@+id/btnOk” android:text=”OK” android:layout_width=”100dp”> </Button> <Button android:layout_height=”wrap_content” android:layout_gravity=”center_horizontal” android:id=”@+id/btnCancel” android:text=”Cancel” android:layout_width=”100dp”> </Button> </LinearLayout> </LinearLayout>

Nesneleri hazırlıyoruz ve arayüzü ekliyoruz (implements onClickListener)

public class MainActivity extends Activity implements OnClickListener {

   TextView tvOut;
   Button btnOk;
   Button btnCancel;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     // View-nesneleri buluyoruz
     tvOut = (TextView) findViewById(R.id.tvOut);
     btnOk = (Button) findViewById(R.id.btnOk);
     btnCancel = (Button) findViewById(R.id.btnCancel);
   }
 }

 

OnClickListener kırmızı çizgiyle işaretleniyor çünkü import bölümünde yoktur. İmport bölümüne eklemek için CTRL+SHIFT+O basıyoruz ve View.OnClickListener seçiyoruz.

Şimdi Eclipe MainActivity hatalı olduğunu ifade ediyor. Bunun sebebi etkileşim klası için bir arayüzü vardır ama arayüzü için metodlar eksiktir. Bunu çözmek için kursoru MainActivity yönlendirip Add unimplemented methods  seçiyoruz.

Eclipse onClick metodu ekleyecek. Ama bu sefer onClick metod etkileşim içinde olacaktır. Daha önce yaptığımız gibi metodu dolduralım.

public void onClick(View v) {
         // id gore hangi buton basilmis ogrenecegiz
         switch (v.getId()) {
         case R.id.btnOk:
           // ОК butonu
           tvOut.setText("ОК butona bastiniz");
           break;
         case R.id.btnCancel:
           // Cancel butonu
           tvOut.setText("Cancel butona bastiniz");
           break;
         }
       }

 

onCreate metodu butonlara bağlacağız. Bunu MainActivity’e ait this metodu gerçekleşecektir.

btnOk.setOnClickListener(this);
btnCancel.setOnClickListener(this);

 

Bu yöntemi kullandığı zaman biz gerekmeyen nesneleri yaratmadık. Belki bu yöntem size zor gelebilir. Bu durumda size en basit gelen yöntemi kullanabilirsiniz. Aşağıda size kodun tamamını veriyorum:

public class MainActivity extends Activity implements OnClickListener {

   TextView tvOut;
   Button btnOk;
   Button btnCancel;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     // View-nesneleri buluyoruz
     tvOut = (TextView) findViewById(R.id.tvOut);
     btnOk = (Button) findViewById(R.id.btnOk);
     btnCancel = (Button) findViewById(R.id.btnCancel);

     // işleticiyi butonlara bağlıyoruz
     btnOk.setOnClickListener(this);
     btnCancel.setOnClickListener(this);
   }

   @Override
   public void onClick(View v) {
     // id gore hangi buton basilmis ogrenecegiz
     switch (v.getId()) {
     case R.id.btnOk:
       // ОК buton
       tvOut.setText("Ok butona bastiniz ");
       break;
     case R.id.btnCancel:
       // Cancel buton
       tvOut.setText("Cancel butona bastiniz ");
       break;
     }
   }

 }

Ders Sonu Notları:

Bu derste bir işleticinin iki butonu nasıl yönetmesi gerektiğini öğrendik. Sonra etkileşim işletici olarak kullanması nasıl kullanabildiğini gördük.

Sonraki derste res/values klasörü inceleceğiz. Ve sonra uygulamanın kaynakları kullanma örneklere bakacağız.

Etiketler: algoritmaAndroidAndroid programlama dersleribellekbellek kullanımıgetIDimplementsJavalisteneroptimizasyonprogramlamaSwitchthisvalues
PaylaşPaylaşTweetYollaPaylaş
Victor Cuiumju

Victor Cuiumju

Yorum Yap Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

RSS Technopat Sosyal

  • Lenovo LOQ 15IAX9 modellerinde anakart yanma problemi var mı?
  • ARGB LED kumandamı algılamıyor
  • FIFA 18'de Türkçe dil seçeneği görünmüyor
  • Samsung Odyssey G65b monitörde ölü piksel oluştu
  • Kasım indirimleri gerçek mi?
  • 80 bin TL laptop tavsiyesi
  • Asya bölgesi 15 Pro'da Apple Intelligence gözükmüyor
  • Teknik direktör kariyer modu için en gerçekçi FIFA hangisidir?
  • Samsung G65B monitörde 2 tane ölü piksel çıktı
  • Pilotlukta iş bulmak kolay mı?

Technopat Video

Şu an oynayan

Razer Deathadder V4 Pro White Edition inceleme: En hızlı oyuncu faresi!

Razer Deathadder V4 Pro White Edition inceleme

Razer Deathadder V4 Pro White Edition inceleme: En hızlı oyuncu faresi!

Haber
Linux’un hikayesi: Yokluktan doğan açık kaynak devrimi

Linux’un hikayesi: Yokluktan doğan açık kaynak devrimi

Haber
vivo'nun en iddialı telefonu X300 Pro'ya ilk bakış!

vivo’nun en iddialı telefonu vivo X300 Pro’ya ilk bakış!

Akıllı Telefon

Teknoloji tutkunu Technopatların ortak adresi: Technopat.net!

Güncel teknoloji, internet, donanım, yazılım, oyun ve daha fazlası haber, makale ve videolar ile Technopat’ta sizlerle.


01010100 01100101 01100011 01101000 01101110 01101111 01110000 01100001 01110100

Kategoriler

  • Yapay Zeka
  • Ev Teknolojileri
  • Makale
  • Video

Sosyal Medya

Bağlantılar

  • Hakkında
  • Haber
  • Video
  • Sosyal
  • Çerez Politikası
© 2011-2025 Technopat. Tüm Hakları Saklıdır.
Netse
Çerez Onayı
Web sitemizi ziyaret ettiğinizde, kullanıcı deneyiminizi daha iyi hale getirmek, hizmetlerimizi size daha etkin bir şekilde sunabilmek için çerezler (cookies) ve benzeri araçlar kullanıyoruz. Çerezler, internet sitesinin düzgün çalışmasını sağlamak, içeriği kişiselleştirmek, sosyal medya özellikleri sağlamak ve trafik analizi yapmak için kullanılan küçük metin dosyalarıdır. Çerezleri nasıl kullandığımız ve kişisel verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi almak için çerez politikamızı ve kişisel veri politikamızı inceleyebilirsiniz.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, sadece kullanıcının açıkça talep ettiği belirli bir hizmetin kullanılmasını sağlama amacıyla veya iletişimin elektronik iletişim ağı üzerinden iletilmesinin tek amacıyla yasal olarak kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından istenmeyen tercihlerin depolanması yasal amacıyla gereklidir.
İstatistikler
Sadece istatistiksel amaçlarla kullanılan teknik depolama veya erişim. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Pazarlama
Teknik depolama veya erişim, reklam gönderimi için kullanıcı profilleri oluşturmak veya kullanıcıyı bir web sitesinde veya birden fazla web sitesinde benzer pazarlama amaçları için takip etmek amacıyla gereklidir.
  • Seçenekleri yönet
  • Hizmetleri yönetin
  • {vendor_count} satıcılarını yönetin
  • Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri yönet
  • {title}
  • {title}
  • {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Nasıl Yapılır
  • Yapay Zeka
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

© 2025 Technopat
Sorularınız için Technopat Sosyal