美文网首页
Android-Annotations的使用

Android-Annotations的使用

作者: Jeffrey599 | 来源:发表于2018-05-23 21:23 被阅读0次

AndroidAnnotations是一个能够让你快速进行Android开发的开源框架,它能让你专注于真正重要的地方。
使代码更加精简,使项目更加容易维护,它的目标就是“Fast Android Development.Easy maintainance”。
下面简单讲一下Annotation的基本用法(以AndroidStudio为例):

一、新建项目,在gradle里添加配置。

我的gradle配置如下:
apply plugin: 'com.android.application'
buildscript {
repositories {
mavenCentral()
}
dependencies {
// replace with the current version of the Android plugin
classpath 'com.android.tools.build:gradle:2.1.0'
// the latest version of the android-apt plugin
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}

repositories {
mavenCentral()
mavenLocal()
}

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
def AAVersion = '4.1.0'

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"

defaultConfig {
    applicationId "com.mrtian.example.annotationtest"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.0'
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}

二、用法示范,以一个Activity为例,展示部分注释用法。

package com.mrtian.example.annotationtest;

import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;
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.SystemService;
import org.androidannotations.annotations.UiThread;
import org.androidannotations.annotations.ViewById;
import org.androidannotations.annotations.res.StringRes;

import java.util.concurrent.TimeUnit;

@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {

@ViewById(R.id.textView)
TextView textView;

@ViewById(R.id.button)
Button button;

@StringRes(R.string.app_name)
String appName;

@SystemService
NotificationManager notificationManager;

@SystemService
WindowManager windowManager;

@AfterViews
void initData() {
    Log.d("txy","afterview initViews!");
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    windowManager.getDefaultDisplay();
}

@Click(R.id.button)
void myButtonClick(){
    Toast.makeText(this,"hello",Toast.LENGTH_SHORT).show();
    someBackgroundWork("lalala", 5);
}

@Background
void someBackgroundWork(String name, long timeToDoSomeLongComputation) {
    try {
        TimeUnit.SECONDS.sleep(timeToDoSomeLongComputation);
    } catch (InterruptedException e) {
    }

    String message = String.format(appName, name);

    updateUi(message, Color.BLUE);

    showNotificationsDelayed();
}

@UiThread
void updateUi(String message, int color) {
    setProgressBarIndeterminateVisibility(false);
    textView.setText(message);
    textView.setTextColor(color);
}

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@UiThread(delay = 2000)
void showNotificationsDelayed() {
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(), 0);

    Notification notification = new Notification.Builder(this)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle("My notification")
            .setContentText("Hello, World!")
            .setContentIntent(contentIntent)
            .getNotification();

    notificationManager.notify(1, notification);
}

}
可以看出,的确简化了很多。
@EActivity 绑定布局文件
@ViewById 绑定控件
@StringRes 获取资源文件
@SystemService 通过系统服务获取对象
@AfterViews 在绑定控件后自动调用
@Click 绑定点击事件,可以同时绑定多个,用“,”隔开
@Background 后台执行
@@UiThread ui线程中执行
。。。

三、在AndroidManifest.xml中修改Activity名字

需要注意的是,我们写的包含注释的MainActivity并非终于用来关联的Activity,编译器会自动生成一个名为“原Activity名”+“"的类,该类继承与原Activity,所以还需要在AndroidManifest.xml中将MainActivity改成MainActivity
<activity android:name=".MainActivity_">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</activity>

这样就可以使用Annotation了,还有很多用法,需要不断探究。

相关文章

  • Android-Annotations的使用

    AndroidAnnotations是一个能够让你快速进行Android开发的开源框架,它能让你专注于真正重要的地...

  • iconfont的使用(下载使用)

    1、下载文件 2、在生命周期中引入项目 beforeCreate () { var domModule = ...

  • Gson的使用--使用注解

    Gson为了简化序列化和反序列化的过程,提供了很多注解,这些注解大致分为三类,我们一一的介绍一下。 自定义字段的名...

  • 记录使用iframe的使用

    默认记录一下----可以说 这是我第一次使用iframe 之前都没有使用过; 使用方式: 自己开发就用了这几个属...

  • with的使用

    下面例子可以具体说明with如何工作: 运行代码,输出如下

  • this的使用

    什么是this? this是一个关键字,这个关键字总是返回一个对象;简单说,就是返回属性或方法“当前”所在的对象。...

  • this的使用

    JS中this调用有几种情况 一:纯粹的函数调用 这是函数的最通常用法,属于全局性调用,因此this就代表全局对象...

  • ==的使用

    积累日常遇到的编码规范,良好的编码习惯,持续更新。。。 日常使用==用于判断的时候,习惯性将比较值写前面,变量写后...

  • this的使用

    1.默认绑定,就是函数立即执行。 函数立即执行就是指向window,但是如果是node环境,就是指向全局conso...

  • %in% 的使用

    写在前面:From 生信技能书向量难点之一:%in% 难点 (1)== 与 %in% 的区别== 强调位置,x和对...

网友评论

      本文标题:Android-Annotations的使用

      本文链接:https://www.haomeiwen.com/subject/glpdjftx.html