Android样式和主题(二):系统有哪些主题
生活随笔
收集整理的這篇文章主要介紹了
Android样式和主题(二):系统有哪些主题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android系統自帶Theme
簡介
- Android系統在4.0之前沒有設計可言,打開APP就是黑乎乎一片,這是最原始的Theme主題
- 在Android4.0有了Holo主題,Holo本身繼承于Theme主題,而Holo.NoActionBar ,Holo.Dialog,Holo.Light這些都是衍生自Holo主題
- 在Android5.0有了Material主題,俗稱材料主題,也是繼承于Theme主題
Theme源碼簡析
以Android6.0為例,查看系統源碼這個位置 ?:frameworks/base/core/res/res/value/,發現有如下幾個Theme文件。
截取部分theme.xml:
<style name="Theme"><item name="isLightTheme">false</item><item name="colorForeground">@color/bright_foreground_dark</item><item name="colorForegroundInverse">@color/bright_foreground_dark_inverse</item><item name="colorBackground">@color/background_dark</item><item name="colorBackgroundFloating">?attr/colorBackground</item><item name="colorBackgroundCacheHint">?attr/colorBackground</item> 復制代碼截取部分theme_metarial.xml
<style name="Theme.Material"><item name="colorForeground">@color/foreground_material_dark</item><item name="colorForegroundInverse">@color/foreground_material_light</item><item name="colorBackground">@color/background_material_dark</item><item name="colorBackgroundFloating">@color/background_floating_material_dark</item><item name="colorBackgroundCacheHint">@color/background_cache_hint_selector_material_dark</item><item name="disabledAlpha">@dimen/disabled_alpha_material_dark</item><item name="backgroundDimAmount">0.6</item> 復制代碼- themes.xml:低版本的主題,目標API level一般為10或以下
- themes_holo.xml:從API level 11添加的主題
- themes_device_defaults.xml:從API level 14添加的主題
- themes_material.xml:從API level 21添加的主題
- themes_micro.xml:用于Android Wear的主題
- themes_leanback.xml:用于Android TV的主題
常見Theme效果比較
下面直觀感受下各種Theme的區別
-
測試設備:一加3T ?系統版本:7.0
-
測試APP:一個Activity放一個Button,點擊出現AlertDialog
-
android:Theme
-?android:Theme.Holo.Light
-?android:Theme.DeviceDefault.Light
-?android:Theme.Material.Light
如果把主題設為Theme.Material,然后minsdkVersion改為19,安裝到Android4.4的設備會是什么效果
- 測試設備:Htc one ?系統版本:android 4.4
可以看出Material在Android4.4系統上無法使用,而是自動替換成為Holo主題,那么怎么在Android5.0之前的設備使用Material主題呢?
兼容包AppCompat
appcompat-v7是v7-support庫下面一個子庫,此庫主要是對ActiinBar支持,還包含對 Material Design 用戶界面實現的支持。
- 在build.gradle添加compile 'com.android.support:appcompat-v7:23.2.1'
- 修改主題為Theme.AppCompat.Light
- 修改Activity為AppCompatActivty
- 測試設備: htc one 系統版本:4.4
- 可以看出在4.4的設備使用appcompat-v7這個兼容包,也實現了類似Material的主題風格,但是仔細對比下這個Dialog明顯還是Holo風格的。就是說appcompat-v7只是在對Activity主界面風格進行了Material化,而一些控件并沒有變化。
- 要想使我們的app(不管運行在5.0之前還是5.0以后)擁有Material的精髓,包括所有Material控件,動畫,還得使用另一個兼容包Android Design Support Library 使用方法:在build.gradle配置?compile 'com.android.support:design:23.2.0' ,這個庫依賴于Support v4 和AppCompat Support,添加了這個庫就默認實現了這兩個庫。
下一篇:介紹Material中控件,動畫的使用
總結
以上是生活随笔為你收集整理的Android样式和主题(二):系统有哪些主题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker技术笔记:Docker入门浅
- 下一篇: ProxySQL Cluster 概述