Android Programlama Ders 16: Çalışan Uygulamada layoutParams’ı Değiştirme - 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 - Makale - Pratik - Android Programlama Ders 16: Çalışan Uygulamada layoutParams’ı Değiştirme

Android Programlama Ders 16: Çalışan Uygulamada layoutParams’ı Değiştirme

23 Temmuz 2013 - 18:30
- Mobil, Pratik

Android Programlama Ders 16’da Ekranda var olan nesnelerin  layout-parametrelerini çalışan uygulamada değiştiriyoruz.

Daha önce LayoutParams’ı kullanarak ekranın bileşenlerini oluşturmayı ve onların pozisyonunu değiştirmeyi öğrendik. Bu derste nasıl var olan nesnelerin layout – parametreleri değiştirmesini öğreneceğiz.

Değiştireceğimiz parametreler: weight-ağırlık, SeekBar’ı (Volume) çizeceğiz ve iki tane butonu oluşturacağız. Butonların aldığı alanı ağırlık parametreyi kullanarak değiştireceğiz.

Projeyi oluşturalım:

Project name: P0016_DynamicLayout3
Build Target: Android 4.2
Application name: DynamicLayout3
Package name: tr.androidApp.dynamicLayout3
Create Activity: MainActivity

 

Main.xml açalım ve aşağıdaki yazdığımız gibi ekranı oluşturalım:

<?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”>
<SeekBar
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:max=”100″
android:progress=”50″
android:layout_marginTop=”20dp”
android:id=”@+id/sbWeight”>
</SeekBar>
<LinearLayout
android:id=”@+id/linearLayout1″
android:layout_width=”match_parent”
android:orientation=”horizontal”
android:layout_height=”wrap_content”
android:layout_marginTop=”30dp”>
<Button
android:layout_height=”wrap_content”
android:id=”@+id/btn1″
android:text=”Button1″
android:layout_weight=”1″
android:layout_width=”wrap_content”>
</Button>
<Button
android:layout_height=”wrap_content”
android:id=”@+id/btn2″
android:text=”Button2″
android:layout_weight=”1″
android:layout_width=”wrap_content”>
</Button>
</LinearLayout>
</LinearLayout>

SeekBar regülatörü kullanacağız. Bileşenin max ve progress diye iki parametresi vardır. Max parametresi SeekBar’ın en büyük değerini ayarlama imkanı sunuyor. Progress parametresi – regülatörün şimdiki pozisyonunu içeriyor. Max eşit 100 ve Progress eşit 50 (regülatörün yarısı) ayarlayalım.

Butonların genişliği değere göre ayarlıyoruz. Ağırlık iki buton için bire eşittir. LinearLayout’a ikisi de aynı alanı kaplıyorlar.

Uygulamayı çalıştırmak için kodu yazalım. MainActivity.java’yı açalım, bileşenleri belirleyelim, bulalım ve onlara ait LayoutParams’a giriş izini alalım.

public class MainActivity extends Activity {

  SeekBar sbWeight;
  Button btn1;
  Button btn2;

  LinearLayout.LayoutParams lParams1;
  LinearLayout.LayoutParams lParams2;

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    sbWeight = (SeekBar) findViewById(R.id.sbWeight);

    btn1 = (Button) findViewById(R.id.btn1);
    btn2 = (Button) findViewById(R.id.btn2);

    lParams1 = (LinearLayout.LayoutParams) btn1.getLayoutParams();
    lParams2 = (LinearLayout.LayoutParams) btn2.getLayoutParams();
  }
}

 

LayoutParams bileşeni kullanmak için getLayoutParams metodu kullanacağız. Metod çıkış olarak ViewGroup.LayoutParams’ı gönderiyor. Bize gerekli olan LinearLayout.LayoutParams ve ona ulaşmak için bazı değişiklikleri yapacağız. Sonuçta – lParams1 ve lParams2, btn1 ve btn2 için LayoutParams bileşeni oldular. Yani lParams1 ile çalıştığımız zaman btn1’i etkiliyoruz.

SeekBar’ın değişime tepki vermesi için bir işletici kullanması gerekecek. Bu görevi etkileşim (Activity) gerçekleştirecek. Bunu yapmak için klasa implements OnSeekBarChangeListener’i ekleceğiz:

public class MainActivity extends Activity implements OnSeekBarChangeListener {

İşleticinin metodlarını da eklememiz gerekiyor.

@Override
  public void onProgressChanged(SeekBar seekBar, int progress,
      boolean fromUser) {

  }

  @Override
  public void onStartTrackingTouch(SeekBar seekBar) {

  }

  @Override
  public void onStopTrackingTouch(SeekBar seekBar) {

  }

 

İşletici üç tane metod içeriyor:

– onStartTrackingTouch regülatörü değiştirmeye başladığı zaman çalışmaya başlıyor.
– onProgressChanged regülatörün çalıştığı zaman çalışıyor.
– onStopTrackingTouch regülatör serbest bırakıldığında çalışıyor.

onProgressChanged metodunu kullanacağız. Çünkü değişiklikleri ekranda görmek istiyoruz.

@Override
  public void onProgressChanged(SeekBar seekBar, int progress,
      boolean fromUser) {
    int leftValue = progress;
    int rightValue = seekBar.getMax() - progress;
    // agirliği belirliyoruz
    lParams1.weight = leftValue;
    lParams2.weight = rightValue;
    // butonlarin metninine degerleri yazdiracagiz
    btn1.setText(String.valueOf(leftValue));
    btn2.setText(String.valueOf(rightValue));
  }

leftValue değişkeni regülatörün sol tarafını temsil ediyor.

rightValue değişkeni regülatörün sağ tarafını temsil ediyor. rightValue değerini bulmak için maksimum değeri eksi, şimdiki değeri de kullanarak bulabilirsiniz.

Bu değerleri uygulamada ağırlık olarak kullanıyoruz. Regülatörün pozisyonu sol tarafa daha yakın olduğu zaman leftValue değeri daha küçüktür. Bu demek ki btn1’in genişliği btn2’nin genişliğine göre daha küçüktür.

layoutFile

Değerlerin değişimini daha iyi görmek için değerleri butonların metnine yazdıracağız.

Etkileşimi (Activity), View-nesneye bağlıyoruz.

    setContentView(R.layout.main);

    sbWeight = (SeekBar) findViewById(R.id.sbWeight);
    sbWeight.setOnSeekBarChangeListener(this);

    btn1 = (Button) findViewById(R.id.btn1);

İşaretlenmiş satırı var olan koda ekleyeceğiz.

Kaydedelim ve uygulamayı çalıştıralım. Regülatör değiştiği zaman butonların boyutu da değişmeli.

dynamicLayout 3

 

Bu dersten sonra bildiğimiz konular bize gerçek bir uygulama (hesap makinesi) yazmaya imkan verecektir.

Uygulamanın tam kodu:

public class MainActivity extends Activity implements OnSeekBarChangeListener {

  SeekBar sbWeight;
  Button btn1;
  Button btn2;

  LinearLayout.LayoutParams lParams1;
  LinearLayout.LayoutParams lParams2;

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

    sbWeight = (SeekBar) findViewById(R.id.sbWeight);
    sbWeight.setOnSeekBarChangeListener(this);

    btn1 = (Button) findViewById(R.id.btn1);
    btn2 = (Button) findViewById(R.id.btn2);

    lParams1 = (LinearLayout.LayoutParams) btn1.getLayoutParams();
    lParams2 = (LinearLayout.LayoutParams) btn2.getLayoutParams();
  }

  @Override
  public void onProgressChanged(SeekBar seekBar, int progress,
      boolean fromUser) {
    int leftValue = progress;
    int rightValue = seekBar.getMax() - progress;
    // agirliği ayarliyoruz
    lParams1.weight = leftValue;
    lParams2.weight = rightValue;
    // butonlarin metnine degerleri yazdiriyoruz
    btn1.setText(String.valueOf(leftValue));
    btn2.setText(String.valueOf(rightValue));
  }

  @Override
  public void onStartTrackingTouch(SeekBar seekBar) {
  }

  @Override
  public void onStopTrackingTouch(SeekBar seekBar) {
  }
}

 

Bu derste çalışan uygulamada layoutParams’ı değiştirmeye öğrendik. Sonraki derste yapacağımız uygulamada hesap makinesini  oluşturacağız.

Etiketler: activityAndroidAndroid programlamabluetooth entegrasyonu olanDensiondershesap makinesiLayoutParamslParams1menümetodonProgressChangedonStartTrackingTouchonStopTrackingTouch
Paylaş11Paylaş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

  • iPhone 14 Pro Max için Deji marka pil kalitesi nasıldır?
  • Superlight Pro mouse imleci kasarak hareket ediyor
  • ANC özelliği olan kulak içi kulaklık önerisi
  • PC kasasının ARGB'si nasıl aktif edilir?
  • 15.000 TL'ye kadar elektrikli scooter önerisi
  • 80 bin TL İtopya hazır sistem önerisi
  • 5-10 bin TL IEM kulaklık önerisi
  • Chainsaw Man: Reze Arc
  • 16.000 TL'ye TV önerisi
  • Valorant HVCI enabled hatası veriyor

Technopat Video

Şu an oynayan

iOS 26.1 hangi yenilikleri getirdi?

iOS 26.1 hangi yenilikleri getirdi?

iOS 26.1 hangi yenilikleri getirdi?

Haber
Kriz kapıda! RAM ve SSD fiyatlarına büyük zam

Kriz kapıda! RAM ve SSD fiyatlarına büyük zam

Haber
Türkiye’nin konuşulmayan gerçeği: Operatör kazığı mı yiyoruz?

Türkiye’nin konuşulmayan gerçeği: Operatör kazığı mı yiyoruz?

Haber

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