`
zhujianjia
  • 浏览: 484158 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转:Android风格与主题

阅读更多

 

Android xml风格和主题文件的编写,是涉及到整个程序界面美观的因素之一。较好的应用风格和主题,可以实现美观而统一的界面,这就犹如Web开发中的CSS。

Styles和Themes都是资源,存放在res/values文件夹下。

什么是Style,什么是Theme?

  • Style:是一个包含一种或者多种格式化属性的集合,我们可以将其用为一个单位用在布局XML单个元素当中。比如,我们可以定义一种风格来定义文本的字号大小和颜色,然后将其用在View元素的一个特定的实例。
  • Theme:是一个包含一种或者多种格式化属性的集合,我们可以将其为一个单位用在应用中所有的Activity当中或者应用中的某个Activity当 中。比如,我们可以定义一个Theme,它为window frame和panel 的前景和背景定义了一组颜色,并为菜单定义可文字的大小和颜色属性,可以将这个Theme应用在你程序当中所有的Activity里。

Style和Theme的XML文件结构

对每一个Styles和Themes,给<style>元素增加一个全局唯一的名字,也可以选择增加一个父类属性。在后边我们可以用这个名字来应用风格,而父类属性标识了当前风格是继承于哪个风格。在<style>元素内部,申明一个或者多个<item>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。

风格

1.在res/values 目录下新建一个名叫style.xml的文件。

2.对每一个风格和主题,给<style>element增加一个全局唯一的名字,也可以选择增加一个父类属性。在后边我们可以用这个名字来应用风格,而父类属性标识了当前风格是继承于哪个风格。

3.在<style>元素内部,申明一个或者多个<item>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。

4.你可以应用在其他XML定义的资源。
下面SDK提供的Style的例子:(SDK提供的程序会有style/Text找不到的错误,目前还不知道怎么解决)

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
   <style name=”SpecialText” parent=”@style/Text”>
   <item name=”android:textSize”>18sp</item>
   <item name=”android:textColor”>#008</item>
</style>
</resources>

上面的样式可以用在单个view中如:

<EditText id=”@+id/text1″
style=”@style/mytext”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Hello, World!” />
 

现在这个EditText组件的所表现出来的风格就为我们在上边的XML文件中所定义的那样。

编写一个简单的Style:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<style name="SpecialText" >
        <item name="android:textSize">18sp</item>
        <item name="android:textColor">#EC9237</item>
    </style>
    <style name="SpecialText2" >
        <item name="android:textSize">26sp</item>
        <item name="android:textColor">#FF7F7C</item>
        <item name="android:fromAlpha">0.0</item>
		<item name="android:toAlpha">0.0</item>
    </style>
</resources>

应用的编写:

<TextView  
	style="@style/SpecialText2"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<EditText android:text="@+id/EditText01" 
	style="@style/SpecialText"
	android:id="@+id/EditText01" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content"></EditText>

最终实现的界面为:

image

当然,Android也有很多预定义的主题:

image

主题

就像Style一样,Theme依然在<style>元素里边申明,也是以同样的方式引用。不同的是通过在Android Manifest中定义的<application>和<activity>元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View里。

下边是SDK中主题的一个例子:(SDK提供的程序会有Error:no resource found that matches the given name: panelForegroundColor等错误,目前还不知道怎么解决这些错误)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowFrame">@drawable/screen_frame</item>
<item name="windowBackground">@drawable/screen_background_white</item>
<item name="panelForegroundColor">#FF000000</item>
<item name="panelBackgroundColor">#FFFFFFFF</item>
<item name="panelTextColor">?panelForegroundColor</item>
<item name="panelTextSize">14</item>
<item name="menuItemTextColor">?panelTextColor</item>
<item name="menuItemTextSize">?panelTextSize</item>
</style>
</resources>

注意我们用了@符号和?符号来应用资源。@符号表明了我们应用的资源是前边定义过的(或者在前一个项目中或者在Android 框架中)。问号?表明了我们引用的资源的值在当前的主题当中定义过。通过引用在<item>里边定义的名字可以做到(panelTextColor 用的颜色和panelForegroundColor中定义的一样)。这中技巧只能用在XML资源当中

在程序中使用主题的方法:

protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setTheme(android.R.style.Theme_Light);    
      setContentView(R.layout.linear_layout_3);
}

在mainfest.xml中应用主题:
为了在成用当中所有的Activity当中使用主题,你可以打开AndroidManifest.xml 文件,编辑<application>标签,让其包含android:theme属性,值是一个主题的名字,如下:
<application android:theme=”@style/CustomTheme”>
如果你只是想让你程序当中的某个Activity拥有这个主题,那么你可以修改<activity>标签。

编写的简单的一个Theme:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<style name="CustomTheme" parent="android:Theme.Black">        
    <item name="android:windowNoTitle">true</item>
    <item name="android:testSize">14sp</item>
    <item name="android:textColor">#FFFF0000</item>
  </style>
</resources>
Android中提供了几种内置的资源,有好几种主题你可以切换而不用自己写。比如你可以用对话框主题来让你的Activity看起来像一个对话框。在manifest中定义如下:
<activity android:theme=”@android:style/Theme.Dialog”>
如果你喜欢一个主题,但是想做一些轻微的改变,你只需要将这个主题添加为父主题。比如我们修改Theme.Dialog主题。我们来继承Theme.Dialog来生成一个新的主题。
<style name=”CustomDialogTheme” parent=”@android:style/Theme.Dialog”>
继承了Theme.Dialog后,我们可以按照我们的要求来调整主题。我们可以修改在Theme.Dialog中定义的每个item元素的值,然后我们在Android Manifest 文件中使用CustomDialogTheme 而不是 Theme.Dialog 。 

一下列出了其他预定义的主题:

Android-Theme

转自:

作者:Feisky 

出处:http://www.cnblogs.com/feisky/ 

 

分享到:
评论

相关推荐

    android studio (as)主题theme

    本主题相关的压缩包文件包括"ladies night2.jar", "cobalt.jar", "visual studio.jar", 和 "monokai sublime text3.jar",这些都是针对Android Studio定制的不同视觉风格的主题文件。 1. **主题概念**:在Android ...

    android 自定义各种风格button

    本文将深入探讨如何在Android中自定义各种风格的Button。 首先,我们可以通过修改Button的背景来改变其颜色。Android提供了多种方式来实现这一目标,例如使用颜色资源、颜色选择器(ColorStateList)或者渐变色。在...

    android studio的主题风格

    android studio的 主题style,背景黑色,各种关键字和方法名,变量等颜色都有区分。使用方法,android studio -- File--Import setting... 选中该setting.jar--ok 重启studio

    Android studio主题包

    本文将深入探讨与"Android Studio主题包"相关的知识点,旨在帮助开发者打造个性化且高效的编程环境。 Android Studio的主题不仅关乎美观,更关乎开发效率。一个合适的主题可以使代码更加清晰易读,减轻视觉疲劳,...

    Android Studio自定义主题--基于sublime3风格

    现在,你的Android Studio将以新的Sublime3风格主题运行。 除了颜色主题,`sublime3_custom.png`可能是一个截图,展示了主题在实际使用中的效果,或者是主题作者提供的示例图片,帮助用户更好地理解主题的视觉风格...

    android主题设置与主题切换

    本篇文章将深入探讨Android中的主题设置和主题切换,以实现背景、对话框和按钮风格的一键切换。 1. **Android主题的基本概念** - 主题是Android系统中定义UI样式的一种方式,它包含了多个样式属性,如背景颜色、...

    AndroidStudio-Practice:AndroidStudio练习-源码

    3. **样式和主题**:通过styles.xml文件定义全局或局部的样式,统一应用的视觉风格。 五、资源管理 1. **资源目录**:Android Studio将资源文件按类型分放在res目录下,如drawable(图片)、layout(布局)、...

    Android场景桌面主题

    1. **图标设计**:图标是主题的核心元素,应保持清晰易辨,与主题风格一致。2D场景UI图片规范会提供具体的尺寸和格式要求。 2. **壁纸选择**:壁纸应符合场景的主题,可以是静态或动态的,但要确保不影响应用性能。 ...

    Android studio eclipse风格主题

    Android studio eclipse风格配色,背景已经改为护眼色,习惯eclipse的同学可以下载使用

    Android 主题之主题文件夹

    在Android系统中,主题(Theme)是为应用提供全局外观和感觉的重要元素。它定义了颜色、字体、图标等视觉元素的风格,使得用户能够统一调整应用的视觉样式。本主题探讨的是Android中的主题文件夹及其相关知识,通过...

    Android studio /idea主题

    androidstudio主题 intellij idea也可以用,自己设置的主题,导出。。使用的时候直接 import setting 就可以了。

    MIUI主题风格_一种Android系统换肤功能的设计 思路(董红光)

    MIUI主题风格的设计思路体现了小米公司在用户体验方面的创新与追求。通过采用资源文件路径重定向的方式,不仅实现了主题的实时切换,还大大增强了主题的通用性和灵活性。这种设计方法对于提升Android系统的个性化...

    android 代码主题背景

    android 代码主题背景。里面有android studio代码主题背景,也有eclipse代码主题背景。也有设置方法,以及相关主题背景下载的网址。博客介绍:http://blog.csdn.net/qq_16064871/article/details/54645475。

    浙大讲义:Android用户界面.rar

    在Android开发中,用户界面(User Interface,简称UI)是应用程序与用户交互的关键部分,它决定了应用的视觉表现和用户体验。这份"浙大讲义:Android用户界面.rar"压缩包包含了一份浙江大学关于Android UI设计的课程...

    android 仿 windows metro 风格 源码

    综上所述,"android 仿 windows metro 风格 源码"项目提供了实现这一独特界面风格的全套解决方案,开发者可以在此基础上进行定制和扩展,以创建出与Windows Metro风格一致的Android应用。通过研究和理解源码,开发者...

    Android-Android主题换肤插件化换肤无缝切换

    1. **Android主题换肤**:Android系统允许开发者通过定义不同风格的资源文件来实现主题换肤。这包括颜色、图片、布局等元素的更改。开发者通常会创建一套默认的主题,并提供额外的皮肤资源包供用户选择。通过改变...

    Androidstudio theme 主题

    总之,Android Studio的主题系统为开发者提供了极大的灵活性,不仅有内置的多种主题供选择,还可以方便地导入和使用第三方主题,为Android应用带来独特的视觉风格。正确理解和运用主题,能有效提高应用的用户体验和...

    android仿holo主题兼容低版本时间控件

    1. **Android主题与样式**:Android系统通过主题和样式来统一应用的视觉元素。Holo主题是Android 4.0引入的官方主题,包含了一套完整的颜色、图标和控件样式。在低版本系统中,需要手动导入和应用这些资源。 2. **...

    Android 主题动态切换

    在Android开发中,主题(Theme)是为应用提供全局样式和视觉效果的关键元素。通过主题,开发者可以统一应用的外观和交互,使用户界面保持一致性和专业性。本主题涉及的知识点主要集中在如何实现应用主题的动态切换,...

Global site tag (gtag.js) - Google Analytics