Showing posts with label butterknife. Show all posts
Showing posts with label butterknife. Show all posts

Sunday, September 17, 2017

Zelezny plugin for Butterknife

Sebelumnya blog tentang butterknife sudah ditulis disini.
Zelezny adalah plugin Android studio yang cukup membantu untuk menggunakan butterknife secara otomatis tanpa harus mengetik lagi. Instalasinya mudah, buka preferences pada Android Studio, lalu pilih plugin 


Selanjutnya pilih browse repositories lalu cari Zelezny pada search box, kemudian install


Penggunaan zelezny dapat dilakukan pada Activity maupun Fragment. Cara penggunaannya: pada setiap class Activity maupun Fragment, klik kanan pada code layout contoh activity_main
Pilih Generate, kemudian pilih Generate butterknife injections
Selanjutnya kita langsung bisa memilih komponen pada xml layout yang mempunyai id untuk di-inject dengan butterknife. Misalnya pada contoh xml layout terdapat TextView dengan id "textViewTest" dan Button dengan id "buttonTest". Kita bisa memilih element sebagai references  atau inject sebagai method onClick atau keduanya.

Code hasilnya otomatis akan ditambahkan kedalam class yang memuat layout

PS: sebelum menggunakan zelezny, jangan lupa untuk menambahkan Butterknife pada build.gradle.

Tuesday, March 15, 2016

Konfigurasi Proguard untuk ButterKnife dan Otto

Apa itu ButterKnife??
Jika anda belum tahu apa itu ButterKnife, anda bisa membaca di sini , demikian juga dengan Otto , anda juga bisa membacanya di sini. Tulisan saya ini bermula ketika saya ingin meng-generate signed APK dimana aplikasi saya menggunakan ke dua library tersebut. Ketika saya saya mencoba untuk mem-build, saya mendapatkan warning sebagai berikut (klik pada gambar untuk memperbesar) :

dari baris pertama kita bisa melihat bahwa reference class annotation tidak ditemukan. Hal ini dikarenakan annotated methods dihapus oleh proguard. Untuk menghilangkan warning ini , anda bisa menambahkan beberapa konfigurasi pada proguard.
Berikut contoh konfigurasi yang bisa anda pasang pada proguard:
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keep class **$$ViewInjector { *; }

-keepclasseswithmembernames class * {
    @butterknife.* ;
}

-keepclasseswithmembernames class * {
    @butterknife.* ;
}
-keepattributes *Annotation*
-keepclassmembers class ** {
    @com.squareup.otto.Subscribe public *;
    @com.squareup.otto.Produce public *;
}


Demikian tips dari saya , semoga bermanfaat :D

Tuesday, December 15, 2015

Android ButterKnife

Apa yang kalian rasakan jika melakukan development android ? interface untuk onclick/ontouch listener dan inflation view (findviewbyId) di mana - mana. Jika kalian merasa capek melakukan pengerjaan berulang - ulang untuk melakukan hal tersebut. Maka solusinya adalah menggunakan ButterKnife. ButterKnife akan meng-inject kode pada saat compile time dengan cara memberikan anotasi pada variabel/method.

Tambahkan dependency
MAVEN:
<dependency>
  <groupId>com.jakewharton</groupId>
  <artifactId>butterknife</artifactId>
  <version>7.0.1</version>
</dependency>
GRADLE:
compile 'com.jakewharton:butterknife:7.0.1'

Conventional:
Button button = (Button)findViewById(R.id.button);
TextView textView = (TextView)findViewById(R.id.textView);
RadioButton radioButton  = (RadioButton)findViewById(R.id.radioButton);
CheckBox checkBox= (CheckBox)findViewById(R.id.checkbox);
EditText editText = (EditText)findViewById(R.id.editText);

Butterknife Android:
@Bind(R.id.button)
Button button;
@Bind(R.id.textView)
TextView textView;
@Bind(R.id.radioButton)
RadioButton radioButton;
@Bind(R.id.checkBox)
CheckBox checkBox;
@Bind(R.id.editText)
EditText editText;
// Register pada onCreateView pada activity. Contoh:
Butterknife.bind(this);

Hasillnya lebih singkat dan terstruktur. Berikut pada onClickListener:

Conventional:
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
//do something
             } });

Butterknife Android:
@OnClick(R.id.sign_in_button)
public void attemptLogin() {
         // do something       
}

Selain itu juga bisa digunakan untuk melakukan bind resources seperti dibawah:
class ExampleActivity extends Activity {
@BindString(R.string.title) String title; @BindDrawable(R.drawable.graphic) Drawable graphic; @BindColor(R.color.red) int red; // int or ColorStateList field @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field   // ...
}

Kesimpulannya ButterKnife membuat code jadi lebih terstruktur dan clean. Dan banyak top aplikasi android yang menggunakan library ini. Dan beri kredit untuk Jakewarthon sang initiate project ini!.

Sumber:
http://jakewharton.github.io/butterknife/
http://www.thekeyconsultant.com/2013/09/5-reasons-you-should-use-butterknife.html