主页: http://androidannotations.org/


用途:
1. 使用依赖注入Views,extras,System
Service,resources
2. 简化线程模型
3. 事件绑定
4. REST Client


配置:
1. 在**project/build.gradle**文件中按下图所示添加代码:

mavenCentral()
classpath
'com.neenbedankt.gradle.plugins:android-apt:1.8'
mavenCentral()
mavenLocal()

2. 在**app/build.gradle**文件中按下图所示添加代码:

apply plugin:
'android-apt'
apt
{
arguments
{
androidManifestFile
variant.outputs[0]?.processResources?.manifestFile
}
}

apt
"org.androidannotations:androidannotations:4.0.0"
compile
"org.androidannotations:androidannotations-api:4.0.0"

* 注意事项:
*
Manifest中注册的activity要在原类名后追加下划线”_”
* 使用注解的控件和方法不能使用private修饰符
*
大型项目并不适用

示例代码:

注意导包导入的是:

import org.androidannotations.annotations......
@Fullscreen //全屏
@WindowFeature(Window.FEATURE_NO_TITLE) //Activity没有标题
@EActivity(R.layout.my_activity) //布局文件在这里声明,不用在setContentView
public class MyActivity extends Activity { @ViewById //初始化控件,不需要自己实例化
EditText myEditText; @ViewById(R.id.myTextView) //提供id来生成控件,如果不指定ID,默认以控件名进行查找,如上面的myEditText
TextView textView; @StringRes(R.string.app_name) //字符串资源
String appName; @ColorRes(R.color.colorAccent) //颜色资源
int androidColor; @BooleanRes
boolean someBoolean; @SystemService //系统服务
NotificationManager notificationManager; @Click //事件控制,可以以按钮的id作为方法名,同时支持的事件还有onLongClick,onTextChange等
void myButtonClicked() {
String name = myEditText.getText().toString();
setProgressBarIndeterminateVisibility(true);
someBackgroundWork(name, 5);
} @ViewById(R.id.textView)
TextView tv; @Click(R.id.button)
void submit() {
tv.setText(appName);
someBackgroundWork();
} @Background//开启新线程后台运行,注意不要引用UI控件,而且返回值类型一定是void
void someBackgroundWork() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {} updateUi(appName, androidColor);
} @UiThread//UI线程
void updateUi(String message, int color) {
tv.setText(message);
tv.setTextColor(color);
} @LongClick
void startExtraActivity() {
Intent intent = new Intent(this, ActivityWithExtra_.class); intent.putExtra(ActivityWithExtra.MY_DATE_EXTRA, new Date());
intent.putExtra(ActivityWithExtra.MY_STRING_EXTRA, "hello !");
intent.putExtra(ActivityWithExtra.MY_INT_EXTRA, 42); startActivity(intent);
} @Touch
void myTextView(MotionEvent event) {
Log.d("MyActivity", "myTextView was touched!");
}
}

依赖注入框架之androidannotations的更多相关文章

  1. [Android]依赖注入框架google的dagger

    分享一下Android依赖注入框架--Google升级版Dagger2框架 Google的Dagger2是对上一版squareup的Dagger改版,话不多说直接上项目代码. Dagger2源码 Da ...

  2. [Android]依赖注入框架squareup的dagger

    分享一下Android依赖注入框架--Dagger使用 Dagger源码 Dagger1-Demo 希望能给大家的开发带来帮助.

  3. Android Dagger依赖注入框架浅析

    今天接触了Dagger这套android的依赖注入框架(DI框架).感觉跟Spring 的IOC差点儿相同吧.这个框架它的优点是它没有採用反射技术(Spring是用反射的),而是用预编译技术.因为基于 ...

  4. 依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .

    3.2.    “好莱坞原则” 看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想.如果说传统的组件间耦合方式,例如new.工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模 ...

  5. Ninject是一款.Net平台下的开源依赖注入框架

    Ninject是一款.Net平台下的开源依赖注入框架.按照官方说法,它快如闪电.超级轻量,且充分利用了.Net的最新语法,使用Lambda表达式代替Xml文件完成类型绑定.Ninject结构精巧,功能 ...

  6. Dora.Interception,为.NET Core度身打造的AOP框架 [4]:与依赖注入框架的无缝集成

    Dora.Interception最初的定位就是专门针对.NET Core的AOP框架,所以在整个迭代过程中我大部分是在做减法.对于.NET Core程序开发来说,依赖注入已经成为无处不在并且“深入骨 ...

  7. .net core程序中使用微软的依赖注入框架

    我之前在博文中介绍过Asp.net core下系统自带的依赖注入框架,这个依赖框架在Microsoft.Extensions.DependencyInjection中实现,本身并不是.net core ...

  8. Spring.NET依赖注入框架学习--实例化容器常用方法

    Spring.NET依赖注入框架学习---实例化容器常用方法 本篇学习实例化Spring.NET容器的俩种方式 1.通过XmlObjectFactory创建一个Spring.NET容器 IResour ...

  9. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

随机推荐

  1. 性能测试分析工具nmon文件分析时报错解决办法

    1.使用nmon analyzer V334.xml分析数据时,如果文件过大,可以修改Analyser页签中的INTERVALS的最大值: 2.查找生成的nmon文件中包含的nan,删掉这些数据(需要 ...

  2. Active Directory participation features and security extensions

    Participation in the Active Directory Samba 3.0 series, as well as the OS since Windows 2000, is pos ...

  3. Linux终端命令行的快捷键

    涉及在Linux命令行下进行快速移动光标.命令编辑.编辑后执行历史命令.Bang(!)命令.控制命令等.让basher更有效率. • 常用 1.ctrl+左右键:在单词之间跳转 2.ctrl+a:跳到 ...

  4. selenium设置Chrome浏览器不出现通知,设置代理IP

    from selenium import webdriver PROXY = "" chrome_options = webdriver.ChromeOptions() prefs ...

  5. XShell 假死

    使用vim时因为使用windows word带来的坏习惯经常喜欢ctrl+s ,而这个造成的结果就是xshell假死,解决办法是ctrl+q

  6. MFC Bitmap::FromBITMAPINFO返回空问题

    领导临时给了一个任务,项目上的一个问题,就是FromBITMAPINFO不成功,之前也没有弄过MFC的东西,但领导让干就干吧.咱也不知道怎么回事,咱也不敢问. 上来直接度娘,试过各种办法,都没与解决, ...

  7. 部署jenkins+git

    Jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能 安装并启动思路: 安装准备 ...

  8. [SC] OpenSCManager 失败 5:拒绝访问

    问题:[SC] OpenSCManager 失败 5: 网查这个错误信息指拒绝访问  权限不足 1.解决: 以管理员身份运行cmd,即可 查询这个提示是指什么错误时,看网上有很多文章写用下面这种方法, ...

  9. 白话Spring(基础篇)---AOP(execution表达式)(转)

    [一知半解,就是给自己挖坑] 作为AOP的最后一节内容,我们来简单总结一下切面表达式上见的书写方法.下面的那内容有参考其他博文,在此先对开源博客的各位大神表示感谢! ----------------- ...

  10. 多个linux主机利用samba服务实现共享文件

    工具:两台centos7虚拟机(其他版本也都支持) 安装包:samba(还有其他依赖包) samba-client 首先实现samba服务器配置 1.先安装samba包,系统自动会下载其他依赖包 2. ...