Java注解:

   注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

作用分类:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
Androidannotations框架特性
1、使用依赖注入(Dependency Injection)

2、简化的线程模型(Simplified  threading model)

3、事件绑定(Event binding)

4、REST Client

5、No Magic  [不知道为什么这样称呼,直译过来就是:无魔法,它的意思是:AndroidAnnotations在编译

的时候会产生一个子类(接下来你会明白),你查看这个子类,可以看到它是如何工作的]

AndroidAnnotations官网: http://androidannotations.org/

代码:

  1. @NoTitle //无标题
  2. @Fullscreen //全屏
  3. @EActivity(R.layout.activity_my)
  4. public class MyActivity extends ActionBarActivity {
  5. //==============================================基本的注解=================================================
  6. @ViewById
  7. Button button1;
  8.  
  9. @ViewById
  10. Button button2;
  11.  
  12. @ViewById(R.id.textview1) //指定id的注入
  13. TextView textView;
  14.  
  15. @ViewById
  16. ProgressBar progressBar;
  17.  
  18. @ViewById
  19. ImageView imageView;
  20.  
  21. //获取系统service的方法(取代原来的clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);)
  22. @SystemService
  23. ClipboardManager clipboardManager;
  24.  
  25. @Click({R.id.button1,R.id.button2,R.id.button3,R.id.button4})
  26. public void simpleButtonOnClicked(View view){
  27. switch (view.getId()){
  28. case R.id.button1:{
  29. textView.setText("Button1 is Clicked!");
  30. }
  31. break;
  32. case R.id.button2:{
  33. textView.setText("Button2 is Clicked!");
  34. }
  35. break;
  36. case R.id.button3:{
  37. String content = clipboardManager.getText().toString();
  38. Toast.makeText(getApplicationContext(),"剪贴板内容: " + content, Toast.LENGTH_SHORT).show();
  39. }
  40. break;
  41. case R.id.button4:{
  42. Toast.makeText(getApplicationContext(),"滚动条开始了!",Toast.LENGTH_SHORT).show();
  43. progressBarWorks();
  44. }
  45. break;
  46. }
  47. }
  48.  
  49. @LongClick({R.id.button2})
  50. public void buttonOnLongClicked(View view){
  51. switch (view.getId()){
  52. case R.id.button1:{
  53. textView.setText("Button1 is LongClicked!");//由于没注册,所以不可能被触发
  54. }
  55. break;
  56. case R.id.button2:{
  57. textView.setText("Button2 is LongClicked!");//可触发
  58. }
  59. break;
  60. }
  61. }
  62.  
  63. //===================================================关于资源的注解=========================================
  64.  
  65. @AnimationRes(R.anim.rotate)
  66. Animation animationRotate;
  67.  
  68. @DrawableRes(R.drawable.myphoto)
  69. Drawable myphoto;
  70.  
  71. @ColorRes(R.color.love)
  72. Integer mycolor;
  73.  
  74. @TextRes(R.string.textres)
  75. CharSequence text;
  76.  
  77. @Click({R.id.button5,R.id.button6,R.id.button7})
  78. public void animationButtonOnClicked(View view){
  79. switch (view.getId()){
  80. case R.id.button5:{
  81. imageView.startAnimation(animationRotate);
  82. }
  83. break;
  84. case R.id.button6:{
  85. imageView.setImageDrawable(myphoto);
  86. }
  87. break;
  88. case R.id.button7:{
  89. Toast.makeText(getApplicationContext(),text.toString(),Toast.LENGTH_SHORT).show();
  90. }
  91. break;
  92. }
  93. }
  94.  
  95. //==============================================关于线程的注解================================================
  96. //相当于一个新的任务AsyncTask或者新线程Thread
  97. @Background
  98. public void progressBarWorks(){
  99. //相当于一个新的线程中执行: @Background
  100. int i = 1;
  101. while (i <= 10){
  102. Log.e("progress","进度: " + i);
  103. try {
  104. Thread.sleep(1000);
  105. updateProgressBar(i);
  106. //直接progressBar.setProgress(i);也可以的,所以@Background注解内部可能实现了handler机制
  107. i++;
  108. } catch (InterruptedException e) {
  109. e.printStackTrace();
  110. }
  111. }
  112.  
  113. }
  114.  
  115. //指代UI线程
  116. @UiThread
  117. public void updateProgressBar(int i){
  118. progressBar.setProgress(i);
  119. if (i == 10){
  120. Toast.makeText(getApplicationContext(), "滚动条结束",Toast.LENGTH_SHORT).show();
  121. }
  122. }
  123.  
  124. //=======================================关于几个事件的先后顺序===============================================
  125.  
  126. @Override
  127. protected void onCreate(Bundle savedInstanceState) {
  128. super.onCreate(savedInstanceState);
  129. Log.e("FirstToLast", "onCreate");
  130.  
  131. //可省略!
  132. //setContentView(R.layout.activity_my);
  133.  
  134. //progressBar.setMax(100); 报错,空指针异常
  135. //因为在onCreate()被调用的时候,@ViewById还没有被set,也就是都为null
  136. //所以如果你要对组件进行一定的初始化,那么你要用@AfterViews注解
  137. }
  138.  
  139. @AfterViews
  140. public void init(){
  141. Log.e("FirstToLast","init");
  142. progressBar.setMax(10);
  143. }
  144.  
  145. @Override
  146. protected void onResume() {
  147. super.onResume();
  148. Log.e("FirstToLast","onResume");
  149. }
  150.  
  151. @Override
  152. protected void onStart() {
  153. super.onStart();
  154. Log.e("FirstToLast","onStart");
  155. }
  156.  
  157. }

Androidannotations框架的更多相关文章

  1. AndroidAnnotations框架简单使用方法

    当我们配置好了框架后,那么久可以来使用了.使用教程网上一大堆,官方也有提供!!!可自行学习深造.下面我简单的贴出几个常用的方法,作为HelloWorld入门: @EActivity(R.layout. ...

  2. AndroidAnnotations框架配置

    如今Android Studio的普及,Android开发基本要舍弃Eclipse了,最近使用AndroidAnnotations 注解框架的时候,找了些资料慢慢整出来了,在这给大家简单分享一下: 首 ...

  3. Android Studio 配置 androidAnnotations框架详细步骤

    第一步:打开app的build.gradle文件 第二步:添加下面红色的部分 apply plugin: 'com.android.application' android { compileSdkV ...

  4. AndroidAnnotations(Code Diet)android快速开发框架

    最近用了一款很不错的android快速开发框架,1000行的代码瞬间变成几百行,不用你会后悔的 特点: (1) 依赖注入:包括view,extras,系统服务,资源等等(2) 简单的线程模型,通过an ...

  5. android studio配置AndroidAnnotations

    现在很多人都使用Android studio开发工具代替eclipse了,当然的 在eclipse使用的好的一些开发框架也会对应的在android studio上面使用. 参考文档:http://bl ...

  6. Android 最火高速开发框架AndroidAnnotations使用具体解释

    Android 最火的高速开发框架androidannotations配置具体解释文章中有eclipse配置步骤,Android 最火高速开发框架AndroidAnnotations简介文章中的简介, ...

  7. Android注解框架实战-ButterKnife

    文章大纲 Android注解框架介绍 ButterKnife实战 项目源码下载   一.框架介绍 为什么要用注解框架?  在Android开发过程中,我们经常性地需要操作组件,操作方法有findVie ...

  8. Android 注解框架对比

    Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上.然后你可以写一个注解处理器去解析处理这些注解(人称编译时注解 ...

  9. Android 最火的高速开发框架AndroidAnnotations使用具体解释

    Android 最火的高速开发框架androidannotations配置具体解释文章中有eclipse配置步骤.Android 最火高速开发框架AndroidAnnotations简介文章中的简介. ...

随机推荐

  1. Linux下文件的三种时间戳

    Linux下文件的三种时间标记 三种时间对应关系表 column column column 访问时间 Access atime 修改时间 Modify mtime 状态改动时间 Change cti ...

  2. 2014ACM/ICPC亚洲区北京站

    1001  A Curious Matt 求一段时间内的速度单位时间变化量,其实就是直接求出单位时间内的,如果某段时间能达到最大那么这段时间内必定有一个或一小段单位时间内速度变化是最大的即局部能达到最 ...

  3. AngularJS 路由

    AngularJS 路由允许我们通过不同的 URL 访问不同的内容. 通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA). 通常 ...

  4. Java 8 新特性之泛型的类型推导

    1. 泛型究竟是什么? 在讨论类型推导(type inference)之前,必须回顾一下什么是泛型(Generic).泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据 ...

  5. Blender 之修改器代码分析

                           Blender的修改器(modifier)模块,默认界面右下块(Property)面板的扳手,分类(修改.生成.形变.模拟)列出所有的修改器.也可以空格键 ...

  6. 10201启动时候报ORA-27125

    [ora10g@oracle ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Thu Feb 26 18:46 ...

  7. spfa模板

    通过stl的queue实现的spfa(vector实现邻接表存图) 本模板没有考虑存在两点不连通的情况 如果需要判断则需要用到并查集或者遍历整个邻接表 #include<iostream> ...

  8. Mysql数据库的使用总结之Innodb简介

     最近在对开发的软件的服务器部分制作安装包,但服务器部分需要有mysql数据库的支持.因此,采用免安装版的mysql策略:将mysql数据库需要的文件在安装程序中进行设置和打包即可.但也遇到了很多问题 ...

  9. redmine整合GIT版本库

    redmine整合GIT版本库   服务器的环境: Ubuntu 11.10 64位 Redmine 1.4.5.stable.10943 git version 1.7.5.4 + gitolite ...

  10. JAVA 虚拟机钩子

    Shutdown Hook Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码.JAVA中的ShutdownHook提供了比较好的 ...