一,Theme主题

1.1,Theme主题作用范围

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

1.2,Theme主题的定义

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

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
      <!-- Customize your theme here. -->
      <item name="colorPrimary">@color/colorPrimary</item>
      <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
      <item name="colorAccent">@color/colorAccent</item>
</style>

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

<!-- 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色 -->
    <item name="colorPrimary">@color/white</item>
    <!-- 应用的主要暗色调,statusBarColor 默认使用该颜色 -->
    <item name="colorPrimaryDark">@color/white</item>
    <!-- 一般控件的选中效果默认采用该颜色,如 CheckBox,RadioButton,SwitchCompat,ProcessBar等-->
    <item name="colorAccent">@color/colorAccent</item>
    <!-- 状态栏、顶部导航栏 相关-->
    <!-- status bar color -->
    <item name="android:statusBarColor">#00000000</item>
    <!-- activity 是否能在status bar 底部绘制 -->
    <item name="android:windowOverscan">true</item>
    <!-- 让status bar透明,相当于statusBarColor=transparent + windowOverscan=true -->
    <item name="android:windowTranslucentStatus">true</item>
    <!-- 改变status bar 文字颜色, true黑色, false白色,API23可用-->
    <item name="android:windowLightStatusBar">true</item>
    <!-- 全屏显示,隐藏状态栏、导航栏、底部导航栏 -->
    <item name="android:windowFullscreen">true</item>
    <!-- hide title bar -->
    <item name="windowNoTitle">true</item>
    <!-- 底部虚拟导航栏颜色 -->
    <item name="android:navigationBarColor">#E91E63</item>
    <!-- 让底部导航栏变半透明灰色,覆盖在Activity之上(默认false,activity会居于底部导航栏顶部),如果设为true,navigationBarColor 失效 -->
    <item name="android:windowTranslucentNavigation">true</item>
    <!-- WindowBackground,可以设置@drawable,颜色引用(@color),不能设置颜色值(#fffffff),
    Window区域说明:Window涵盖整个屏幕显示区域,包括StatusBar的区域。当windowOverscan=false时,window的区域比Activity多出StatusBar,当windowOverscan=true时,window区域与Activity相同-->
    <item name="android:windowBackground">@drawable/ic_launcher_background</item>
    <!--<item name="android:windowBackground">@color/light_purple</item>-->
    <!-- 控件相关 -->
    <!-- button 文字是否全部大写(系统默认开)-->
    <item name="android:textAllCaps">false</item>
    <!-- 默认 Button,TextView的文字颜色 -->
    <item name="android:textColor">#B0C4DE</item>
    <!-- 默认 EditView 输入框字体的颜色 -->
    <item name="android:editTextColor">#E6E6FA</item>
    <!-- RadioButton checkbox等控件的文字 -->
    <item name="android:textColorPrimaryDisableOnly">#1C71A9</item>
    <!-- 应用的主要文字颜色,actionBar的标题文字默认使用该颜色 -->
    <item name="android:textColorPrimary">#FFFFFF</item>
    <!-- 辅助的文字颜色,一般比textColorPrimary的颜色弱一点,用于一些弱化的表示 -->
    <item name="android:textColorSecondary">#C1C1C1</item>
    <!-- 控件选中时的颜色,默认使用colorAccent -->
    <item name="android:colorControlActivated">#FF7F50</item>
    <!-- 控件按压时的色调-->
    <item name="android:colorControlHighlight">#FF00FF</item>
    <!-- CheckBox,RadioButton,SwitchCompat等默认状态的颜色 -->
    <item name="android:colorControlNormal">#FFD700</item>
    <!-- 默认按钮的背景颜色 -->
    <item name="android:colorButtonNormal">#1C71A9</item>
    <!-- 【无效】 在theme中设置Activity的属性无效, 请到AndroidManifest中Activity标签下设置 -->
    <item name="android:launchMode">singleTop</item>
    <item name="android:screenOrientation">landscape</item>

1.3,Theme主题的使用

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

<application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:theme="@style/AppTheme.Launcher"> //自定义的Theme
</application>

在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中新建<style>标签,为此标签设置name属性;如下

    <style name="myButtonStyle">
        <item name="android:height">?attr/myHeight</item>
        <item name="android:textColor">#0ff0f0</item>      <!--字体颜色-->
        <item name="android:textSize">15sp</item>          <!--字体大小-->
        <item name="android:layout_height">200dp</item>     <!--控件高度-->
        <item name="android:layout_width">match_parent</item>  <!--控件宽度-->
        <item name="android:background">#ff0000</item>         <!--背景色-->
    </style>

2.4,使用

在xml布局文件中

<Button
        android:id="@+id/btn_style_test"
        style="@style/myButtonStyle"/>

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继承

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

一,Theme主题1.1,Theme主题作用范围Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)或者Activity的主题;主题是不能应用在某一个单独的View中;1.2,Theme主题的定义在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供;&lt;!-- Base application ...
1、Intent 只能包含一个Action,可以包含多个Category; 2、清单文件 一个Activity可配置多个IntentFilter, 一个IntentFilter可包含多个Action,多个Category,但是只能包含一个data; 3、Intent若含有Action,IntentFilter 包含多个Action,只要Intent 的Action与IntentFilter
1. 主题 主题 是包含一种或多种的格式化属性集合,在程序 调用 主题 资源可改变窗体的 样式 ,对整个应用或某个Activity存在全局性影响。   定义位置:res/values目录下的 style s.xml文件 < style ></ style >:定义 主题 <item></item>:设置 主题 样式 示例(定义一个名为App Theme 主题 )               < style name=App Theme parent = Theme .AppCompat.Light.DarkActionBar> style .xml基本参数 介绍 : < style name="App Theme " parent =" Theme .AppCompat.Light.NoActionBar"> <!--Appbar背景色,应用的主要色调,actionBar默认 使用 该颜色--> <item name="an...
材料设计是Google建立的一组规则,可指导如何开发 Android 应用。 它们不仅可以应用于 Android 应用程序,还可以应用于网站设计。 在开发应用程序的过程 Android 提供了一些库来帮助开发人员实施主要的材料准则。 最重要的库是: com. android .support:appcompat-v7:23.0.1 com. android .support:design:23.0...
android : theme ="@ android : style / Theme .Dialog" : Activity显示为对话框模式 android : theme ="@ android : style / Theme .NoTitleBar" : 不显示应用程序标题栏 android : theme ="@and...
样式 是给 View 或 Window 指定外观和格式的属性集合。 样式 能够指定如高、边距、字体颜色、字体尺寸、背景颜色等属性。 样式 被定义在一个与布局 XML 文件分开的XML资源文件 Android 样式 与 Web 设计 的层叠式样表类似,允许与内容分开设计。 没有 使用 样式 的 view : <TextView android :i 通过 Theme 切换 主题 Android 通过在activity 使用 set Theme ()函数来设置背景 样式 ,通过加载 style s.xml里的 样式 来设置 Android 应用的 主题 。(注意:需要在 setContentView(R.layout.activity_main);之前调用set Theme ) 在开始制作 主题 之前我们先看下这张 < style name="My Style "> <item name=" android :textColor">#000000</item> <item name=" android :textSize">16sp</item> </ style > 2. 在布局文件 使用 样式 : <TextView android :id="@+id/myTextView" android :layout_width="wrap_content" android :layout_height="wrap_content" android :text="Hello World!" style ="@ style /My Style " /> 3. 定义一个 主题 : < style name="My Theme " parent =" Theme .AppCompat.Light"> <item name="colorPrimary">#3F51B5</item> <item name="colorPrimaryDark">#303F9F</item> <item name="colorAccent">#FF4081</item> </ style > 4. 在 Android Manifest.xml 文件 指定 主题 : <application android : theme ="@ style /My Theme " 希望这些示例能够帮助你进行 Android 开发 样式 主题 设置。