Today i'm gonna show how to write less code but simultaneously improve maintainability and readability of your android code. I was so impressed that I wanted to try myself, how good and how easy it really is. In this tuturial i will only show the benefits of AndroidAnnotations and not how to install it. But don't worry. If you decide to use it (and i'm sure you'll will :) there is no magic on how to install it. In this site you'll get all the information you need: AndroidAnnotations
The sample project
We will endup with something like this bellow to show to you the power and simplicity of AndroidAnnotatios.MainActivity
Create a simple project and dont change the default names while creating the project. In the folder res>layout>activity_main.xml copy/paste the following code snippet inside of it.
Initializing the components
If you initialize the components in the tradional android way, you would end up with a class like this:package com.treslines.androidannotations; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private TextView title; private Button button1; private Button button2; private Button button3; private Button button4; private Button button5; private Button button6; private Button button7; private Button button8; private Button button9; private Button button10; private Button button11; private Button button12; private Button button13; private Button button14; private Button button15; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); title = (TextView) findViewById(R.id.textView1); button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); button4 = (Button) findViewById(R.id.button4); button5 = (Button) findViewById(R.id.button5); button6 = (Button) findViewById(R.id.button6); button7 = (Button) findViewById(R.id.button7); button8 = (Button) findViewById(R.id.button8); button9 = (Button) findViewById(R.id.button9); button10 = (Button) findViewById(R.id.button10); button11 = (Button) findViewById(R.id.button11); button12 = (Button) findViewById(R.id.button12); button13 = (Button) findViewById(R.id.button13); button14 = (Button) findViewById(R.id.button14); button15 = (Button) findViewById(R.id.button15); button1.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); button4.setOnClickListener(this); button5.setOnClickListener(this); button6.setOnClickListener(this); button7.setOnClickListener(this); button8.setOnClickListener(this); button9.setOnClickListener(this); button10.setOnClickListener(this); button11.setOnClickListener(this); button12.setOnClickListener(this); button13.setOnClickListener(this); button14.setOnClickListener(this); button15.setOnClickListener(this); } @Override public void onClick(View view) { final int id = view.getId(); switch (id) { case R.id.button1: handleClick(); break; case R.id.button2: handleClick(); break; case R.id.button3: handleClick(); break; case R.id.button4: handleClick(); break; case R.id.button5: handleClick(); break; case R.id.button6: handleClick(); break; case R.id.button7: handleClick(); break; case R.id.button8: handleClick(); break; case R.id.button9: handleClick(); break; case R.id.button10: handleClick(); break; case R.id.button11: handleClick(); break; case R.id.button12: handleClick(); break; case R.id.button13: handleClick(); break; case R.id.button14: handleClick(); break; case R.id.button15: handleClick(); break; default: break; } } private void handleClick(){ Toast.makeText(this, "AndroidAnnotations are cool!", Toast.LENGTH_SHORT).show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
The benefits of AndroidAnnotations
If you do the same thing with AndroidAnnotations we endup with something soooooo coooool like this ;)package com.treslines.withandroidannotations;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.googlecode.androidannotations.annotations.Click;
import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.ViewById;
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@ViewById(R.id.textView1) protected TextView title;
@ViewById(R.id.button1) protected Button button1;
@ViewById(R.id.button2) protected Button button2;
@ViewById(R.id.button3) protected Button button3;
@ViewById(R.id.button4) protected Button button4;
@ViewById(R.id.button5) protected Button button5;
@ViewById(R.id.button6) protected Button button6;
@ViewById(R.id.button7) protected Button button7;
@ViewById(R.id.button8) protected Button button8;
@ViewById(R.id.button9) protected Button button9;
@ViewById(R.id.button10) protected Button button10;
@ViewById(R.id.button11) protected Button button11;
@ViewById(R.id.button12) protected Button button12;
@ViewById(R.id.button13) protected Button button13;
@ViewById(R.id.button14) protected Button button14;
@ViewById(R.id.button15) protected Button button15;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// NO NEED TO INITIALIZE COMPONENTS ANYMORE
// ONLY 62 LINES AGAINST 139 LINES (2 TIMES LESS CODE)
// LESS COPY/PASTE ERROR
}
// No switch-cases anymore...
// Handle clicks together or independently ...
// No need to implement onClickListener anymore...
@Click({R.id.button1,R.id.button2,R.id.button3}) void onButton1Clicked() {handleClick();};
@Click({R.id.button4,R.id.button5,R.id.button6}) void onButton4Clicked() {handleClick();};
@Click({R.id.button7,R.id.button8,R.id.button9}) void onButton7Clicked() {handleClick();};
@Click({R.id.button10,R.id.button11,R.id.button12}) void onButton10Clicked() {handleClick();};
@Click(R.id.button13) void onButton13Clicked() {handleClick();};
@Click(R.id.button14) void onButton14Clicked() {handleClick();};
@Click(R.id.button15) void onButton15Clicked() {handleClick();};
private void handleClick(){
Toast.makeText(this, "AndroidAnnotations are cool!", Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
That's all. Hope you like it.
😱👇 PROMOTIONAL DISCOUNT: BOOKS AND IPODS PRO 😱👇
Be sure to read, it will change your life!
Show your work by Austin Kleon: https://amzn.to/34NVmwx
This book is a must read - it will put you in another level! (Expert)
Agile Software Development, Principles, Patterns, and Practices: https://amzn.to/30WQSm2
Write cleaner code and stand out!
Clean Code - A Handbook of Agile Software Craftsmanship: https://amzn.to/33RvaSv
This book is very practical, straightforward and to the point! Worth every penny!
Kotlin for Android App Development (Developer's Library): https://amzn.to/33VZ6gp
Needless to say, these are top right?
Apple AirPods Pro: https://amzn.to/2GOICxy
😱👆 PROMOTIONAL DISCOUNT: BOOKS AND IPODS PRO 😱👆