天天看点

androidannotations注解框架使用androidannotations注解框架使用

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. 对该框架进行源码分析