• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    3年前 (2015-08-26)  Android |   抢沙发  20 
    文章评分 0 次,平均分 0.0

    之前也了解过注解框架及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。

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/4258.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享