Android之Theme.AppCompat.Light 繼承關系圖及Theme定制思路
轉自:http://enlangtech.com/?p=356
Android應用程序的主題(Theme)定制真是個頭疼的問題,不同的Android版本導致分支眾多,主題的屬性(Property)又很多并且沒有文檔說明,這樣的情況下如果沒有一個清晰的關系圖,很容易不知道從哪里下手去定制。Android Lollipop發布后,Google更新了Support Library V7,用于兼容Pre-Lollipop的設備,使其可以使用部分Material Design的特性。Material Design是Google力推的新一代跨平臺界面設計標準,得到了設計界的廣泛認可, Android應用向這個設計標準遷移已不可避免。因此從現在開始,建議新開發的Android應用程序把父主題設為Theme.AppCompat.Light或者其子主題,再根據不同的版本進行對應的定制化。廢話不說了,下面就是主題的關系圖(用類圖表示):
關系圖中的屬性主要集中在ActionBar、文字顏色、應用的基本配色等,其它的需要的屬性基本上是可以根據關系找到的。從圖中可以看出,不同版本的主題屬性是有一些差異的,因此對某些屬性定制而言,在你的應用中也需要對版本進行區分,具體來說就是:除了默認的values目錄外,你還需要對不同版本建立不同的values目錄,根據繼承關系,你起碼應該建立values-v11、values-v14、values-v21這三個目錄,在這些目錄中都放一個styles.xml,里面是你應用程序的主題,這個主題都應該繼承自Theme.AppComapt.Light及其子主題(對于所有版本一樣的屬性可以在values的目錄的styles.xml中建立1個根主題,便于不同版本的主題進行重用),那么沒有版本差異的屬性設置就修改values目錄中styles.xml,有版本差異的主題就修改對應版本的values目錄中的styles.xml,這樣就可以很好地維持了版本的兼容性,又可以使用最新版Lollipop的主題特性。