Android:隨筆——Android必須知道的註解Annotations
轉載請標明地址 QuincySx: http://www.jianshu.com/p/95b8ae42289c
先講一下這是什麼 這個算是一種註解輔助的庫,在我們合作開發的時候進行一定的約束,我這樣說大家可能不太理解,大家繼續往下看自行理解一下
這個庫就在我們的 v7 包裡面,基本每個專案都會引入,可能只是大家沒用到而已 如圖
![2427349-afe4134ce652ec16.png](https://i.iter01.com/images/ce32c2ade8cb7fe0fd93ce573b48e3a23cf32d9b1e530d8ffb817c77ddc51592.png)
今天我要寫的就是把這類裡面我自己比較常用的 一些註解 給大家分享一下
@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) {
}
![2427349-f820cc6746c14e4c.png](https://i.iter01.com/images/a61d183b0b87574fc105c79e5d8ff65142ef2d9c8c5d7408786b2ba802b76d92.png)
警告不能為空
@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框架
- Java註解在Android中必須學習的細節知識JavaAndroid
- Android進階知識樹——Android 多程式、Binder 你必須知道的一切Android
- 如何玩轉Android物聯網開發,這些必須知道Android
- is 和 as 讀你必須知道的.net 筆記筆記
- Java必須掌握的Spring常用註解JavaSpring
- using 你知道多少?你必須知道的.NET讀書筆記筆記
- Android 之 Notification 必須掌握知識點Android
- 你必須知道的 SmartSql !SQL
- New的幾個問題 詳解 --讀你必須知道的.NET筆記筆記
- Android伍什小隨筆(一)Android
- Android 隨筆—— ConstraintLayout 效率爆表的技巧AndroidAI
- Android原生註解整理Android
- 淺談Android下的註解Android
- 不想被面試官虐?Android知識彙總,你必須知道的Handler八大問題!面試Android
- 作為Android開發你必須明白的Gradle基礎AndroidGradle
- Android 隨筆—— ConstraintLayout 實戰經驗AndroidAI
- Android 隨筆—— 最強大的佈局 ConstraintLayoutAndroidAI
- ?你必須知道的Java泛型Java泛型
- 前端必須知道的除錯工具前端除錯
- Android伍什小隨筆(二)- 更新中Android
- Java程式設計師必須掌握的5個註解!Java程式設計師
- Android 9.0 BufferQueue中的BufferSlot/BufferState註解Android
- Android 註解系列之Annotation(二)Android
- 你必須知道的HTTP基本概念HTTP
- 人世間必須知道的做人道理
- 你必須要知道的babel二三事Babel
- 關於索引必須知道的知識索引
- Google對Android的強硬態度:必須嚴格控制開源!GoAndroid
- Java 註解及其在 Android 中的應用JavaAndroid
- Android 註解系列之APT工具(三)AndroidAPT
- Android MVVM探索(二) - DataBiding常用註解AndroidMVVM
- 13.Android之註解問題Android
- [獻醜了!] Android AOP註解GoodAtAndroidGo
- 面試前必須知道的MySQL命令【explain】面試MySqlAI
- 學習Kali Linux必須知道的幾點Linux
- 寫chrome外掛前必須要知道的Chrome
- 3款你必須知道的爬蟲工具爬蟲
- .Net Core 你必須知道的source-generators