注解框架AndroidAnnotations

2015年8月26日 由 Creater 留言 »

之前也了解过注解框架及AndroidAnnotations框架,但是没有深入地学习,感觉这个框架确实好用,所以决定认真学习下,在接下来的项目中利用起来! AndroidAnnotations框架的最大优势在于可以用注解的方式大大减少开发的代码量,提高程序的运行效率。

在AndroidAnnotations中有很多针对各种控件,组件等使用的annotations,开发中常用的,可以快速上手的annotations有:
1,Enhanced componets(组件注解):
@EActivity:对Activity的注解操作,我们在写一个Activity时,只要在类名上写上@EActivity(R.layout.xx),就可以把对应的布局关联到此Activity,再也不用在Oncreate(Bundle savedInstanceState)来通过setContentView(R.layout.xx)来关联对应布局,方便吧!
@EService:对Service组件的注解。
@EProvider:对ContentProvider组件的注解。
@EReceiver:对Broadcastreceiver组件进行注解。
还有@EApplication,@EView等。

2,Injections(常用操作注解):
@ViewById:替代我们平时 代码 中的findViewsById();
@ViewsById:同上一样的,只不过可以同时对多个view进行findViewsById()操作。
@AfterViews:用于在我们@ViewById后进行设置数据等操作。
@Extra:用于在组件之间跳转时数据传递操作,我们通常是在Intent中putExtra(),然后再接收页面用getIntent().getString()来获取数据,有了@Extra后,我们就不用getIntent().getString()来取传递的数据了。

3,Event binding(事件绑定注解):
@Click:点击事件注解,替代我们平时的setOnclickListener()方法,只要在方法上加上@Click(R.id.btn),括号里指要进行点击事件的控件id,
@Touch:onTouch()事件注解
@ItemClick,@ItemLongClick,@ItemSelect:对我们学用的ListView,GridView等组件的item点击事件,item长按事件进行的注解 操作。
@TextChange,@AtferTextChange,@BeforTextChange:用与EditText等输入文字变化 监听的注解。
还有@FocusChange等。

4,Threading(线程处理注解)
@Background:后台处理操作
@UiThread:主线程操作等
5,Resource injection(资源文件注解):
@StringRes:对资源文件String.xml关联注解
@ColorrRes:对资源文件color.xml关联注解
还有@DimensionRes,@StringArrayRes等

6,还有其它很多类型的annotations,可以参考官网:https://github.com/excilys/androidannotations/wiki/AvailableAnnotations。
下面是使用注解编写代码的小例子,也是参考官网的:

@EActivity(R.layout.translate) // Sets content view to R.layout.translate
public class TranslateActivity extends Activity {

    @ViewById // Injects R.id.textInput
    EditText textInput;

    @ViewById(R.id.myTextView) // Injects R.id.myTextView
    TextView result;

    @AnimationRes // Injects android.R.anim.fade_in
    Animation fadeIn;

    @Click // When R.id.doTranslate button is clicked 
    void doTranslate() {
         translateInBackground(textInput.getText().toString());
    }

    @Background // Executed in a background thread
    void translateInBackground(String textToTranslate) {
         String translatedText = callGoogleTranslate(textToTranslate);
         showResult(translatedText);
    }

    @UiThread // Executed in the ui thread
    void showResult(String translatedText) {
         result.setText(translatedText);
         result.startAnimation(fadeIn);
    }

    // [...]
}

最后,简单记录下使用AndroidAnnotations的注意事项:
1,比如我们要项目中有个Activity是FristActivity,我们在注册到AndroidManifest.xml中对应的activity是在FristActivity_(在你写的Activity类名后加下划线),否则将报错,
2,我们在跳转页面时,我们写入Intent中跳转目标Acitivity类名也是要写末尾带下划线的对应Activity,
3,我们在使用@ViewById时,如果你在Activity中定义的组件名和xml中的id是一样的,则可以直接写@ViewById,而不用写@ViewById(R.id.xx),
4,一定要@AfterViews对应的方法中进行view的一些设置,不要在oncreate()中设置,因为oncreate()在执行时 view还没有注入,这时运行会报错。
5,推荐一篇注解使用介绍较全面(当然没官网全面啦)的文章:http://www.csdn123.com/html/topnews201408/29/729.htm。

广告位

发表评论

你必须 登陆 方可发表评论.