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

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

  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給咱們提供瞭如下這個註解:markdown

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

4個線程相關的註解:

  • BinderThread:指出被註解的方法應該只在binder線程中被調用。
  • MainThread:指出被註解的方法應該只在主線程中被調用。
  • WorkerThread:指出被註解的方法應該只在工做線程中被調用。
  • UiThread:指出被註解的方法應該只在UI線程中被調用。

關於這四個註解的差別,可參見stackoverflow的回答:Difference between MainThread, UiThread, WorkerThread, BinderThread in Android Annotation工具

其餘方法相關的註解:

  • 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:可註解一個類,方法,或變量,表示有更寬鬆的可見性,這樣它可以有更寬泛的可見性,使代碼能夠被測試。

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

相關文章
相關標籤/搜索