AndroidAnnotations开发框架在Eclipse中的搭建和使用以及框架实

news/2024/7/5 23:17:32
AndroidAnnotations是用来解决开发中繁琐的初始化组件的一个开源的框架,开发中只需要配置一下相应的注解标签就可以了,其他的工作AndroidAnnotations框架都会帮

AndroidAnnotations是用来解决开发中繁琐的初始化组件的一个开源的框架,开发中只需要配置一下相应的注解标签就可以了,其他的工作AndroidAnnotations框架都会帮我们解决,是我们开发中没有必要重复的写一些没什么技术含量的代码,相信使用过这个框架的开发人员都比较喜欢这个框架。 
使用AndoridAnnotations框架的理由: 
1. 提高了开发的效率 
2. 代码看起来更加整洁 
3. 方便统一管理 
4. 提高了代码的复用性 
AndroidAnnotations框架官方网址: 
AndroidAnnotations框架jar包:https://github.com/excilys/androidannotations/wiki/Download

其实,AndroidAnnotations框架只适合于开发一些中小型的app,比较复杂的一些项目建议不要使用这个框架,因为可能会导致项目开发中应用程序超支的情况,(一般一个应用程序最多支持65536个方法)如果超出了就会导致打包成的apk没法安装到手机中使用。 
下载下来的jar包: 

这里写图片描述


配置方法: 
1. 将androidannotations-api-3.3.1.jar放入libs目录中 
如图: 

这里写图片描述


2. 在项目中新建一个compile-libs文件夹,并将androidannotations-3.3.1.jar包copy到该文件夹中 
如图: 

这里写图片描述


3. 右键项目–》properties 
4. 选择Java Compiler项,将level设置为1.6 
如图: 

这里写图片描述


5. 将Annotations Processin项中的第一项勾上 
如图: 

这里写图片描述


6.将Factory Path项的第一项勾上,并且点击Add JARs按钮 
如图: 

这里写图片描述


7. 找到该项目之前创建的compile-libs文件中添加的jar包,OK 
如图: 

这里写图片描述


8. 配置完成,可以在项目中测试一下配置是否成功,出现如下图所示可用的注解,说明已经配置成功,可以愉快的敲代码了。 
如图: 

这里写图片描述

AndroidAnnotations框架的使用方法: 
1.当使用@EActivity、@EService这些类注解标签的时候,要注意在 Manifest.xml文件中配置(类名+下划线)的name。 
如图: 

这里写图片描述


2.下面举几个简单的例子说明一下AndroidAnnotations框架中注解标签的使用的方法: 
如图: 

这里写图片描述


这里的@Click注解标签要注意在声明玩该button1之后才能正确使用。 
3.一些其他注解标签的使用方法其实都差不多,使用都非常简单,具体可以查看官方网站(https://github.com/excilys/androidannotations/wiki/AvailableAnnotations)中列出了所有的标签的使用方法进行学习使用。
4.在使用注解标签中需要注意的一些常见的问题: 
编译错误: 
1.要注册同名Activity_(原因在下面进行具体的解释) 
2.View的修饰符是不能使用private修饰(原因在下面进行具体的解释) 
3.用注解注释的方法是不能使用private修饰的方法(原因在下面进行具体的解释)

AndoridAnnotations框架的原理: 
其实使用注解标签并不是java编译器就识别这些注解标签,只不过AndroidAnnotations框架通过注解标签帮我们自动生成了那些没什么技术含量的代码,标签本身并不能做什么事情,只不过标签背后通过代码进行了处理。 
一.生成代码的分析 
其实我们可以看到该框架自动生成的代码,方法: 

这里写图片描述


这里写图片描述


从这些自动生成的代码就可以懂得了前边在使用中注意的原因: 
1.自动生成的类名中就是:自己创建的Activity类名+下划线构成的。所以在Manifest.xml文件中要将name改成加下划线的形式的名称。 
2.View的修饰符和用注解注释的方法是不能使用private的原因是:如果使用了private来修饰,那么其他的类就没法使用这些属性和方法,所以Annotations框架就没法自动生成相应的代码了。

如果要了解Annotations框架是如何自动生成代码的: 
1.要下载Annotations框架的源码地址:https://github.com/excilys/androidannotations 
2.分析MainActivity_中主要的三个类: 
如图: 

这里写图片描述


打开路径:E:\源码包\androidannotations-develop\AndroidAnnotations\androidannotations-api\src\main\java\org\androidannotations\api\view

二、java注解的处理: 
1.分为两种方式: 
1.反射处理注解 
2.编译器编译时处理注解(Annotations使用了这种方式): 
使用到两个重要的东西: 
1.AbstractProcessor类(用来获取注解标签,然后对相应的标签进行相应的处理) 
2.javax.lang.model.element包(对注解标签的描述,说明哪些是类上边配置的注解标签,哪些是成员变量上配置的注解标签,哪些是方法上边配置的注解标签) 
注解的核心AbstractProcessor类的源码打开地址: 
E:\源码包\androidannotations-develop\AndroidAnnotations\androidannotations\src\main\java\org\androidannotations下的AndroidAnnotationProcessor类


http://www.niftyadmin.cn/n/4583476.html

相关文章

nginx高并发架构

1.前言 对于高并发的流量web架构,单纯的使用nginx是不够用的,nginx做七层代理需要处理数据,在大并发的情况下对主机资源的消耗就非常厉害了,所以此情况下就引入了lvs,使用lvs的四层转发功能,四层转发不需要…

word字体放大后只显示一半_word字体放大后显示不完整的两种解决办法

在我们对字体的操作(放大缩小)的过程中,会遇到放大字体后,字体显示不完整,只显示一部分,另外一部分缺失的现象.那么,我们怎么解决这一问题呢??下面我就分享两个方法解决这个问题.希望对大家有所帮助.1、当我们打开文件时,发现字体很小,因此想要放大,如图.2、但是我们放大之后…

虚拟化中的RSS与VMQ

当然,虚拟化技术以及云计算平台已经发展的越来越快,相关的硬件加速技术也是有很多种选择,并且在不同的场合需要用户选取适合自己的解决方案,而不是盲目跟风,究竟哪些功能有用,哪些功能之间又互相冲突&#…

三角形已知边长求高公式_三角形面积的求解 —— 初一学生2020微写作展示2

清风朗月,不期而遇你会点蓝字关注我吗?三角形面积的求解初一学生2020微写作展示2如图,正方形ABCD与正方形BEFG,点c在边BG上,已知正方形ABCD的边长为a,正方形BEFG的边长为b,用a、b表示下列面积。…

android studio IntellJIDEA 快捷键 全局替换

快捷键说明pdf文档: https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard.pdf android studio 全局替换: 项目右键 -- Replace in path选项 相当eclipse中的Ctrl H

Docker的mysql镜像_docker下MySQL镜像的使用方法

预习:使用到的docker命令:docker images 显示本地有的镜像docker pull 镜像名称 从docker hub上面拉取镜像docker run--name 定义容器的名称-d 让docker容器在后台运行到-a 查看已经创建的容器-s 查看启动的容器docker start docker_name 启动名…

Android studio Gradle download 文件 路径

Android studio Gradle download 这个下载路径默认在于这里: Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1 Windows系统默认下载到:C:\Users\(用户名)\.gradle\caches\modules-2\files-2.1

Android应用程序组件Content Provider的共享数据更新通知机制分析(4)

Step 4. Transport.onChange这个函数定义在frameworks/base/core/java/android/database/ContentObserver.java文件中:public abstract class ContentObserver { ...... private static final class Transport extends IContentObserver.Stub { ContentObserver …