簡(jiǎn)介:主題決定了App的展示效果,我們可以為整個(gè)Application指定主題,也可以為Activity單獨(dú)指定主題,甚至可以為各個(gè)控件如Button、TextView指定主題。本文對(duì)Android Theme的引用方式,版本分類進(jìn)行列舉,并對(duì)兼容包主題進(jìn)行了歸類、總結(jié)。期望達(dá)到對(duì)Theme有一個(gè)總體的清晰的認(rèn)識(shí)。
成都創(chuàng)新互聯(lián)是少有的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、營(yíng)銷型企業(yè)網(wǎng)站、成都微信小程序、手機(jī)APP,開(kāi)發(fā)、制作、設(shè)計(jì)、友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,于2013年開(kāi)始,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪客多年來(lái)深受用戶好評(píng)
一、Theme的來(lái)源分類
系統(tǒng)的主題
第三方庫(kù)的主題
兼容包如support_v7.jar的主題
用戶自定義的主題
二、引用方式
系統(tǒng)主題: "@android:style/Theme.Holo.Light"
兼容包: AndroidManifests.xml中"@style/Theme.Appcompat",其他地方使用“Theme.Appcompat”即可
自定義主題:"@style/AppTheme"
三、Theme的版本分類
android:Theme API 1 開(kāi)始
android:Theme.Holo API 11(android3.0) 開(kāi)始
android:Theme.DeviceDefault API 14(android4.0) 開(kāi)始
android:Theme.Material API 21(android5.0) 開(kāi)始
Theme.AppCompat 兼容包AppCompat_v7中的主題
主題的不同版本:
Theme
Theme 深色主題
Theme.Light 淺色主題
位置:sdk/platforms/android-25/data/res/values/themes.xml
簡(jiǎn)介:許多主題的最終父類主題
Theme.Holo
Theme.Holo 深色主題
Theme.Holo.Light 淺色主題
位置:sdk/platforms/android-25/data/res/values/themes_holo.xml
簡(jiǎn)介:android 11 - 13 的默認(rèn)主題
Theme.DeviceDefault
Theme.DeviceDefault 深色主題
Theme.DeviceDefault.Light 淺色主題
位置:sdk/platforms/android-25/data/res/values/themes_device_defaults.xml
簡(jiǎn)介:android 14以上的默認(rèn)主題,在不同系統(tǒng)版本的設(shè)備上可以提供不同的樣式
Theme.Material
Theme.Material 深色主題
Theme.Material.Light 淺色主題
位置:sdk/platforms/android-25/data/res/values/themes_material.xml
簡(jiǎn)介:Material Design的樣式
Theme.Leanback
位置:sdk/platforms/android-25/data/res/values/themes_leanback.xml
簡(jiǎn)介:不知道是什么主題,暫且羅列在此
-------------------------------------------------------------------------------------------
AppCompat_v7兼容包主題細(xì)分:
(以'com.android.support:appcompat-v7:25.1.0'為例:)
AlertDialog.AppCompat 對(duì)話框深色
AlertDialog.AppCompat.Light 對(duì)話框淺色
Animation.AppCompat.Dialog 帶動(dòng)畫效果的對(duì)話框
Animation.AppCompat.DropDownUp
Theme.AppCompat 作用于Activity層面以上的主題
Base、Platform 作為父類被繼承的,一般不直接使用
RtlOverlay.Widget.AppCompat
RtlUnderlay.Widget.AppCompat
TextAppearance.AppCompat 文字樣式相關(guān)
ThemeOverlay.AppCompat
Widget.AppCompat 控件相關(guān)的主題
-------------------------------------------------------------------------------------------
關(guān)于Theme.ApCompat兼容主題
主題間的繼承關(guān)系:(以Theme.AppCompat為例)
Theme.AppCompat ——> Base.Theme.AppCompat
Base.Theme.AppCompat ——> Base.V*.Theme.AppCompat (*可能是7、21、23等)
Base.V*.Theme.AppCompat ——> Platform.AppCompat
Platform.AppCompat ——> android:Theme
其中第二步:版本25.1.0有四種選擇:Base、Base.V21、Base.V22、Base.V23。(更早的版本還有V7、V11等)
兼容:App在運(yùn)行時(shí)會(huì)根據(jù)系統(tǒng)的版本選擇對(duì)應(yīng)的父類主題。大于21選擇V21,大于22選擇V22
例如:使用DatePicker、CalendarView等在不同版本手機(jī)上安裝會(huì)展示不同的樣式,在4.2的手機(jī)上展示holo的樣式,在5.1的手機(jī)上展示material樣式。
App的UI一致性:不少App為了保證在不同手機(jī)上的UI一致性,會(huì)給控件顯式指定樣式,為了向下兼容,通常會(huì)使用holo樣式,并做一下調(diào)整。
-------------------------------------------------------------------------------------------
系統(tǒng)通常預(yù)定義的主題樣式
Theme.AppCompat 深色主題
Theme.AppCompat.NoActionBar 沒(méi)有ActionBar
Theme.AppCompat.Dialog 對(duì)話框適用
Theme.AppCompat.Dialog.Alert 警告框適用(根據(jù)屏幕決定寬度)
Theme.AppCompat.Dialog.MinWidth 對(duì)話框適用(根據(jù)內(nèi)容決定寬度)
Theme.AppCompat.DialogWhenLarge 充滿屏幕(繼承自Theme.AppCompat,但沒(méi)有擴(kuò)展)
Theme.AppCompat.CompactMenu 看名字是用于Menu菜單。未驗(yàn)證
其他主題系統(tǒng)默認(rèn)都會(huì)有上述幾種類型的子主題,以此類推就好。
例如:淺色主題只需要將Theme.AppCompat 替換成 Theme.AppCompat.Light即可
-------------------------------------------------------------------------------------------
常見(jiàn)的樣式屬性摘記
android:windowFullscreen 隱藏狀態(tài)欄
windowActionBar 是否顯示ActionBar
windowNoTitle 是否顯示TitleBar,經(jīng)常和windowActionBar一起使用
網(wǎng)頁(yè)題目:AndroidTheme主題總結(jié)
標(biāo)題來(lái)源:http://chinadenli.net/article2/poococ.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、Google、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)