做过JavaEE肯定对Spring不陌生,尤其是spring的IOC,真是太好用了。顺着这个思想,Android上有没有spring来实现IOC。搜索一下,果然spring已经推出了spring for android,不过可惜的是它并不支持IOC,但是却在官网发现了这个么一篇文章http://blog.springsource.org/2011/08/26/clean-code-with-android/,里面讲了android依赖注入(IOC)的实现思想和已经实现依赖注入的几个项目,自己感觉AndroidAnnotations最为出色,不仅jar包小,而且功能强大,极大的减少了代码量。本文将会讲到AndroidAnnotations的部署和简单应用。
配置:
1、下载并导入jar包,有两个jar包,分别是androidannotations-3.1.jar 和androidannotations-api-3.1.jar . 下载下来后将androidannotations-api-3.1.jar放置到你项目的libs目录下,并在项目中新建一个compile-libs的文件夹把androidannotations-3.1.jar放到该文件下,两个jar不可放在同一文件夹下。
2、配置Eclipse,
2.1、 Project-->JavaCompiler 设置"Compiler compliance level" 在1.6以上,否则不会运作
2.2、 Project-->JavaCompiler -> "Annotation Processing",勾选"Enable annotion processing" ( 并且在描述那一行写上“apt_generated” 因为会在你项目中的跟目录生成该文件夹,用来装XXActivity_的)
2..3 "Properties" -> "Java Compiler" -> "Annotation Processing" -> "Factory Path",勾选上“Enable project specific settings” 并添加androidannotations-x.x.x.jar(注意别添加错了哦,不是androidannotations-api-3.1.jar)
2.4 右键libs下的androidannotations-api-3.1.jar 选择“Builde Path”
好了,到现在为止你的项目就可以用annotations框架了,里面很多标签就可以直接拿来用了
除了@Eactivity @ViewById@Click之外还有
@EApplication
@EBean
@EFragment
@EService
@EView
@EviewGroup
@App
@Bean
@Fullscreen
但是要注意的是你要用到Annotations的Activity要在AndroidManifest.xml文件中加一个下划线。 例如
<span style="background-color: rgb(255, 255, 255);"> <activity
android:name="com.example.yidiannews_.WelcomeActivity"
android:label="@string/title_activity_welcome" >
</activity></span>
gai
<activity
android:name="com.example.yidiannews_.WeatcherActivity_"
android:label="@string/title_activity_weatcher" >
</activity>
这个时候你项目的跟目录下面就会多出一个apt_generated 文件夹,它装着XXActivity_的文件
下面是我自己配置的一个Activity的部分代码:
@EActivity(R.layout.activity_weatcher)
public class WeatcherActivity extends BaseActivity implements ResponseData{
@ViewById(R.id.title) //标题
protected TextView mTitle;
@ViewById(R.id.loacl)
protected TextView mLocal; //地区
@ViewById(R.id.layout)
protected RelativeLayout mLayout;//整个天气布局的layout
<span style="white-space:pre"> </span>//选择城市添加侦听事件
<span style="white-space:pre"> </span>@Click(R.id.loacl)
<span style="white-space:pre"> </span> public void chooseCity(View view){
<span style="white-space:pre"> </span>Toast.makeText(this, "选择城市", Toast.LENGTH_LONG).show();
<span style="white-space:pre"> </span>}