AndroidAnnotations
AndroidAnnotationsはAndroidの開発でよく記述するお決まりの処理を
アノテーションを利用することで自動的に生成してくれるライブラリ
アノテーション一覧
@EActivity, @EFragment
Activity(Fragment)につけると指定したレイアウトファイルを読み込んでくれる
またAndroidAnnotationsのアノテーションを利用するにはActivity, Fragmentにこのアノテーションをつける必要がある
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
}
@EBean
Activity, Fragment以外のクラスでAndroidAnnotationsのアノテーションを利用するときにつける
このアノテーションをつけたクラスは同じく@EBeanをつけることで取得できる
※ このアノテーションをつけたクラスは、引数なしまたはContextを受け取るだけのコンストラクタを1つしか定義できない
@EBean
public class MyClass {
}
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@EBean
MyClass myClass;
}
@ViewById
Viewの変数の宣言につけるとfindViewByIdを自動的に行ってくれる
下記の例では
button = findViewById(R.id.button)
を自動的に行ってくれる
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@ViewById(R.id.button)
Button button;
}
@Click, @LongClick
メソッドにつけると、指定したViewがクリックされたときのそのメソッドを呼ぶようになる
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@ViewById(R.id.button)
Button button;
@Click(R.id.button)
public void doProcessing(View view) {}
}
@AfterViews, @AfterInject
メソッドにつけるとレイアウトの読み込みやfindViewByIdなどが終わった後にそのメソッドが実行される
@EBeanをつけたクラスの場合は@AfterInjectを利用する
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@AfterViews
public void afterViews() {}
}
@Extra, @FragmentArg
プロパティ変数の宣言につけて、intentからデータを取得する
intent.putExtra("key1", "text1")
と設定した上で画面を遷移すると下記のようにしてデータを取得することができる
Fragmentの場合はsetArguments()で渡したデータが取得できる
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@Extra(value="key1")
String text1;
@Extra(value="key2")
String text2 = "default text"; // key2が見つからなければ"default text"が入る"
}
@SystemService
getSystemServiceで取得できる各種インスタンスを取得する
変数の型を見て自動的に取得するインスタンスを判別してくれるので特に引数の指定などはない
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@SystemService
LayoutInflater inflater;
}
@StringRes, @StringArrayRes
getString(R.string.text), getStringArray(R.array.texts)を自動でやってくれる。
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@StringRes(R.string.text)
String text;
@StringArrayRes(R.array.texts)
String[] texts;
}
@UiThread
このアノテーションをつけたメソッドはUIスレッド上で実行されるようになる
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@UiThread
public void uiThreadProcessing(){}
}
下記のようにHandlerを通じて実行されるようにコードが生成される
handler.post(new Runnable(){
@Override
public void run(){
uiThreadProcessing();
}
});
@Background
このアノテーションをつけたメソッドはバックグラウンドで実行されるようになる
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@Background
public void backgroundProcessing(){}
}