1. 程式人生 > >Android Support庫——support annotations

Android Support庫——support annotations

  Android Support庫是官方出的支援擴充套件庫,包含了豐富的元件、工具類等,通過在Android SDK Manager中勾選以下兩項來獲取到。
這裡寫圖片描述
  其中,Android Support Library下載的是對應的原始碼或jar包,在使用Eclipse時會從這裡拷貝出需要的檔案到專案中。而Android Support Repository下載的是這個support庫所對應的本地Maven庫。如果你是使用Gradle進行構建(如Android Studio),並通過遠端依賴的方式來使用support庫的話,則需要下載它,才能獲取到對應的依賴。
  如上面所說,Android support庫包含了眾多有用的類庫,包括目前基本在專案中都會用到的support-v4包。而本序列第一篇要講的是,除此support-v4庫之外,我們用得特別多的一個庫:android-support-annotations。
  由於我所使用的是Android Studio,所以對於Eclipse相關的知識在本篇及後續部落格中都會略過不談。

  android-support-annotations是Android官方提供的一個註解庫,它提供了許多有用的註解,這些註解的生命週期為原始碼時期,也就是在編譯之後則不再保留,通常用於輔助程式碼上的靜態檢查。
  在Gradle中引入這個庫的方式通常如下:

  compile 'com.android.support:support-annotations:23.1.1'

  但是如果你已經通過這種方式依賴了support-v4庫的話,則不必再顯式宣告依賴它,因為support-v4也依賴於這個庫,由於Gradle的傳遞依賴的特性,你的專案如果依賴了support-v4庫的話,也會依賴到這個註解庫。
  通過使用support-annotations的註解,我們可以限定一些變數、方法引數或者是方法返回值的範圍,這些註解涵蓋的使用範圍如下:
  

22個資源類註解:

  • AnimatorRes :指出一個integer的引數,成員變數,或方法返回值是一個animator資源的引用。
  • AnimRes:指出一個integer的引數,成員變數,或方法返回值是一個anim資源的引用。
  • AnyRes:指出一個integer的引數,成員變數,或方法返回值是一個任意資源型別的引用。
  • ArrayRes:指出一個integer的引數,成員變數,或方法返回值是一個array資源型別的引用。
  • AttrRes:指出一個integer的引數,成員變數,或方法返回值是一個attr資源的引用。
  • BoolRes:指出一個integer的引數,成員變數,或方法返回值是一個boolean
    資源的引用。
  • ColorRes:指出一個integer的引數,成員變數,或方法返回值是一個color資源的引用。
  • DimenRes:指出一個integer的引數,成員變數,或方法返回值是一個dimen資源的引用。
  • DrawableRes:指出一個integer的引數,成員變數,或方法返回值是一個drawable資源的引用(包括@mipmap)。
  • FractionRes:指出一個integer的引數,成員變數,或方法返回值是一個fraction資源的引用。
  • IdRes:指出一個integer的引數,成員變數,或方法返回值是一個id資源的引用。
  • IntegerRes:指出一個integer的引數,成員變數,或方法返回值是一個integer資源的引用。
  • InterpolatorRes:指出一個integer的引數,成員變數,或方法返回值是一個interpolator資源的引用。
  • LayoutRes:指出一個integer的引數,成員變數,或方法返回值是一個layout資源的引用。
  • MenuRes:指出一個integer的引數,成員變數,或方法返回值是一個menu資源的引用。
  • PluralsRes:指出一個integer的引數,成員變數,或方法返回值是一個plurals資源的引用。
  • RawRes:指出一個integer的引數,成員變數,或方法返回值是一個raw資源的引用。
  • StringRes:指出一個integer的引數,成員變數,或方法返回值是一個string資源的引用。
  • StyleableRes:指出一個integer的引數,成員變數,或方法返回值是一個styleable資源的引用。
  • StyleRes:指出一個integer的引數,成員變數,或方法返回值是一個style資源的引用。
  • TransitionRes:指出一個integer的引數,成員變數,或方法返回值是一個transition資源的引用。
  • XmlRes:指出一個integer的引數,成員變數,或方法返回值是一個xml資源的引用。

顏色註解:

  假如我們定義了一個方法用來設定顏色,但是因為表示顏色用的是int型別,這樣就會導致使用的人無法區分是要傳一個表示顏色的資源還是顏色值,對於這種情況,support-annotations給我們提供了以下這個註解:

  • ColorInt:指出一個被註解的元素,是一個int顏色值,表示的是AARRGGBB

4個執行緒相關的註解:

  • BinderThread:指出被註解的方法應該只在binder執行緒中被呼叫。
  • MainThread:指出被註解的方法應該只在主執行緒中被呼叫。
  • WorkerThread:指出被註解的方法應該只在工作執行緒中被呼叫。
  • UiThread:指出被註解的方法應該只在UI執行緒中被呼叫。

其他方法相關的註解:

  • CallSuper:指出一個方法如果被重寫了,它必須也被呼叫。比如Activity的生命週期方法onCreate方法等。
  • CheckResult:指出一個方法返回的結果通常是否為一個忽略的錯誤。比如刪除檔案:new File("xx").delete();
  • Keep:指出一個方法在被混淆的時候應該被保留。

取值範圍的註解:

  • FloatRange:指出一個被註解的元素應該是一個給定範圍內的float值或double值。比如:
    @FloatRange(from=0.0,to=1.0)
    public float getAlpha() {
        ...
    }
  • IntRange:指出一個被註解的元素應該是一個給定範圍內的int值或long值。
  • IntDef:指出一個int型別的元素,它表示的是一個邏輯上的型別,並且它的值必須是被明確宣告的常量之一。官方常使用這種方式使int型別代替enum型別。
  • StringDef:指出一個String型別的元素,它表示的是一個邏輯上的型別,並且它的值必須是被明確宣告的常量之一。

空指標檢查

  通常我們如果對一個變數進行主動的賦值為null,編譯器可能會進行可能引發空指標異常的警告,我們可以使用以下註解對這種行為進行控制。
- NonNull:指出一個引數,變數,或方法返回值永遠不可為null。
- Nullable:指出一個引數,變數,或方法返回值可能為null。

其他註解:

  • Size:表示一個被註解的元素應該有一個給定的大小或長度。
  • VisibleForTesting:可註解一個類,方法,或變數,表示有更寬鬆的可見性,這樣它能夠有更寬泛的可見性,使程式碼可以被測試。

  本文原創,轉載請註明出處。
  關於博文內容,如有遺誤錯訛,歡迎指出。如果你覺得寫得還可以,歡迎微信掃描左側欄底部二維碼進行打賞。