Android中Theme主题和Style样式使用介绍总结

一,Theme主题

1.1,Theme主题作用范围

Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)和Activity的主题;主题是不能应用在某一个单独的View中;或者说Theme是用来设置应用全局主题风格的,对整个应用或某个Activity存在影响。

1.2,Theme主题的定义

在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供;


Android系统提供的主题在:..\platforms\android-29\data\res\values

常见的系统主题:(来自https://blog.csdn.net/oudetu/article/details/78568436)

android:theme="@android:style/Theme.Dialog"   将一个Activity显示为能话框模式  

android:theme="@android:style/Theme.NoTitleBar"  不显示应用程序标题栏  

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"  不显示应用程序标题栏,并全屏

android:theme="Theme.Light"  背景为白色  

android:theme="Theme.Light.NoTitleBar"  白色背景并无标题栏  

android:theme="Theme.Light.NoTitleBar.Fullscreen"  白色背景,无标题栏,全屏

android:theme="Theme.Black"  背景黑色  

android:theme="Theme.Black.NoTitleBar"  黑色背景并无标题栏

android:theme="Theme.Black.NoTitleBar.Fullscreen"    黑色背景,无标题栏,全屏

android:theme="Theme.Wallpaper"  用系统桌面为应用程序背景  

android:theme="Theme.Wallpaper.NoTitleBar"  用系统桌面为应用程序背景,且无标题栏  

android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen"  用系统桌面为应用程序背景,无标题栏,全屏  

android:theme="Translucent"  半透明  

android:theme="Theme.Translucent.NoTitleBar" 半透明、无标题栏  

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" 半透明、无标题栏、全屏  

android:theme=”Theme.Panel” 半透明,无标题,全屏

android:theme=”Theme.Light.Panel”平板风格显示

常见主题集合中的item属性(来自:https://www.jianshu.com/p/06a3bbb7ce79)


    @color/white
    
    @color/white
    
    @color/colorAccent

    
    
    #00000000
    
    true
    
    true
    
    true
    
    true
    
    true
    
    #E91E63
    
    true

    
    @drawable/ic_launcher_background
    

    
    
    false

    
    #B0C4DE
    
    #E6E6FA
    
    #1C71A9
    
    #FFFFFF
    
    #C1C1C1
    
    #FF7F50
    
    #FF00FF
    
    #FFD700
    
    #1C71A9

    
    singleTop
    landscape

1.3,Theme主题的使用

在AndroidManifest.xml为应用或者Activity设置theme,通过android:theme = "@style/theme主题名"来引入自己的主题


         //自定义的Theme

在Java代码中设置theme,注意在Activity的onCreate方法中的setContentView(R.layout.activity_main)之前设置;

setTheme(R.style.AppTheme);

自定义属性 res/values/attrs.xml(通过:定义 赋值  使用)

1.4,系统Theme

系统Theme路径:SDK路径\platforms\android-26\data\res\values\themes.xml

二,style样式

2.1,style样式的使用范围

style样式是针对窗体元素级别的或者说View级别的,改变指定控件或者Layout的样式。

2.2,style作用

抽取一些共同的属性定义到style中,可以省略重复的属性代码。

2.3,定义

res/values/style.xml中新建

2.4,使用

在xml布局文件中

2.5,系统style

SDK路径\platforms\android-26\data\res\values\styles.xml

三,区别

从Theme和style的作用范围可以看出他们的区别;如果一个应用使用了theme,同时应用下的view也使用了style,那么当theme与样式style发生冲突时,style有效,因为style的优先级高于theme;在R.attr定义中以window开头的一些属性只对theme有效。

四,相同点

两者的定义相同、继承方式也相同,都是在res/values/style.xml中定义;继承方式:. 继承(只能继承自定义)和parent继承

五,相关

@符号:表明我们应用的资源是已经定义过并存在的,可以直接引用。
 ? 符号:表明我们引用的资源的值在当前的主题当中定义过。

你可能感兴趣的:(Android)