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 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

  • Acer Nitro 16 AN16-42 sıcaklıkları normal mi?
  • PS4'e kol bağlanmıyor
  • RX 570 sistem son zamanlarda çok mavi ekran veriyor
  • Türk Telekom genel arızayı 3 aydır çözmüyor
  • Intel Arc B580 mi RTX 4060 mı?
  • Samsung ve OpenAI güçlerini birleştirdi!
  • FACEIT TSL'de sadece Türk serverleri mi var?
  • R5 7600 işlemciye ekran kartı önerisi
  • M.2 SSD alırken nelere dikkat etmek gerekiyor?
  • Monitörün dahili hoparlörü gözükmüyor

Technopat Video

Şu an oynayan

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

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
Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

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}
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