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
    • 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
    • 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 - Makale - Pratik - Android Programlama Ders 15: Çalışan Uygulama Ekranında View-nesnelerinin Oluşumu

Android Programlama Ders 15: Çalışan Uygulama Ekranında View-nesnelerinin Oluşumu

19 Temmuz 2013 - 18:30
- Mobil, Pratik

Android Programlama Ders 15’te uygulama çalıştığı zaman ekrana bileşenleri eklemeyi öğreneceğiz…

Geçen dersteki uygulamada bileşenleri Activity.onCreate metodunda oluşturuyorduk. Bu derste ise çalışan uygulamada bileşenleri oluşturmayı öğreneceğiz. Örnek olarak butonları kullanacağız. Butonların metnini ve ekrandaki pozisyonunu değiştireceğiz. Ardından oluşturacağımız nesneyi silmek için ekranına silme butonu ekleyeceğiz.

Projeyi oluşturalım:

Project name: P0015_DynamicLayout2
Build Target: Android 4.2
Application name: DynamicLayout2
Package name: tr.androidApp.dynamicLayout2
Create Activity: MainActivity

Ekranı oluşturalım. Main.xml açıyoruz ve aşağıdaki kodu yazıyoruz.

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”>
<RadioGroup
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:orientation=”horizontal”
android:id=”@+id/rgGravity”>
<RadioButton
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:checked=”true”
android:text=”Left”
android:id=”@+id/rbLeft”>
</RadioButton>
<RadioButton
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:text=”Center”
android:id=”@+id/rbCenter”>
</RadioButton>
<RadioButton
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:text=”Right”
android:id=”@+id/rbRight”>
</RadioButton>
</RadioGroup>
<LinearLayout
android:id=”@+id/linearLayout1″
android:layout_width=”match_parent”
android:orientation=”horizontal”
android:layout_height=”wrap_content”>
<EditText
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:layout_weight=”1″
android:id=”@+id/etName”
android:fadeScrollbars=”true”>
</EditText>
<Button
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Create”
android:id=”@+id/btnCreate”>
</Button>
<Button
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Clear”
android:id=”@+id/btnClear”>
</Button>
</LinearLayout>
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:id=”@+id/llMain”
android:orientation=”vertical”>
</LinearLayout>
</LinearLayout>

 

Ekranı ayrıntılı bir şekilde inceleyelim.

rgGravity –  RadioGroup üç tane RadioButton (rbLeft, rbCenter, rbRight) içeriyor. Bu bileşenleri nesnenin pozisyonunu belirlemek için kullanacağız.

etName –  bileşeni nesnenin metnini belirleyecek.

btnCreate –  butonu nesnenin oluşması için kullanılacak.

btnClear –  butonu oluşturduğumuz nesneleri silme imkanı sunacak.

llMain – dikey LinearLayout’da bileşenlerin oluşturduğu yerdir.

dynamic_layout2

Ekranı hazırladıktan sonra bileşenleri aktif hale getirelim. Bunu yapmak için MainActivity.java dosyasında aşağıda yazdığım kodu yazacaksınız. İlk başta tüm bileşenleri buluyoruz, sonra butonlar için işleticiyi oluşturuyoruz. İşleticinin fonksiyonu Activity (Yani implements OnClickListener eklememiz gerekecektir) gerçekleştirecek. Ve son kod satırlarda içerisi boş  olan onClick işleticisini oluşturuyoruz.

public class MainActivity extends Activity implements OnClickListener{

LinearLayout llMain;
RadioGroup rgGravity;
EditText etName;
Button btnCreate;
Button btnClear;

int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;

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

llMain = (LinearLayout) findViewById(R.id.llMain);
rgGravity = (RadioGroup) findViewById(R.id.rgGravity);
etName = (EditText) findViewById(R.id.etName);

btnCreate = (Button) findViewById(R.id.btnCreate);
btnCreate.setOnClickListener(this);

btnClear = (Button) findViewById(R.id.btnClear);
btnClear.setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
}

Yukarıdaki koda dikkat ettiyseniz wrapContent değişkeni oluşturdum. Değişkenin amacı LinearLayout.LayoutParams.WRAP_CONTENT’ın değerini saklamak.

Şimdi butonu oluşturalım ve onClick metodu aktif haline getirelim.

@Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnCreate:
      // LayoutParams’in olusturulmasi
      LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
          wrapContent, wrapContent);
      // btnGravity Gravity.LEFT’nin degerini sakliyor
      int btnGravity = Gravity.LEFT;
      // hangi RadioButton secildigini belirliyor 
      switch (rgGravity.getCheckedRadioButtonId()) {
      case R.id.rbLeft:
        btnGravity = Gravity.LEFT;
        break;
      case R.id.rbCenter:
        btnGravity = Gravity.CENTER_HORIZONTAL;
        break;
      case R.id.rbRight:
        btnGravity = Gravity.RIGHT;
        break;
      }
           lParams.gravity = btnGravity;

      // Button’u olusturuyoruz, metnini giriyoruz ve LinearLayout’a                ekliyoruz
      Button btnNew = new Button(this);
      btnNew.setText(etName.getText().toString());
      llMain.addView(btnNew, lParams);

      break;
    }

 

Şimdi yazdığımız kodu detaylı bir şekilde inceleyelim. İlk başta btnCreate’e basıp basılmadığını kontrol ediyoruz. Sonra yüksekliğine ve genişliğine göre LayoutParams’ı oluşturuyoruz.

LEFT değeri kaydetmek için btnGravity değişkeni oluşturuyoruz. Şimdiki hangi RadioButton seçildiğini öğrenmek için getCheckedRadioButtonId metodunu kullanacağız. Bu metod RadioGroup için seçildiği RadioButton’un ID’ni geri gönderiyor. Fonksiyon bu ID’yi kontrol ediyor ve değeri btnGravity değişkenine kaydediyor. Gravity’nin değeri LayoutParams’a gönderiliyor.

Sonra butonu oluşturuyoruz ve etName değişkenden butonun metnini kaydediyoruz. Son aşamada oluşturduğumuz butonu (Button) LinearLayout’a ekliyoruz.

Projeyi kaydedelim ve uygulamayı çalıştıralım. Birkaç tane butonu oluşturalım.

dynamicLayout Butonlar

 

Butonlar yaptığımız seçeneklere göre ekranda pozisyon almalı.

Şimdi Clear butonunu etkileştirelim. Clear butonu oluşturduğumuz tüm nesneleri silecek. Bunu yapmak için onClick metodunu tamamlayalım. Switch fonksiyonuna (v.getId()) bir tane daha case (Durum)  ekleyelim:

    case R.id.btnClear:
      llMain.removeAllViews();
      Toast.makeText(this, "Silindi", Toast.LENGTH_SHORT).show();
      break;

 

removeAllViews metodu LinearLayout’tan tüm alt View-nesnelerini silecek. Toast metodu ekrana  başarılı işlem tamamlanmış mesajı gönderecek. Kaydedelim, çalıştıralım ve programı kontrol edelim. Birkaç tane buton ekleyelim, Clear butonuna basalım ve sonucu görelim.

dynamicLayout Silindi

 

Sonunda bir esnek uygulamayı yaratmış olduk.

Uygulamanın tam kodu:

public class MainActivity extends Activity implements OnClickListener {

  LinearLayout llMain;
  RadioGroup rgGravity;
  EditText etName;
  Button btnCreate;
  Button btnClear;

  int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;

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

    llMain = (LinearLayout) findViewById(R.id.llMain);
    rgGravity = (RadioGroup) findViewById(R.id.rgGravity);
    etName = (EditText) findViewById(R.id.etName);

    btnCreate = (Button) findViewById(R.id.btnCreate);
    btnCreate.setOnClickListener(this);

    btnClear = (Button) findViewById(R.id.btnClear);
    btnClear.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnCreate:
      // LayoutParams’in olusturmasi
      LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
          wrapContent, wrapContent);
      // btnGravity Gravity.LEFT’nin degeri sakliyor
           int btnGravity = Gravity.LEFT;
      // hangi RadioButton secildigini belirliyor
      // btnGravity’ye kaydediyoruz
      switch (rgGravity.getCheckedRadioButtonId()) {
      case R.id.rbLeft:
        btnGravity = Gravity.LEFT;
        break;
      case R.id.rbCenter:
        btnGravity = Gravity.CENTER_HORIZONTAL;
        break;
      case R.id.rbRight:
        btnGravity = Gravity.RIGHT;
        break;
      }
      //olustugu degeri LayoutParams’a kaydediyoruz
      lParams.gravity = btnGravity;

      // Button’u olusturuyoruz metnini giriyoruz ve LinearLayout’a ekliyoruz
      Button btnNew = new Button(this);
      btnNew.setText(etName.getText().toString());
      llMain.addView(btnNew, lParams);

      break;

    case R.id.btnClear:
      llMain.removeAllViews();
      Toast.makeText(this, "Silindi", Toast.LENGTH_SHORT).show();
      break;

    }
  }

}

 

Android Programlama derslerinde gelecek konumuzda ekranda var olan nesnelerin  layout-parametrelerini değiştiriyoruz.

Etiketler: AndroidAndroid programlamabtnClearbtnCreatebtnGravityetNameIlMainMainActivity.javanesneonClick metoduRadioButtonrGravityuygulama ekranıViewwrapContent
Paylaş6Paylaş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

  • Renault Kangoo 2024 alınır mı?
  • Turksat Kablonet binada fiber olup dairede olmamasına dair arıza kaydı nasıl işler?
  • Mercusys MW300RE menzil arttırıcı işe yaramıyor
  • HP Victus 16 R1057NT vs R1075NT
  • Razer Black Shark V2 Pro vs SteelSeries Arctis Nova Pro Wireless
  • 18.000TL full face kask önerisi
  • X7t vs R9t
  • Wi-Fi adaptör önerisi
  • TCL 55P755GTV TV alınır mı?
  • 15K bütçe tablet önerisi

Technopat Video

Şu an oynayan

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Akıllı Saat
Huawei Watch GT 6 Pro

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Akıllı Saat
Technopat ofisi Eylül ayında neler aldı? 

Technopat ofisi Eylül ayında neler aldı? 

Giyilebilir Teknoloji

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}
Onayı Yönet
En iyi deneyimleri sunmak için, cihaz bilgilerini saklamak ve/veya bunlara erişmek amacıyla çerezler gibi teknolojiler kullanıyoruz. Bu teknolojilere izin vermek, bu sitedeki tarama davranışı veya benzersiz kimlikler gibi verileri işlememize izin verecektir. Onay vermemek veya onayı geri çekmek, belirli özellikleri ve işlevleri olumsuz etkileyebilir.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, abone veya kullanıcı tarafından açıkça talep edilen belirli bir hizmetin kullanılmasını sağlamak veya bir elektronik iletişim ağı üzerinden bir iletişimin iletimini gerçekleştirmek amacıyla meşru bir amaç için kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından talep edilmeyen tercihlerin saklanmasının meşru amacı için gereklidir.
İstatistik
Sadece istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Sadece anonim istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Mahkeme celbi, İnternet Hizmet Sağlayıcınızın gönüllü uyumu veya üçüncü bir taraftan ek kayıtlar olmadan, yalnızca bu amaçla depolanan veya alınan bilgiler genellikle kimliğinizi belirlemek için kullanılamaz.
Pazarlama
Teknik depolama veya erişim, reklam göndermek için kullanıcı profilleri oluşturmak veya benzer pazarlama amaçları için kullanıcıyı bir web sitesinde veya birkaç web sitesinde izlemek için 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 görüntüle
{title} {title} {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

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