android 主题和样式-style和Theme的区别和使用

项目中经常使用style和Theme,但却从来没有考虑过它们的区别,只会copy来copy去的,有时候还有些迷茫,为了彻底告别迷茫,现把这两者的区别和使用总结出来,供自己和大伙参考

一.作用域

Theme是针对窗体级别的,改变窗体样式。

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

二.使用方式

Theme

1. 在res\values\ 下创建themes.xml或者styles.xml文件

2. 添加<resouces>节点(根节点)

3. 添加自定义的style

4.(1)在AndroidManifest.xml文件中,为Activity指定theme属性(推荐)

(2)Activity创建时调用setTheme函数 (必须在setContentView前调用 )

<style name="MyBubbleTheme" parent="@android:style/Theme.Dialog" >
	<item name="android:windowBackground">@drawable/bubble</item>
</style>
 <activity
    android:name=".BlurThemeActivity"
    android:theme="@style/MyBubbleTheme" />

5.系统自带的Theme

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"  //用系统桌面为应用程序背景,无标题栏,全屏

6.常用属性

<item name="windowBackground">@android:drawable/screen_background_dark</item>
<item name="windowFrame">@null</item>
<item name="windowNoTitle">false</item>
<item name="windowFullscreen">false</item>
<item name="windowIsFloating">false</item>
<item name="windowContentOverlay">@android:drawable/title_bar_shadow</item>
<item name="windowTitleStyle">@android:style/WindowTitle</item>
<item name="windowTitleSize">25dip</item>
<item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>

style

1. 在res\values\ 下创建styles.xml文件

2. 添加<resouces>节点(根节点)

3. 添加自定义的style

4.在特定控件或layout中添加style属性

<style name="MyTextStyle">
        <item name="android:textColor">#FF0000C0</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
  <TextView
    style="@style/MyTextStyle"
  />

示例:

很多程序刚启动的时候的Tips界面,气泡窗口和毛玻璃效果

代码如下:

BlurThemeActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.WindowManager;

public class BlurThemeActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Have the system blur any windows behind this one.
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
                WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
    }

}

themes.xml

 <style name="MyBubbleTheme" parent="@android:style/Theme.Dialog" >
        <item name="android:windowBackground">@drawable/bubble</item>
        <item name="android:windowNoTitle">true</item>
    </style>

AndroidManifest.xml

 <activity
    android:name=".BlurThemeActivity"
    android:theme="@style/MyBubbleTheme" />

android 主题和样式-style和Theme的区别和使用

时间: 2024-12-21 18:44:10

android 主题和样式-style和Theme的区别和使用的相关文章

Android学习系列(39)--Android主题和样式之系统篇(上)

Android学习系列(39)--Android主题和样式之系统篇(上) [基于最新的Android4.4的源码分析] 每家公司或者每个移动团队无不想开发出一套自己的UI框架,融入自己的设计和特性,这必然会去修改android的ui.所以,学习和理解android的UI设计是最基础和非常有必要的.android ui设计最重要的就是主题和样式. 1.位置在Android的frameworks/base/core/res/res/values目录下有一下几个文件: 1 2 3 4 themes.x

Android学习系列(40)--Android主题和样式之系统篇(下)

Widget样式(Widget Style) 特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值. <!-- Widget styles --> <item name="absListViewStyle">@android:style/Widget.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:st

Android零碎知识之Style and Theme

Android的styles资源文件中存在了我们在应用中定义的各种style,它们都是以style开始的元素,包含许多属性的集合.但我们一般般它们分为style和theme,那它们有什么区别呢? 一.Style or Theme what   theme是一种特殊的style,我们通常认为style是运用在一个view或者window上,而theme是运用在activity或者application上的.style在布局文件中通过[email protected]/[style name]引入,

【转】Android学习系列(39)--Android主题和样式之系统篇(上)

[基于最新的Android4.4的源码分析] 每家公司或者每个移动团队无不想开发出一套自己的UI框架,融入自己的设计和特性,这必然会去修改android的ui.所以,学习和理解android的UI设计是最基础和非常有必要的.android ui设计最重要的就是主题和样式. 1.位置在Android的frameworks/base/core/res/res/values目录下有一下几个文件: 1 2 3 4 themes.xml themes_device_defaults.xml styles.

Android 样式 (style) 和主题(theme)

转载:https://gold.xitu.io/post/58441c48c59e0d0056a30bc2 样式和主题 样式是指为 View 或窗口指定外观和格式的属性集合.样式可以指定高度.填充.字体颜色.字号.背景色等许多属性. 样式是在与指定布局的 XML 不同的 XML 资源中进行定义. Android 中的样式与网页设计中层叠样式表的原理类似 - 您可以通过它将设计与内容分离. 例如,通过使用样式,您可以将以下布局 XML: <TextView android:layout_width

android的样式(style)与主题(theme)

Android上的Style分为了两个方面: 1,Theme是针对窗体级别的,改变窗体样式: 2,Style是针对窗体元素级别的,改变指定控件或者Layout的样式. Android系统的themes.xml和style.xml(位于系统源代码frameworks\base\core\res\res\values\)包含了很多系统定义好的style,建议在里面挑个合适的,然后再继承修改. 风格是一个包含一种或者多种格式化属性的集合,你可以将其用为一个单位用在布局XML单个元素当中.比如,你可以定

今天来讲讲Android的主题和样式(Theme和Style)

首先我们来探讨下什么是样式(Style) 有这样一个情景,当我们在写一个布局文件中,里面有很多视图,它们有着相同的属性,如果每个视图都写一遍这样相同的属性,这样会显得代码相当累赘 而且在维护代码的时候非常不方便,这时我们就可以将这些相同属性的代码抽取出来,放到styles.xml中,方便我们修改代码. 如何声明一个样式呢? 在styles.xml文件中建立一个<style>节点,然后在这个节点中添加<item>子节点,如: <style name="button_p

第十四章:样式(Style)和主题(Theme)

简介 Android的样式(Style)和主题(Theme)文件就好比WEB开发中的CSS一样,可以实现UI界面的风格统一管理,这和Windows平台的XAML格式(Silverlight.WPF)类似.比如我们遇到特殊的节日我们只需变更我们的Style和Theme就可以切换一种新的Style和Theme.还有现有的一些应用提供我们可以自定义UI风格,就是应用的这个原理.Android的主题样式文件存储在res\values目录下,如res\values\styles.xml. 样式(Style

Android的Style和Theme 译文

Style 是Window和View的一种外观和格式的属性集合.它可以作为高度,间距,字体大小,背景颜色等属性.Style是一种 xml 资源文件,放在和布局文件不同的文件夹里: Style 的设计理念和 Web一脉相承--即它们都允许你把内容和样式分离. 例如,你用Style可以把下面这个xml文件: <TextView android:layout_width="fill_parent" android:layout_height="wrap_content&quo