Android开源框架:AndroidAnnotations基本介绍

版权声明:分享是一种美德,能够找到同一兴趣点是幸运,转载文章记得说明出处,共同进步。 https://blog.csdn.net/David_snjly/article/details/47000503

效率开发框架

AndroidAnnotations是一个能够让你快速进行Android开发的开源框架,它能让你专注于真正重要的地方。

使代码更加精简,使项目更加容易维护,它的目标就是“Fast Android Development.Easy maintainance”。
通过一段时间的使用发现,相比原生的Android开发,确实能够让你少些很多代码,它的首页也给出了一个简单
的例子,通过例子也可以看到代码比之前几乎少写了一半。由于是开源,所以大家都可以直接拿来使用,这里给
AndroidAnnotations首页 和github上的项目地址AndroidAnnotations Github

1、使用依赖注入(Dependency Injection)可以了解一下IOC
2、简化的线程模型(Simplified threading model)
3、事件绑定(Event binding)
4、REST Client
5、No Magic 它的意思是:AndroidAnnotations在编译的时候会产生一个子类(接下来你会明白),你查看这个子类,可以看到它是如何工作的]

环境的配置这里就不讲了,github上已经有比较详细的介绍AndroidAnnotations的简单使用

我们先来看一看使用AndroidAnnotations时是如何创建Activity的:

<span style="font-size:18px;">import android.app.Activity; 
import android.widget.EditText; 
import android.widget.TextView; 

import com.googlecode.androidannotations.annotations.Click; 
import com.googlecode.androidannotations.annotations.EActivity; 
import com.googlecode.androidannotations.annotations.ViewById; 

@EActivity(R.layout.main) 
public class MyActivity extends Activity { 

<span style="white-space:pre">	</span>@ViewById(R.id.myInput) 
<span style="white-space:pre">	</span>EditText myInput; 

<span style="white-space:pre">	</span>@ViewById(R.id.myTextView) 
<span style="white-space:pre">	</span>TextView textView; 

<span style="white-space:pre">	</span>@Click 
<span style="white-space:pre">	</span>void myButton() { 
<span style="white-space:pre">	</span>String name = myInput.getText().toString(); 
<span style="white-space:pre">	</span>textView.setText("Hello "+name); 
<span style="white-space:pre">	</span>} 
} </span>
从上边的代码中,我们可以看到使用了@EActivity、@ViewById、@Click三个annotation(注释),当然它还提供
了其他很多annotation,这里我就结合这段代码介绍一下这个三个。首先@EActivity后必须要有一个layout id 来表示这
个Activity所使用的布局,远来的onCreate方法就不用了,很明显这样可以让我们少写一些代码;@ViewById 就和原来
的findViewById()方法一样,值得注意的是:@ViewById后的id是可以不写的,条件是控件变量名称要与xml中定义的id
必须一致,也就是说 当我在xml文件中定义的TextView的id必须是:android:id="@+id/textView" . 这样我们在@ViewById
后就不用再写括号了
,直接写

<span style="font-size:18px;">@ViewById 
TextView textView; </span>
就可以了。但是这样会有一个问题,运行时就会报出:NullPointerException的错误,我们就不能在myButton()方法中

直接使用,而是要在@AfterView注释的方法中使用


<span style="font-size:18px;">@AfterView 
void init(){ 
textView.setText("Hello"); 
} </span>

这样就不会有问题了。对于@Click,方法名和xml文件中的id一样就可以这样写,AndroidAnnotations会自动识别,对于
多个Button,可以写多个@Click,也可以在这样
<span style="font-size:18px;">@Click({R.id.button1,R.id.button2,R.id.button3}) 
<span style="white-space:pre">	</span>void buttonClicked(Button bt){ 
<span style="white-space:pre">	</span>switch(bt.getId()){ 
<span style="white-space:pre">	</span>case R.id.button1: // 
<span style="white-space:pre">	</span>break; 
<span style="white-space:pre">	</span>... 
<span style="white-space:pre">	</span>} 
} </span>
其他的一些内容就这里就不多讲,因为内容东西虽不是很多,但也几乎包含了Android开发所有内容,有兴趣的朋友可以到github自行学习,如有问题、疑问欢迎交流,共同学习。至于xml文件,还是和之前一样,没有变化。
最要注意的一点就是:使用AndroidAnnotations千万要记得,编译的时候会生成一个子类,这个子类的名称就是在
原来的类之后加了一个下划线“_”,比如这个例子产生的子类名称为“MyActivity_”,这就需要你在注册这个Activity的时候,在
AndroidManifest.xml中将 MyActivity 改为 MyActivity_ ,使用的时候也是使用MyActivity_来表示此类,如从另一个Activity跳转
到此节目就要这样用:


<span style="font-size:18px;">startActivity(new Intent(this,MyActivity_.class)); </span>

注意,是MyActivity_.class 不是 MyActivity.class;

AndroidAnnotations:

1、Enhanced components:@EActivity   @EService  .......

2、Injection:@ViewById    @ViewsById   @Extra     @AfterView  .....

3、Event binding: @click    @LongClick   @ItemClick    @Tough   ....

4、Threading:@background   .....


后续更新



猜你喜欢

转载自blog.csdn.net/David_snjly/article/details/47000503