概述
样式
是一个属性集合,用于指定单个 View 的外观。样式可以指定字体颜色、字号、背景颜色等属性。
主题背景
是应用于整个应用、Activity 或视图层次结构,而非仅仅应用于单个视图的属性集合。当您应用主题背景时,应用或 Activity 中的每个视图都会
应用其支持的每个主题背景属性。主题还可以将样式应用于非视图元素,例如状态栏和窗口背景。主题可以理解成样式的集合。
样式
定义样式
1 | <?xml version="1.0" encodeing="utf-8"?> |
在布局文件中使用样式
1 | <View style="@style/BaseToolBarLine" /> |
如果有多个module,需要注意样式的继承,以免出现,子module修改了某个同名的style,造成父module中的样式被修改。
主题
Android的主题发展历史
在Android3.0之前,Android的界面不论是从系统还是空间的主题都是按钮为白色,点击事件为黄色。现在看来很简陋
Holo主题:Android3.0 (API11)开始,Google推出了Holo主题(就是我们印象中的黑底白字蓝主色的主题)。在4.0google又发布了应用设计规范Android Design。
有了设计规范的指导,就有了更多的应用采用Holo主题。所以我们可以简单认为Android Design就是Holo主题。但是这种主题是适合移动设备,其他平台略显突兀。在4.0之前Android可以说是没有设计可言的,在4.0之后推出了Android Design,从此Android在设计上有了很大的改善,而在程序实现上相应的就是Holo风格,
所以你看到有类似 Theme.Holo.Light、 Theme.Holo.Light.DarkActionBar 就是4.0的设计风格,但是为了让4.0之前的版本也能有这种风格怎么办呢?
这个时候就不得不引用v7包了,所以对应的就有 Theme.AppCompat.Light、Theme.AppCompat.Light.DarkActionBar,如果你的程序最小支持的版本是
API14(即Android 4.0),那么可以不用考虑v7的兼容Material 主题:从Android5.0(API21)开始,Google又推出了材料设计语言Material Design,又叫Google Design。MD崇尚的就是图层扁平化,
所有图层像纸或者卡片一样重叠在一起,所以Android5.0就有了RecyclerView和CardView。图层之间有间隔,所以Android5.0中有了translation和elevation
两个属性。同时也规范了Android的运动元素,界面上的每个元素不是无故产生的,同时每个图层的产生和消失都有方向的约定,从哪里来就往哪里去,
这也是为什么Android 5.0中会有Ripple,Circular Receal,Activity TransitionAndroid在5.0版本推出了Material Design的概念,这是Android设计上又一大突破。对应的程序实现上就有Theme.Material.Light、
Theme.Material.Light.DarkActionBar等,但是这种风格只能应用在在5.0版本的手机,如果在5.0之前应用Material Design该怎么办呢?
同样的引用appcompat-v7包,这个时候的Theme.AppCompat.Light、Theme.AppCompat.Light.DarkActionBar就是相对应兼容的Material Design的Theme。
主题也跟样式一样是可以继承的,主题的根在themes.xml文件中。定义了<style name="Theme"></style>
。
1 | <style name="Theme"></style> |
常用属性
1 |
|