<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>android butterknife kullanımı arşivleri - Mehmet Kirazlı</title>
	<atom:link href="https://www.mehmetkirazli.com/tag/android-butterknife-kullanimi/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mehmetkirazli.com/tag/android-butterknife-kullanimi/</link>
	<description>Yazılımcı Notları</description>
	<lastBuildDate>Thu, 07 Feb 2019 10:11:05 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.10</generator>

<image>
	<url>https://www.mehmetkirazli.com/wp-content/uploads/2018/04/mehmetkirazlilogo.png</url>
	<title>android butterknife kullanımı arşivleri - Mehmet Kirazlı</title>
	<link>https://www.mehmetkirazli.com/tag/android-butterknife-kullanimi/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Android ButterKnife Kütüphanesi Kullanımı</title>
		<link>https://www.mehmetkirazli.com/android-butterknife-kutuphanesi-kullanimi/</link>
					<comments>https://www.mehmetkirazli.com/android-butterknife-kutuphanesi-kullanimi/#comments</comments>
		
		<dc:creator><![CDATA[Mehmet Kirazlı]]></dc:creator>
		<pubDate>Mon, 04 Feb 2019 10:42:03 +0000</pubDate>
				<category><![CDATA[Kütüphaneler]]></category>
		<category><![CDATA[android butterknife]]></category>
		<category><![CDATA[android butterknife kullanımı]]></category>
		<category><![CDATA[butterknife]]></category>
		<category><![CDATA[butterknife kütüphanesi nedir]]></category>
		<guid isPermaLink="false">https://www.mehmetkirazli.com/?p=3136</guid>

					<description><![CDATA[<p>Merhaba. Bu yazımda Android platformunda kullanıma sunulan, bazı kod bloklarını basitleştiren ve okunabilirliği arttıran ButterKnife kütüphanesinden bahsedeceğim. ButterKnife, Square firmasında Jake Wharton tarafından geliştirilmiş kullanışlı bir kütüphanedir. ButterKnife ile Xml yani tasarım tarafında oluşturduğumuz bazı elemanları, Java tarafına geçirmemizi ve kullanabilmemizi sağlar. Xml tarafından kastım Button, TextView, ListView, Drawable, Color, Strings vs. ButterKnife kütüphanesinin kullanımını &#8230;</p>
<p>The post <a rel="nofollow" href="https://www.mehmetkirazli.com/android-butterknife-kutuphanesi-kullanimi/">Android ButterKnife Kütüphanesi Kullanımı</a> appeared first on <a rel="nofollow" href="https://www.mehmetkirazli.com">Mehmet Kirazlı</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Merhaba. Bu yazımda Android platformunda kullanıma sunulan, bazı kod bloklarını basitleştiren ve okunabilirliği arttıran <strong>ButterKnife </strong>kütüphanesinden bahsedeceğim.</p>



<span id="more-3136"></span>



<p>ButterKnife, Square firmasında <a rel="noreferrer noopener" aria-label="Jake Wharton (yeni sekmede açılır)" href="https://github.com/JakeWharton" target="_blank">Jake Wharton</a> tarafından geliştirilmiş kullanışlı bir kütüphanedir. </p>



<p>ButterKnife ile <strong>Xml </strong>yani tasarım tarafında oluşturduğumuz bazı elemanları, Java tarafına geçirmemizi ve kullanabilmemizi sağlar. Xml tarafından kastım Button, TextView, ListView, Drawable, Color, Strings vs.</p>



<p>ButterKnife kütüphanesinin kullanımını basit bir örnek üzerinde gösterelim.</p>



<p>İlk olarak <strong>build.gradle</strong> dosyamızı hazırlayalım. <strong>ButterKnife </strong>kütüphanesini kullanabilmek için <strong>build.gradle</strong> dosyasında en tepeye aşağıdaki satır eklenir.</p>



<pre class="crayon-plain-tag">apply plugin: 'com.android.application'</pre>



<p>En altta <strong>dependencies</strong> kısmına ise şu 2 satır kod eklenmelidir. Son hali:</p>



<pre class="crayon-plain-tag">apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.mehmetkirazli.butterknife"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'

    // butterknife için bu satırlar eklenmelidir
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}</pre>



<p>Örnek olarak ekranımıza basit bir buton ekleyelim ve tıklama olayına 1-2 satırlık kod yazalım. </p>



<p><strong>Normalde </strong>klasik olarak butonun tıklama eventi için önce butonu <strong>findViewById </strong>ile bağlıyoruz ve bir <strong>Listener </strong>kullanarak işlemi yapıyoruz. </p>



<p>Şu anki yapıda, klasik olarak bildiğimiz kod şu şekildedir:</p>



<pre class="crayon-plain-tag">package com.mehmetkirazli.butterknife;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button btnTest;

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

        btnTest = findViewById(R.id.button);

        btnTest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Butona Basıldı", Toast.LENGTH_SHORT).show();

                // butonun metni ve arka planı değiştirildi
                btnTest.setText("Tıklandı");
                btnTest.setBackgroundColor(Color.RED);
            }
        });
    }
}</pre>



<p>Basit olarak bir adet butonumuz var ve tıklandığında mesaj verip, görselle ilgili değişiklikler yaptık.</p>



<p><strong>ButterKnife </strong>kullandığımızda ise biraz daha anlaşılabilir ve kısa bir kod yapısı karşımıza çıkıyor. <strong>findViewById </strong>yerine <strong>BindView </strong>annotationunu kullanıyoruz. Üzerinde işlem yaptığımız bileşen bir <strong>View </strong>bileşeni olduğu için <strong>BindView </strong>yazıyoruz. <strong>Drawable </strong>dosyası için olsaydı <strong>BindDrawable </strong>yazacaktık.</p>



<p>Aynı kodu <strong>ButterKnife </strong>ile yazarsak:</p>



<pre class="crayon-plain-tag">package com.mehmetkirazli.butterknife;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

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

        // bind işlemi yapıldı
        ButterKnife.bind(this);
    }

    // buton tanımlandı
    @BindView(R.id.button) Button btnTest;

    // click eventi yazıldı
    @OnClick(R.id.button) void tikla() {
        Toast.makeText(this, "Butona Basıldı", Toast.LENGTH_SHORT).show();

        // butonun metni ve arka planı değiştirildi
        btnTest.setText("Tıklandı");
        btnTest.setBackgroundColor(Color.RED);
    }
}</pre>



<p>2 YÖNTEMDE DE ORTAK OLAN ÇIKTIMIZ:</p>



<p>Butona tıklamadan önce:</p>



<figure class="wp-block-image is-resized"><a href="https://www.mehmetkirazli.com/wp-content/uploads/2019/02/butterknife-1.png"><img decoding="async" loading="lazy" src="https://www.mehmetkirazli.com/wp-content/uploads/2019/02/butterknife-1.png" alt="" class="wp-image-3137" width="99" height="55"/></a></figure>



<p>Butona tıklandıktan sonra:</p>



<figure class="wp-block-image"><a href="https://www.mehmetkirazli.com/wp-content/uploads/2019/02/butterknife-2.png"><img decoding="async" loading="lazy" width="204" height="274" src="https://www.mehmetkirazli.com/wp-content/uploads/2019/02/butterknife-2.png" alt="" class="wp-image-3138"/></a></figure>



<p>Burada dikkat ettiyseniz şu anki yapıda(<strong>findViewById</strong>), butonu oluşturma ve tıklama kodlarımızı <strong>onCreate()</strong> metodu içerisine yazıyoruz. <strong>ButterKnife </strong>kullandığımızda ise bu kodları <strong>onCreate()</strong> <strong>dışına </strong>yazıyoruz. </p>



<p>Aynı şekilde sadece görsel bileşenleri değil de <strong>strings.xml</strong>, <strong>colors.xml</strong> gibi dosyalar için tanımlama yaparsak :</p>



<pre class="crayon-plain-tag">@BindDrawable(R.drawable.icon) Drawable icon; // drawable 
@BindString(R.string.age) String yas; // string 
@BindColor(R.color.yellow) int renk; // color</pre>



<p>Şeklinde kullanmamız gerekir. Oluşturduğunuz değişken adını da istediğiniz yerde kullanabilirsiniz. Örnek kullanım:</p>



<pre class="crayon-plain-tag">tvBaslik.setTextColor(renk);
imvProfil.setImageDrawable(icon);</pre>



<p>Örnekte sadece buton üzerinden gösterdik fakat TextView, EditText gibi bileşenler de tamamen aynı şekilde kullanılır. Bununla ilgili de basit bir örnek verelim.</p>



<pre class="crayon-plain-tag">public class MainActivity extends AppCompatActivity {

    // bileşenler tanımlandı
    @BindView(R.id.btnArttir) Button btnSayiArttir;
    @BindView(R.id.btnAzalt) Button btnSayiAzalt;
    @BindView(R.id.edtSayi) EditText edtSayi;

    @OnClick(R.id.btnArttir)
    void arttir() {
        edtSayi.setText(String.valueOf(Integer.valueOf(edtSayi.getText().toString()) + 1));
    }

    @OnClick(R.id.btnAzalt)
    void azalt() {
        edtSayi.setText(String.valueOf(Integer.valueOf(edtSayi.getText().toString()) - 1));
    }

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

        ButterKnife.bind(this);
    }
}</pre>



<figure class="wp-block-image"><a href="https://www.mehmetkirazli.com/wp-content/uploads/2019/02/butterknife-3.png"><img decoding="async" loading="lazy" width="204" height="180" src="https://www.mehmetkirazli.com/wp-content/uploads/2019/02/butterknife-3.png" alt="" class="wp-image-3147"/></a></figure>



<p>Örneğimizde 2 adet buton kullanarak, <strong>EditText </strong>içerisine girilen sayıyı arttırıp azaltma işlemi yaptık. İki butonun da tanımlamalarını ve click eventini ayrı ayrı yaptık. </p>



<p class="has-medium-font-size"><strong><a href="http://www.mehmetkirazli.com/KaynakKodlar/ButterKnifeKullanimi.rar">KAYNAK KOD İNDİR</a></strong></p>



<h2>Nasıl Çalışır ?</h2>



<p>ButterKnife, <strong>Annotation tabanlıdır</strong> ve Annotation&#8217;lar da <strong>CompileTime</strong> (derleme zamanında) dikkate alınıp çalıştırılır. Bunu sağlayan yapı <strong>Annotation Processor</strong>&#8216;dur. Siz de <strong>AbstractProcessor </strong>sınıfından türetilen(<strong>extends</strong>) bir <strong>Processor </strong>ve bunun Binding&#8217;lerini yazarsanız, siz de kendinize özel bir <strong>ButterKnife </strong>benzeri bir kütüphane oluşturabilirsiniz ve açık kaynak olarak kullanıma sunabilirsiniz <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hazırlanan bu tarz kütüphanelere <strong>ViewInjector </strong>kütüphanesi denir.</p>



<p>Projeyi derlediğinizde (henüz çalıştırmadan), Annotation&#8217;un bulunduğu satırlar, şuan bildiğimiz ve uyguladığımız Java kodlarına(<strong>findViewById</strong>) dönüştürülür. Bunu sağlayan yapı, kütüphane içindeki <strong>Annotation Prosessor</strong>&#8216;dür. Hangi bileşenin hangi koda dönüştürüleceği ise bu kütüphanede tanımlanmıştır.</p>
<p>The post <a rel="nofollow" href="https://www.mehmetkirazli.com/android-butterknife-kutuphanesi-kullanimi/">Android ButterKnife Kütüphanesi Kullanımı</a> appeared first on <a rel="nofollow" href="https://www.mehmetkirazli.com">Mehmet Kirazlı</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mehmetkirazli.com/android-butterknife-kutuphanesi-kullanimi/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
