AndroidTheme主题总结-创新互联

简介:主题决定了App的展示效果,我们可以为整个Application指定主题,也可以为Activity单独指定主题,甚至可以为各个控件如Button、TextView指定主题。本文对Android Theme的引用方式,版本分类进行列举,并对兼容包主题进行了归类、总结。期望达到对Theme有一个总体的清晰的认识。

创新互联公司于2013年成立,先为永济等服务建站,永济等地企业,进行企业商务咨询服务。为永济企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

一、Theme的来源分类

  1. 系统的主题

  2. 第三方库的主题

  3. 兼容包如support_v7.jar的主题

  4. 用户自定义的主题

二、引用方式

  • 系统主题: "@android:style/Theme.Holo.Light"

  • 兼容包:  AndroidManifests.xml中"@style/Theme.Appcompat",其他地方使用“Theme.Appcompat”即可

  • 自定义主题:"@style/AppTheme"

三、Theme的版本分类

  1. android:Theme        API 1 开始

  2. android:Theme.Holo      API 11(android3.0) 开始

  3. android:Theme.DeviceDefault   API 14(android4.0) 开始

  4. android:Theme.Material     API 21(android5.0) 开始

  5. Theme.AppCompat       兼容包AppCompat_v7中的主题

主题的不同版本:

Theme

Theme 深色主题

Theme.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes.xml

简介:许多主题的最终父类主题

Theme.Holo

Theme.Holo 深色主题

Theme.Holo.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes_holo.xml

简介:android 11 - 13 的默认主题

Theme.DeviceDefault

Theme.DeviceDefault 深色主题

Theme.DeviceDefault.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes_device_defaults.xml

简介:android 14以上的默认主题,在不同系统版本的设备上可以提供不同的样式

Theme.Material

Theme.Material 深色主题

Theme.Material.Light 浅色主题

位置:sdk/platforms/android-25/data/res/values/themes_material.xml

简介:Material Design的样式

Theme.Leanback

位置:sdk/platforms/android-25/data/res/values/themes_leanback.xml

简介:不知道是什么主题,暂且罗列在此

-------------------------------------------------------------------------------------------

AppCompat_v7兼容包主题细分:

(以'com.android.support:appcompat-v7:25.1.0'为例:)

  • AlertDialog.AppCompat      对话框深色

  • AlertDialog.AppCompat.Light    对话框浅色

  • Animation.AppCompat.Dialog    带动画效果的对话框

  • Animation.AppCompat.DropDownUp

  • Theme.AppCompat        作用于Activity层面以上的主题

  • Base、Platform        作为父类被继承的,一般不直接使用

  • RtlOverlay.Widget.AppCompat

  • RtlUnderlay.Widget.AppCompat

  • TextAppearance.AppCompat     文字样式相关

  • ThemeOverlay.AppCompat

  • Widget.AppCompat        控件相关的主题

-------------------------------------------------------------------------------------------

关于Theme.ApCompat兼容主题

主题间的继承关系:(以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在运行时会根据系统的版本选择对应的父类主题。大于21选择V21,大于22选择V22

例如:使用DatePicker、CalendarView等在不同版本手机上安装会展示不同的样式,在4.2的手机上展示holo的样式,在5.1的手机上展示material样式。

App的UI一致性:不少App为了保证在不同手机上的UI一致性,会给控件显式指定样式,为了向下兼容,通常会使用holo样式,并做一下调整。

-------------------------------------------------------------------------------------------

系统通常预定义的主题样式

Theme.AppCompat        深色主题

Theme.AppCompat.NoActionBar      没有ActionBar

Theme.AppCompat.Dialog      对话框适用

Theme.AppCompat.Dialog.Alert    警告框适用(根据屏幕决定宽度)

Theme.AppCompat.Dialog.MinWidth   对话框适用(根据内容决定宽度)

Theme.AppCompat.DialogWhenLarge   充满屏幕(继承自Theme.AppCompat,但没有扩展)

Theme.AppCompat.CompactMenu      看名字是用于Menu菜单。未验证

其他主题系统默认都会有上述几种类型的子主题,以此类推就好。

例如:浅色主题只需要将Theme.AppCompat 替换成 Theme.AppCompat.Light即可

-------------------------------------------------------------------------------------------

常见的样式属性摘记

android:windowFullscreen   隐藏状态栏

windowActionBar         是否显示ActionBar

windowNoTitle          是否显示TitleBar,经常和windowActionBar一起使用

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:AndroidTheme主题总结-创新互联
文章源于:http://scyanting.com/article/cdjcog.html