Android主题Theme的了解

Android主题Theme的了解

很多时候可能针对Android下主题的操作并不是很多,因为要实现一些效果,主题的实现方式只是其中一种,很多情况下都可以在代码或者布局中直接操作。但是对于Android5.0之后出来的很多新特性都很灵活的运用的主题,同时了解好主题的运用,也有利于简化代码,避免重复代码的出现。

主题Theme样式定义的位置

在AndroidManifest.xml文件中有,其中的@style/AppTheme是引用的res/values/styles.xml 中的主题样式。

也有可能是引用的 res/values-v11/styles.xml 或者 res/values-v14/styles.xml,这是根据运行此程序的手机系统来决定的,如果手机系统的API版本是11以上就是v11/styles.xml,以此类推。

在values/styles.xml中你会发现AppTheme的主题样式又是继承自AppBaseTheme,而AppBaseTheme的父主题就各有不同了,你也可以从这个位置来自己修改主题。

主题Theme的分类

1) 来自Android系统自带的
2) 来自兼容包的(比如v7兼容包)
3) 自定义主题

注意 :使用android系统中自带的主题要加上“android:”,如:android:Theme.Black
使用v7兼容包中的主题则不需要前缀,直接:Theme.AppCompat

Android系统自带主题
API 1:  1.0
android:Theme 根主题
android:Theme.Black 背景黑色
android:Theme.Light 背景白色
android:Theme.Wallpaper 以桌面墙纸为背景
android:Theme.Translucent 透明背景
android:Theme.Panel 平板风格
android:Theme.Dialog 对话框风格

API 11: 3.0
android:Theme.Holo Holo根主题
android:Theme.Holo.Black Holo黑主题
android:Theme.Holo.Light Holo白主题

API 14: 4.0
Theme.DeviceDefault 设备默认根主题
Theme.DeviceDefault.Black 设备默认黑主题
Theme.DeviceDefault.Light 设备默认白主题

API 21: 5.0 (网上常说的 Android Material Design 就是要用这种主题)
Theme.Material Material根主题
Theme.Material.Light Material白主题
兼容包v7中带的主题
Theme.AppCompat 兼容主题的根主题
Theme.AppCompat.Black 兼容主题的黑色主题
Theme.AppCompat.Light 兼容主题的白色主题

Theme.AppCompat主题是兼容主题的根主题, 意思就是说如果运行程序的手机API是21则就相当于是Material主题,如果运行程序的手机API是11则就相当于是Holo主题,以此类推。

兼容包v7会被Google公司不断升级: (不同API level google会推出新的兼容包,并向下兼容,所以用最新的兼容包是没问题的)

比如 appcompat-v7-21.0 表示兼容到 API 21 (说白了,就是API 21时推出来的兼容包)

比如 appcompat-v7-23.2 表示兼容到 API 23 

注意: v7-api版本号,同样是v7兼容包,会有API版本号不同的区别。

所有能应用于应用程序主题都是以“Theme.”开头,不是以“Theme.”开头的就不是应用程序主题,而是用于某些局部控件 比如“ThemeOverlay”主题,可用于 Toolbar 控件,这里不做深入分析了。 比如“TextAppearance”主题,可用于设置文字外观,这里不做深入分析了。 比如在v7中有很多以“Base”开头的主题,是一些父主题,不建议直接使用。

更多主题

以下都是指“包含”,比如包含“Dialog”表示对话框风格 比如Theme.Dialog、Theme.Holo.Dialog、Theme.Material.Dialog、Theme.AppCompat.Dialog都是对话框风格

Black 黑色风格
Light 光明风格
Dark 黑暗风格
DayNight 白昼风格
Wallpaper 墙纸为背景
Translucent 透明背景
Panel 平板风格
Dialog 对话框风格
NoTitleBar 没有TitleBar
NoActionBar 没有ActionBar
Fullscreen 全屏风格
MinWidth 对话框或者ActionBar的宽度根据内容变化,而不是充满全屏
WhenLarge 对话框充满全屏
TranslucentDecor 半透明风格
NoDisplay 不显示,也就是隐藏了
WithActionBar 在旧版主题上显示ActionBar

总结

这里只是简单归纳了Android中基本的主题样式,方便大家直观的了解Android中的主题。
很多主题在使用时会报错,原因有很多,比如窗体必须继承AppCompactActivity,或者要继承ActionBarActiivty,或者要继承FragmentActivity,或者需要手动指定宽高,或者需要提升最低API版本,或者需要更高版本的SDK,或者兼容包版本不对等原因。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值