Android:隨筆——Android必須知道的註解Annotations
轉載請標明地址 QuincySx: http://www.jianshu.com/p/95b8ae42289c
先講一下這是什麼 這個算是一種註解輔助的庫,在我們合作開發的時候進行一定的約束,我這樣說大家可能不太理解,大家繼續往下看自行理解一下
這個庫就在我們的 v7 包裡面,基本每個專案都會引入,可能只是大家沒用到而已 如圖
今天我要寫的就是把這類裡面我自己比較常用的 一些註解 給大家分享一下
@NonNull
首先看一下 @NonNull 註解他的意思是引數不能為空的意思
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hello("sss"); //正常呼叫沒有問題
hello(null); //當這樣寫的寫的時候編譯器報了個警告
}
//一個普通的方法
public void hello(@NonNull String s) {
}
警告不能為空
@UiThread
這個註解的意思是該方法在主執行緒下執行
@UiThread
public void hello1() {
}
資原始檔類的註解
然後下面這些一塊說
@AnimatorRes @ColorRes @DimenRes @DrawableRes @LayoutRes 等等 像這樣以 Res 結尾的 註解表示這些引數 只能是資原始檔 下面用 @ColorRes 舉個例子
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setColor(12); //報錯 Expected resource of type color
setColor(R.color.colorPrimary); //不報錯沒有問題
}
//只允許設定資源裡面的顏色
public void setColor(@ColorRes int color) {
}
其他的與上面用法基本相同,因為引數都是 Int 型別的,傳的時候可能會有些困擾,這個庫就可以解決這些問題
@IntDef
光有 Android 自帶的 Int 型別過濾,這個註解可以進行自定義 示例:
public final static int LOADING = 10;
public final static int SUCCESS = 11;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setStatus(LOADING); //沒有問題
// 以下這兩種方式都會顯示錯誤
setStatus(10);
setStatus(1);
}
@IntDef({LOADING , SUCCESS })
public @interface TestStatus{
}
//只允許設定資源裡面的顏色
public void setStatus(@TestStatus int status) {
}
其他補充
下面再說一點題外話 對於Android的顏色 我也是看到 @ColorRes @ColorInt 這兩個註解,才研究了一下,之前對於設定背景的 Color 引數 都是 Int 型別,為什麼有的需要 getResources() 去取,有的則不需要,下面看原始碼
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setColorInt(Color.BLUE); //直接傳 Java 裡面的顏色
setColorInt(Color.parseColor("#cccccc")); //把 HTML 樣式的顏色轉換過來使用
setColorInt(0XFFCCCCCC); // 這種方式要簡單說一下了 前兩位 0X 是固定的,小寫也沒有關係,然後是後面兩位 FF 這是表示顏色透明度,後面 6 位代表顏色值,他與上面的寫法效果是一樣的
setColor(R.color.colorPrimary); //使用資原始檔裡面的顏色
}
public void setColor(@ColorRes int color) {
//用資原始檔裡面的顏色需要對顏色進行轉換一下,在對控制元件進行使用
mTextView.setBackgroundColor(getResources().getColor(color));
}
public void setColorInt(@ColorInt int color) {
//對顏色的值可以直接進行使用
mTextView.setBackgroundColor(color);
}
總結
很簡單的知識點,但是使用頻率還是很高的
本人技術水平有限,如有錯誤還請指出
本文已在版權印備案,如需轉載請訪問版權印。29666966
相關文章
- 細說 Android Annotations 註解框架Android框架
- 高效Android開發者必須知道的4個工具Android
- Android註解使用之使用Support Annotations註解優化程式碼Android優化
- Java註解在Android中必須學習的細節知識JavaAndroid
- iOS程式設計師必須知道的Android要點iOS程式設計師Android
- 每個 Android 開發者必須知道的資源集錦Android
- Android Support Annotations 使用詳解Android
- 「Android」Android開發你需要知道的註解(Annotation)Android
- 作為Android開發你必須知道的Java反射機制AndroidJava反射
- 每個Android開發者必須知道的記憶體管理知識Android記憶體
- is 和 as 讀你必須知道的.net 筆記筆記
- Android進階知識樹——Android 多程式、Binder 你必須知道的一切Android
- 如何玩轉Android物聯網開發,這些必須知道Android
- 你必須知道的 SmartSql !SQL
- 每個 Android 開發者必須知道的訊息機制問題總結Android
- Android隨筆01Android
- Java必須掌握的Spring常用註解JavaSpring
- using 你知道多少?你必須知道的.NET讀書筆記筆記
- New的幾個問題 詳解 --讀你必須知道的.NET筆記筆記
- 深入淺出Android Support AnnotationsAndroid
- 使用 iBatis (MyBatis)的元註解AnnotationsMyBatis
- 作為 Android 開發者必須瞭解的 Gradle 知識 (譯)AndroidGradle
- Android基礎 你必須瞭解的應用檔案目錄Android
- Android基礎 和伺服器互動你必須知道的json處理Android伺服器JSON
- 開發第一個Android應用前你必須知道的5件事Android
- Android Application物件必須掌握的七點AndroidAPP物件
- ?你必須知道的Java泛型Java泛型
- 前端必須知道的除錯工具前端除錯
- Android 開發者和設計師必須瞭解的顏色知識Android
- Android:隨筆——取代findViewByIdAndroidView
- Android 之 Notification 必須掌握知識點Android
- Android 中註解的使用Android
- Android 關於記憶體洩露,你必須瞭解的東西Android記憶體洩露
- 你必須知道的HTTP基本概念HTTP
- 面試前必須知道的MySQL命令【explain】面試MySqlAI
- 關於索引必須知道的知識索引
- 你必須要知道的babel二三事Babel
- JavaScript 面試必須知道的 10 個概念JavaScript面試