AndroidAnnotation常用註解使用說明
本文由碼農網 – 蘇耀東原創,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
簡介
AndroidAnnotations是一個開源框架,通過使用它開放出來的註解api,可以大大的減少無關痛癢的程式碼量,簡潔程式碼。
第三方庫匯入
目前最新版本為4.0.0
在app/目錄下的build.gradle(區域性gradle)中新增下面紅色粗體字配置:
applyplugin:'com.android.application' applyplugin:'android-apt' defAAVersion='4.0.0' android{ compileSdkVersion23 buildToolsVersion"23.0.2" defaultConfig{ applicationId"com.xxx.demo" minSdkVersion18 targetSdkVersion23 versionCode1 versionName"1.0" } buildTypes{ release{ minifyEnabledfalse proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro' } } } dependencies{ compilefileTree(dir:'libs',include:['.jar']) testCompile'junit:junit:4.12' compile'com.android.support:appcompat-v7:23.1.1' *apt"org.androidannotations:androidannotations:$AAVersion" compile "org.androidannotations:androidannotations-api:$AAVersion" } apt{ arguments{ androidManifestFilevariant.outputs[0].processResources.manifestFile resourcePackageName"com.xxx.demo"(你專案的包名) } }
專案包名可在AndroidManifest.xml中的package確認。
在gradle/目錄下的build.gradle檔案(全域性gradle)中新增下面紅色粗體字配置:
buildscript{
repositories{
jcenter()
}
dependencies{
// replace with the current version of the Android plugin
classpath'com.android.tools.build1.5.0'
// replace with the current version of the android-apt plugin
classpath'com.neenbedankt.gradle.plugins:android-apt:1.4+'
}
}
allprojects{
repositories{
jcenter()
}
}
taskclean(type:Delete){
deleterootProject.buildDir
}
常用註解
元件註解
@EActivity(R.layout.acitvity_main) public class MainActivity extends Activity{ ... }
常用的有@EActivity、@EFragment、@EService等,進行註解了的元件才可使用其他註解功能。
資源引用的註解
@ViewById(R.id.tv_title)//此處可去掉括號部分 TextView tv_title; @ViewById ImageView img_menu; @ViewById RelativeLayout rl_light; @Extra String mTitle; @StringRes(R.string.hello) String hello;
簡單的控制元件繫結,資原始檔中的id與控制元件名一致即可不在註解後加上括號及對應控制元件的id,@Extra也是。其他地方需要宣告控制元件id的皆同理。
當View相關的成員變數初始化完畢後,會呼叫擁有@AfterViews註解的方法,可以在裡面初始化一些介面控制元件等。
事件繫結
@Click void img_back() { finish(); overridePendingTransition(R.anim.zoom_in, R.anim.zoom_out); }
還有@TextChange、@ItemClick、@SeekBarProgressChange等。
比較方便的一些註解
非同步執行緒與UI執行緒
@UiThread void doSomething(){ ... } @Background void doSomething(){ ... }
UI執行緒執行的方法加個@UiThread,非同步執行緒方法加個@Background,兩者的互動就是方法直接的相互呼叫,不用再使用Handler去傳送接收Message了。
廣播接收
@Receiver(actions = Utils.ACTION_BLE_DISCONNETED) public void bleDisconnect() { ... } @Receiver(actions = Utils.ACTION_UPDATE_WATER_SHOW) public void updateWaterShow(@Receiver.Extra(Utils.VALUE_ADDRESS) long water) { if (switchIsOpen) edt_water.setText(water + ""); }
註冊廣播接收,簡單搞定,不需要其他操作。相比下傳統的方式:
Private final BroadcastReceiver mGattUpdateReceiver = newBroadcastReceiver(){ @Override public void onReceive(Contextcontext,Intentintent){ final Stringaction=intent.getAction(); if(Stringaction.equal(Utils.ACTION_STOP_SCAN)){ ... } } }; private IntentFilter makeGattUpdateIntentFilter() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Utils.ACTION_STOP_SCAN); return intentFilter; } registerReceiver(mGattUpdateReceiver,makeGattUpdateIntentFilter()); unregisterReceiver(mGattUpdateReceiver);
瞬間簡潔了很多吧
SharedPreferences
直接使用@SharedPref可以簡單地使用SharedPreferences的功能。
首先,建一個類存放需要存取的資料:
@SharedPref(value=SharedPref.Scope.UNIQUE) public interface MyPrefs { @DefaultBoolean(true) boolean isFirstIn(); @DefaultString("") String ignoreVersion(); @DefaultInt(0) int shockLevel(); }
括號後面的是預設值,接下來就是簡單的使用了,首先在用到的類裡宣告:
@Pref MyPrefs_ myPrefs; boolean isFirstIn = myPrefs.isFirstIn().get(); myPrefs.isFirstIn().put(false);
使用起來特別方便,需要特別說明的是,這些資料要在一些不同的元件中同步共享,需在@SharedPref加上(value=SharedPref.Scope.UNIQUE),之前在activity和service中的資料總是對不上,找了好久才找到原因。
@EBen
想要在普通的類中也用上註解,只需在類名加上@EBean
@EBean public class MyClass { @UiThread void updateUI() { }
使用時,宣告:
@EActivity public class MyActivity extends Activity { @Bean MyClass myClass; }
有一些要注意的是:
@EBean註解的類,只能有一個構造方法,且這個構造方法必須無引數或者只有context引數。
在activity等元件內宣告瞭後,不用再去new這個類,否則會出錯。
總結
比較常用的一些方法及說明大概就是這些,當然Annotation還有不少東西,想要了解得更深入可以到文首的連結處檢視官方的使用說明,進一步瞭解!
本文連結:http://www.codeceo.com/article/android-annotation-usage.html
本文作者:碼農網 – 蘇耀東
[ 原創作品,轉載必須在正文中標註並保留原文連結和作者等資訊。]
相關文章
- Swagger2常用註解說明Swagger
- Spring的@Qualifier註解使用說明Spring
- SpringMVC的@ResponseBody註解說明SpringMVC
- goldengate常用函式使用說明Go函式
- Hibernate常用API以及使用說明API
- Spring原始碼系列:註解說明Spring原始碼
- 常用埠說明
- RedisTemplate常用集合使用說明-opsForZSet(六)Redis
- RedisTemplate常用集合使用說明-boundSetOps(九)Redis
- goldengate常用命令使用說明Go
- Memcached常用命令及使用說明
- mysql常用引數使用說明及查詢MySql
- springboot的註解的作用說明(全)Spring Boot
- Retrofit請求引數註解欄位說明
- 使用說明
- 阿里巴巴fastjson @JSONField 註解說明阿里ASTJSON
- LINUX常用檔案說明Linux
- SVN常用命令說明
- Spring MVC 常用註解的使用SpringMVC
- Spring IOC 常用註解與使用Spring
- WebApiClientCore使用說明WebAPIclient
- QLExpress使用說明Express
- postman 使用說明Postman
- Sqlite使用說明SQLite
- cmake使用說明
- certbot 使用說明
- linux常用核心引數說明Linux
- 2.--Goldgate常用引數說明Go
- Python常用函式及說明Python函式
- oracle 常用檢視 簡短說明Oracle
- 常用10個LINUX命令說明Linux
- Standby資料庫常用操作說明資料庫
- Lombok常用註解Lombok
- C++中map的使用詳解說明C++
- JPA EntityManager使用說明
- wc 命令使用說明
- oracle orapwd使用說明Oracle
- Jupiter 使用說明