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文件中修改注册类名,原类名后加_

<activity android:name=".MainActivity_">

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. 对该框架进行源码分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值