androidannotations 注解框架的配置及使用教程

Posted Gradle官方文件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了androidannotations 注解框架的配置及使用教程相关的知识,希望对你有一定的参考价值。

androidannotations 从入门到精通
作为一个菜鸟抽空学习下androidannotations ,痛并快乐的行走在成长为大神之路上。
androidannotations 官方地址
1:配置教程

2:使用教程

3:官网

A:下面上我的配置方法

//step 1
//添加依赖插件,定义版本号
apply plugin: 'android-apt'
def AAVersion = '4.0.0'
//step 2
buildscript 
    //指定远程仓库
    repositories 
        mavenCentral()
    
    //依赖库
    dependencies 
        // 记得保持版本号与您根目录下 build.gradle 中所依赖的版本号一致
        classpath 'com.android.tools.build:gradle:2.3.0'
        // 保持最新的版本号,当前是1.8
        // 最新版查看地址-http://mvnrepository.com/artifact/com.neenbedankt.gradle.plugins/android-apt
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    


//step 3
apt 
    arguments 
        androidManifestFile variant.outputs[0]?.processResources?.manifestFile
    



dependencies 
    // 具体的依赖
    apt "org.androidannotations:androidannotations:$AAVersion"
    compile "org.androidannotations:androidannotations-api:$AAVersion"


B:配置完就可以使用了
xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.joey.mydeno.MainActivity"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textShow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="12dp"
        android:text="Click Me"/>

</LinearLayout>

Activity代码

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Fullscreen;
import org.androidannotations.annotations.UiThread;
import org.androidannotations.annotations.ViewById;
import org.androidannotations.annotations.WindowFeature;
import org.androidannotations.annotations.res.StringRes;

@EActivity (R.layout.activity_main)//引入 Activity 的布局,相当于 setContentView(int id)
@Fullscreen//全屏
@WindowFeature(Window.FEATURE_NO_TITLE)//移除标题栏
//同理,对于Fragment:@EFragment,普通类:@EBean
public class MainActivity extends AppCompatActivity 
    /**
     * 引入控件
     * 注意:变量名与xml中的id一致时,不需要加R.id.textShow
     */
    @ViewById
    TextView textShow;

    /**
     * 变量名与xml中声明的id不一致时,需要添加R。id。button
     */
    @ViewById (R.id.button)
    Button mButton;

    /**
     * 引入String 资源,id的使用同上
     */
    @StringRes
    String btText;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        //查看 MainActivity_ 的 onCreate() 方法,其
        //先执行 super.onCreate(savedInstanceState)方法
        //再执行setContentView(R.layout.activity_main) 方法
        //所以在 MainActivity 的 onCreate() 方法中不要涉及任何与 layout 控件相关的操作
    

    /**
     * 开始使用控件
     * 注意:不要在onCreat()方法中调用注解得到的控件
     *        因为onCreat()在执行时view还没有注入,会导致空指针异常
     */
    @AfterViews
    void initView()
        textShow.setText("AA注解的使用");
        mButton.setText(btText);
    

    /**
     * 点击事件,同理,长按:@LongClick,触摸:@Touch
     */
    @Click
    void button()//button就是按钮的id,此处可以修改其他的,但是注解上必须注明R.id.button
        Toast.makeText(this, "开始", Toast.LENGTH_SHORT).show();
        //执行耗时操作
        doInBack();
    

    /**
     * 子线程执行耗时操作,比如网络请求
     */
    @Background
    void doInBack()//注意:该方法在子线程执行,如果更新ui会报错
        try 
            //模拟耗时操作
            Thread.sleep(2000);
            //执行在主线程的方法
            doInUiThread("耗时操作完毕");
         catch (InterruptedException e) 
            e.printStackTrace();
        
    

    /**
     * 在主线程更新ui
     */
    @UiThread
    void doInUiThread(String s)
        mButton.setText(s);
    

C:这一步一定要执行,

修改清单文件在Activity后面加一个_,具体原因请自行百度
        <activity android:name=".MainActivity_">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

接下来就可以运行了,
but~but~你一定会发现跑不起来

编译完项目在run,你就发现可以神奇的跑起来了

最后附上demo的下载地址

点我下载demo

以上是关于androidannotations 注解框架的配置及使用教程的主要内容,如果未能解决你的问题,请参考以下文章

Android 最火的高速开发框架AndroidAnnotations使用具体解释

Android Annotations浅析

[AndroidAnnotations框架]AndroidAnnotations的配置

android编译时注解框架

AndroidAnnotations框架

AndroidAnnotations框架详解