Android Annotations快速开发框架入门

Android Annotations快速开发框架入门

环境搭建

Eclipse IDE

  1. 上官网下载androidannotations-bundle-3.2.zip

  2. 解压获取androidannotations-api-3.2.jar放到项目中的libs目录下

  3. 新建一个compile-libs目录,放入androidannotations-3.2.jar

  4. 右击项目,选中Properties,找到Java Compiler-->Annotation ProcessingEnable project specific settings打勾,打开Annotation Processing的子项,对Ena ble project specific settings打勾,再把androidannotations-3.2.jar添加进来

  5. clean下项目,ok!

    AS上大同小异

注入

//替代findViewById
@ViewById
@ViewsById
//在findViewById后执行
@AfterViews
//获取Activity之间传递的数据并注入
@Extra

事件绑定

//代替各种事件
@Click
@LongClick
@ItemClick
@ItemLongClick
@Touch

多线程

//后台子线程中运行
@Background
//UI主线程中运行
@UiThread

资源注入

//替代getResources()
@StringRes
@ColorRes
@StringArrayRes

Demo

//AndroidManifest.xml中
<activity
    android:name="com.example.androidannotations.MainActivity_"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name="com.example.androidannotations.SecondActivity_" >
</activity>
//MainActivity.java中
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {

    @ViewById(R.id.button1)
    Button button;
    @ViewsById({ R.id.textView1, R.id.textView2 })
    List<TextView> list;
    @Click(R.id.button1)
    public void toast() {
        Intent intent = new Intent(this, SecondActivity_.class);
        intent.putExtra(SecondActivity_.EXTRA_AGE, "666");
        intent.putExtra(SecondActivity_.EXTRA_NAME, "Lshare");
        startActivity(intent);
    }
    @AfterViews
    public void setText() {
        for (TextView tv : list) {
            tv.setText("Lshare");
        }
    }
    @LongClick(R.id.textView1)
    public void longClick() {
        Toast.makeText(this, "tv", 0).show();
        runInBack();
    }
    @Background
    public void runInBack() {
        Log.i("lsh", "id:" + Thread.currentThread().getId());
        updateUI();
    }
    @UiThread
    public void updateUI() {
        button.setText("Update ui");
        Log.i("lsh", "id:" + Thread.currentThread().getId());
    }
}
//SecondActivity.java中
@EActivity(R.layout.activity_second)
public class SecondActivity extends Activity {

    public static final String EXTRA_NAME="name";
    public static final String EXTRA_AGE="age";
    @Extra(EXTRA_NAME)
    String name;
    @Extra(EXTRA_AGE)
    String age;
    @ViewById(R.id.nameView)
    TextView nameTextView;
    @ViewById(R.id.ageaView)
    TextView ageTextView;

    @AfterViews
    public void initUI(){
        nameTextView.setText(name);
        ageTextView.setText(age);
    }
}

注意事项

  1. AndroidManifest.xml中注册的类名后要加下划线

  2. 加注解的代码要是public

原理

  • 使用到观察者模式
  • 编译时处理注解:AbstracProcessor工具类及javax.lang.model.element
  • 使用到JCodeModel ,Oracle公司的一套开源框架,简单地说是用来自动生成java代码的

学习开源框架的方法

  1. 上官网学习
  2. 搭建环境
  3. 运行官方Demo
  4. 自己动手写Demo
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值