androidannotations注解框架使用
导进项目
配置app模块中的build.gradle
1. 添加apply plugin: 'android-apt'
2. 在dependencies中添加
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
//注解框架需要插件
def AAVersion = '3.2'
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}
3. 在最后添加
//注解框架需要插件
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName 'com.app.yueke'
}
}
注意:resourcePackageName里面要替换成自己的包名
配置Project中的build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
//注解框架插件
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
基本使用
Activity调用
@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {}
Activity需要在mainfest文件中修改注册类名,原类名后加_
Fragment调用
@EFragment(R.layout.fragment_home)
public class HomeFragment extends BaseFragment {}
声明控件
@ViewById(R.id.iv_ball)
ImageView iv_ball;
如果控件的id和变量名一致的情况就可以省略(R.id.iv_ball),同理多个声明
@ViewById
ImageView iv_ball1,iv_ball2,iv_ball3;
控件id名和变量名一致,且都是同一控件就可以这么搞
初始化方法调用
@AfterViews
void initViews() {
initVideo();
initEvaluate();
requestData();
requestEvaluate();
}
这个方法相当于在执行完setContentView后执行的方法,初始化数据不涉及UI的可放在onCreate()方法中,涉及到UI赋值的必须在这里执行,注:方法名字可以随便起,方法不能私有化,最好默认
点击事件
@Click({R.id.ll_teadetail_collection, R.id.ll_teadetail_call, R.id.ll_teadetail_appoint})
void onClick(View v) {}
@Click这个注解里如果只声明一个控件的监听就@Click(R.id.btn1),如果多个的话就需要加{},例如@Click({R.id.ll_teadetail_collection, R.id.ll_teadetail_call})
Item点击事件
@ItemClick
void onItemClick(AdapterView<?> parent, View view, int position, long id) {}
焦点改变事件
@FocusChange({R.id.ll_paid, R.id.ll_unpaid})
void onFocusChange(View v, boolean hasFocus) {}
不足之处
1. 因为编译的时候要根据注解生成编译文件所以编译比较慢
2. 可能不支持热修复技术,也是由于会生成编译后文件
后续计划
1. 虽然这个框架也比较热门,但还是需要多尝试更多一些注解框架例如Android ButterKnife
2. 对该框架进行源码分析