Genel

Android Kütüphaneleri 2 – ButterKnife

Gelelim yazı dizisinin 2. benimde en sevdiğim kütüphaneye 🙂 Şimdi butterKnife Android’in asi çocuğu Jake Wharton tarafından geliştirilmiştir. Onla ilgili bir yazıda yakın zamanda yazmak isterim..

Şimdi ilk olarak ButterKnife Kütüphanemiz bize ne avantaj sağlıyo, niye bu yazı dizisinde bu kütüphaneye yer ayırdım, nedir, nasıl kullanılır gibi sorulara cevap arayacağız ?

Öncelikle ButterKnife Kütüphane nedir ?

ButterKnife bir View Injector kütüphanesidir. Yani bizim uzun uzun tanımladığımız view bileşenler yerine annotation kullanarak bileşenleri projemize dahil etmemize yarayan kütüphane..Bu kütüphane ile sadece view’ler değil, aynı zamanda projemizde kullandığımız String, Drawable, Color ve Dimen gibi kaynakları da aynı yöntemle pratik bir şekilde projemize ekleyip bizi kod tekrarı yapmaktan kurtarıyor.

ButterKnife kütüphanesi nasıl eklenir ?

Build.gradle’de ki uygun yere ekleyip sync edersek bu iş tamamdır..

compile <span class="pl-s"><span class="pl-pds">'</span>com.jakewharton:butterknife:8.4.0<span class="pl-pds">'</span></span>

ButterKnife kullanmadan önce ve kullandıktan sonra farklar için :

Şimdi öncelikle ButterKnife varkenki halinden bahsedeceğim..

    @Bind(R.id.editText)
    EditText sayi1;
    @Bind(R.id.editText2)
    EditText sayi2;
    @Bind(R.id.sonuc)
    TextView sonuc;

    @OnClick(R.id.topla)
    void methodTopla() {
        sonuc.setText("");
        String a = sayi1.getText().toString();
        String b = sayi2.getText().toString();

        int topSayi1 = Integer.parseInt(a);
        int topSayi2 = Integer.parseInt(b);
        System.out.println("topSayi1" + topSayi1);
        sonuc.setText("Sonuc = " + (topSayi1 + topSayi2));
    }

    @OnClick(R.id.cikar)
    void methodCikar() {
        sonuc.setText("");
        String a = sayi1.getText().toString();
        String b = sayi2.getText().toString();
        int cikSayi1 = Integer.parseInt(a);
        int cikSayi2 = Integer.parseInt(b);

        sonuc.setText("Sonuc = " +(cikSayi1 - cikSayi2));
    }

    @OnClick(R.id.carp)
    void methodCarp() {
        sonuc.setText("");
        String a = sayi1.getText().toString();
        String b = sayi2.getText().toString();
        int carpSayi1 = Integer.parseInt(a);
        int carpSayi2 = Integer.parseInt(b);
        sonuc.setText("Sonuc = " + (carpSayi1 * carpSayi2));
    }

    @OnClick(R.id.bol)
    void methodBol() {
        sonuc.setText("");
        String a = sayi1.getText().toString();
        String b = sayi2.getText().toString();
        int bolSayi1 = Integer.parseInt(a);
        int bolSayi2 = Integer.parseInt(b);
        sonuc.setText("Sonuc = " + (bolSayi1 / bolSayi2));
    }

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

    }
}

70 satirlik bir işlem olan 2 editText’ten sayilari alıp onları toplayan çıkaran bölen çarpan bir uygulama..

İşte fark burada ortaya çıkıyor. Şimdi ise bunu normal bir buttonlar ile yaptığınızı düşünün. Direk uygulamanın sadece 1 kısmını yazacağım.

  Button b= (Button) findViewById(R.id.bol);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
            }
        });

İşte kısaca demek istediğime geçeyim.. EditText’tir, Button’dur vs bileşenlerimizi yukarda butterknife ile tek satırda yazdık. button’ların ne boğucu fazlalığını çektik ne de onlarla uğraştık. Tek satır ile @OnClick(R.id.button) void Topla() ile neredeyse 7 satırlık bir işi tek satıra indirmiş olduk. Bunun gibi kısıltlamalar için kullanmanız gereken kütüphane ButterKnife’dır..

 

 

Çalışma mantığını öğrenmek için : //gelecegiyazanlar.turkcell.com.tr/blog/butterknife-nasil-calisir

Kaynaklar :

//github.com/JakeWharton/butterknife

//www.journaldev.com/10439/android-butter-knife-example-tutorial

//craftedcourses.io/all-about-butter-knife-part-1/

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir