Android 中的Theme和Style

一,Android 中各种XML文件的作用
1、arrays.xml     定义数组
2、colors.xml 定义颜色
3、dimens.xml   定义尺寸
4、strings.xml 定义字符串
5、styles.xml 定义样式
6、phoinix_popumenu_style.xml     selector选择
7、menu 菜单
8、drawable 图片及自定义控件资源如: white_background.xml  白色圆角矩形做背景
9、anim  旋转动画资源
Android 中各种XML文件的作用
 
二,API文档Android 包介绍
包含应用程序在平台上使用的各种资源,并且定义了应用程序使用系统功能的权限,在这个包中,只需要经常查看Manifest.permission和R.style两个类
Manifest类,继承自java . lang . object,含有一个Public 构造方法:Manifest();和两个嵌套类:Manifest.permission Manifest.permission_group
Manifest.permission:对权限进行声明,如:public static final String SEND_SMS
Manifest.permission_group :对手机固有功能进行声明,如:public static final String PHONE;
R:继承自java . lang . object,含有一个构造方法和以下22个嵌套类:
R.anim:对动画相关常量进行声明     R.animator     :声明了淡入,淡出两个常量     R.array     R.attr     :声明了资源固有属性      R.bool:仅有一个     R.bool()构造函数       R.color:声明了系统默认的颜色     R.dimen:声明了应用程序图标的尺寸,dialog和通知的尺寸        R.drawable    :对控件资源进行了声明     R.fraction     R.id:定义了可访问性控件标识符     R.integer     R.interpolator     R.layout     R.menu     R.mipmap     R.plurals     R.raw        R.string:字符串    R.style:定义了主题和样式    R.styleable:定义了可变的样式   R.transition     R.xml
在文档里去探究这实在是没什么意义,可以使用这些R类资源,但最好还是用自己应用程序的资源文件,特别是 R.drawable资源,因为平台不同版本之间可能不同,唯一可直接用的是style资源。

三,Android的主题Theme和样式style
这里,主题Theme,是宏观上的风格,是装扮全局的;样式style:是对细节的样式,对具体部件的。
在R.style,很明显可以看出三大块:TextAppearance打头的,为文本外观样式;Theme打头的,为主题;Widget打头的,为小部件样式。和少数几个控件。同时还可以注意三个关键词段:DeviceDefault,Holo,Material
关于Theme,Theme_Material,Material主题;Theme_DeviceDefault,target API在14及以上的默认主题;Theme_Holo,target API在11--13的默认主题;Theme,是target API在10及以下的默认主题;其他的是派生子主题。如果从高API开始就是用默认主题,在不同的设备上显示就可能不一样,所以,需要在清单文件里显示指出,如<application android:theme="@android:style/Theme.Holo">
Theme_Holo是3.0开始有的,后来Android 4.0发布同时也发布了指导性的应用设计规范《Android Design》 ,有了设计规范的指导,就有了更多应用采用了Holo Theme,尤其国外的应用。Holo Theme的主要特点是轻快的颜色、适当的阴影、卡片化布局、方角矩形。Android的Holo ThemeAndroid Design 与 Holo Theme。DeviceDefault主题(继承自材料主题),实际上就是在Holo主题上定制主题(For厂商)。透过下面Theme_Holo及其派生主题解释,另外的主题意思也不难明白
1、Theme_Holo
意思为:New Honeycomb全屏显示样式,默认是黑背景。
1.1、Theme_Holo_Dialog
意思为:将activity显示成对话框的样式,需自定义大小,否则View可能显示不全。
1.1.1、Theme_Holo_Dialog_MinWidth
意思为:将activity显示成对话框的样式,显示最小状态时,
1.1.2、Theme_Holo_DialogWhenLarge
意思为:将activity显示成对话框的样式,显示最大状态时,
1.1.3、Theme_Holo_DialogWhenLarge_NoActionBar
意思为:将activity显示成对话框的样式,显示最大状态时,且没有action bar
1.1.4、Theme_Holo_Dialog_NoActionBar
意思为:将activity显示成对话框的样式,且没有action bar,默认状态 ,需自定义大小,否则View可能显示不全
1.1.5、Theme_Holo_Dialog_NoActionBar_MinWidth
意思为:将activity显示成对话框的样式,且没有action bar,显示最小状态时
1.2、Theme_Holo_InputMethod
类似于panel;需自定义大小
1.3、Theme_Holo_NoActionBar
意思为: 默认状态下,没有action bar的样式。
1.3.1、Theme_Holo_NoActionBar_Fullscreen
意思为: 默认状态下,没有action bar且全屏的样式。
1.4、Theme_Holo_Wallpaper
意思为: 使用墙纸做为样式背景,默认状态下。
1.4.1、Theme_Holo_Wallpaper_NoActionBar
意思为: 使用墙纸做为样式背景,且没有action bar。
1.5、Theme_Holo_Panel
意思为: 默认将一个activity显示成一个对话框样式,区别于对话框,这个没有外边框,没有任何样式元素只有一个空的矩形框。
2、Theme_Holo_Light
意思为: 默认样式,区别于黑背景,这个属于亮背景。
2.1、Theme_Holo_Light_Dialog
意思为: 默认将一个activity显示成一个对话框样式,区别于黑背景,这个属于亮背景。
2.1.1、Theme_Holo_Light_Dialog_MinWidth
意思为: 默认将一个activity显示成一个对话框样式,区别于黑背景,这个属于亮背景,显示最小状态时。
2.1.2、Theme_Holo_Light_DialogWhenLarge
意思为: 默认将一个activity显示成一个对话框样式,区别于黑背景,这个属于亮背景,显示最大状态时。
2.1.3、Theme_Holo_Light_DialogWhenLarge_NoActionBar
意思为: 默认将一个activity显示成一个对话框样式,区别于黑背景,这个属于亮背景,显示最大状态,且没有action bar时。
2.1.4、Theme_Holo_Light_Dialog_NoActionBar
意思为: 默认将一个activity显示成一个对话框样式,区别于黑背景,这个属于亮背景,且没有action bar时。需自定义大小
2.1.5、Theme_Holo_Light_Dialog_NoActionBar_MinWidth
意思为: 默认将一个activity显示成一个对话框样式,区别于黑背景,这个属于亮背景,且没有action bar时,显示最小状态时。
2.2、Theme_Holo_Light_Panel
意思为: 默认将一个activity显示成一个对话框样式,区别于对话框,这个没有外边框,没有任何样式元素只有一个空的矩形框,区别于黑背景,这个属于亮背景。需自定义大小
3、Theme_NoTitleBar_OverlayActionModes
意思为:( 这里我按照api翻译为:没有标题栏,但状态栏将覆盖应用内容,而不是将应用内容挤下去为自己腾出空间。)不太明白哪里会用到此主题。留待以后去解决
4、Theme_WithActionBar
意思为:显示action Bar的主题样式
Theme Holo

四,从源码看Style和Theme
UI设计,是从Style和Theme开始,使用和自定义View,处理事件响应。从源头弄明白Style和Theme是很有必要的。
1、位置
在Android的frameworks/base/core/res/res/values目录下有一下几个文件:
这几个定义了系统的theme:
themes.xml
themes_device_defaults.xml
themes_holo.xml
themes_leanback.xml
themes_material.xml
themes_micro.xml
这几个文件定义了系统的style:
styles.xml
styles_device_defaults.xml
styles_holo.xml
styles_leanback.xml
styles_material.xml
styles_micro.xml

其中micro是为手表的,leanback是为电视的
2,Theme.xml
对theme的几个文件浏览一下,结构大体相同,第一个<style name="Theme">是最长的一段,下面的都是直接或间接派生出来的。,以Theme为例,可以看出,一个完整的主题应该定义了:
颜色,字体,按钮,List,Window,Dialog,Panel,滚动条(Scrollbar),文字选中(Text selection),Widget样式(Widget Style),Preference样式(Preference Style),Search控件样式( Search Style),ActionBar样式( Action bar Style),其它样式。
3,我们可以干什么:
自定义主题,最简单的就是仿照theme.xml中派生主题的方式派生我们想要的主题格式
修改控件样式,变成我们想要的样式。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值