【移动开发】Android中Theme和Style的使用

简介:

 当我们做项目到一定程度的时候,Android提供给我们的简单的UI控件(虽然后期ADT插件更新中增加了不少)已经不能满足我们的需要,一款成功的软件不仅要功能强大,漂亮的界面同样会吸引不少用户!

   这里,我将总结一下Android提供给我们的两个重要的资源:Theme 和 Style。


1.Theme(是针对窗体级别的,可以改变窗体样式)

官方文档  

       Themes are Android's mechanism for applying a consistent style to an app or activity. The style specifies the visual properties of the elements that make up your user interface, such as color, height, padding and font size. To promote greater cohesion between all apps on the platform, Android provides three system themes that you can choose from when building apps for Ice Cream Sandwich:

      主题是Android的机制被应用一个相同风格的应用程序Activity中。样式指定了视觉属性的元素装饰你的用户界面,如颜色、高度、填充和字体大小。促进更大的凝聚力在所有平台的应用程序,Android提供了三个系统的主题,您可以选择在构建应用程序选择不同的主题:

   Holo Light
   Holo Dark
   Holo Light with dark action bars

官方图:

1.1.使用

   Android系统的themes.xml和style.xml(位于/base/core/res/res/values/)包含了很多系统定义好的style,建议在里面挑个合适的,然后再继承修改。以下属性是在Themes中比较常见的,源自Android系统本身的themes.xml:

1
2
3
4
5
6
7
8
< style
    name = "simple_dialog"  parent = "@android:style/Theme.Dialog" >
        < item  name = "android:windowFrame" >@null</ item > <!-- Dialog的WindowFrame框为无 -->
        < item  name = "android:windowNoTitle" >true</ item >
        < item  name = "android:windowIsFloating" >true</ item > <!-- 是否悬浮在activity上 -->
        < item  name = "android:windowIsTranslucent" >true</ item > <!-- 是否半透明 -->
        < item  name = "android:backgroundDimEnabled" >false</ item > <!-- 背景是否模糊 -->
    </ style >

有人会问从哪里学习这些主题?其实系统就自带了很多,看下图:

在AndroidManifest的Application中,点击Theme选项,系统资源里就有相当多的主题供你选择

  A.应用到Application

1
<application android:theme= "@style/CustomTheme" >

   B.应用到Activity

1
<activity android:theme= "@android:style/Theme.Dialog" >


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

 官方文档:

  A style is a collection of properties that specify the look and format for a View or window. A style can specify properties such as height, padding, font color, font size, background color, and much more. A style is defined in an XML resource that is separate from the XML that specifies the layout.

   风格是一个集合的属性用于指定具有一定外观和格式的视图或窗口。一个风格可以指定属性如高度、填充、字体颜色、字体大小、背景色等等。一个样式定义在XML资源,独立于XML指定布局。

Styles in Android share a similar philosophy to cascading stylesheets in web design—they allow you to separate the design from the content.

    风格在安卓中的份额就如同级联样式表在web设计中的设计,允许你将内容分割开来设计

   2.1简单使用

   一个简单地样式

1
2
3
4
5
6
< TextView
     android:layout_width = "fill_parent"
     android:layout_height = "wrap_content"
     android:textColor = "#00FF00"
     android:typeface = "monospace"
     android:text = "@string/hello"  />

    可以在任何相同的地方被引用

1
2
3
<TextView
     style= "@style/CodeFont"
     android:text= "@string/hello"  />

2.2定义风格

   首先可以在res/values/下创建一个xml,用于定义style(注意:根结点必须是<resources>

1
2
3
4
5
6
7
8
9
<? xml  version = "1.0"  encoding = "utf-8" ?>
< resources >
     < style  name = "CodeFont"  parent = "@android:style/TextAppearance.Medium" >
         < item  name = "android:layout_width" >fill_parent</ item >
         < item  name = "android:layout_height" >wrap_content</ item >
         < item  name = "android:textColor" >#00FF00</ item >
         < item  name = "android:typeface" >monospace</ item >
     </ style >
</ resources >

   这里我们可以看到,该style的名称为CodeFont,parent后面是父类的style,(当然,我们也可以不用继承父类style),接下来每一个item定义一个属性。定义属性的最好方法就是在api文档里找到这个view的xml属性,比如在EditText中有InputType这个属性,那么在你的style里面你就可以来定义它。


   ok! 就是这些了!



     本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1251507 ,如需转载请自行联系原作者



相关文章
|
9月前
|
Android开发 开发者
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
219 1
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
222 0
|
4月前
|
Java Linux Android开发
移动应用开发与操作系统的交互:深入理解Android和iOS
在数字时代,移动应用成为我们日常生活的一部分。本文将深入探讨移动应用开发的核心概念、移动操作系统的工作原理以及它们如何相互作用。我们将通过实际代码示例,展示如何在Android和iOS平台上创建一个简单的“Hello World”应用,并解释其背后的技术原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。
|
2月前
|
IDE 开发工具 Android开发
移动应用开发之旅:探索Android和iOS平台
在这篇文章中,我们将深入探讨移动应用开发的两个主要平台——Android和iOS。我们将了解它们的操作系统、开发环境和工具,并通过代码示例展示如何在这两个平台上创建一个简单的“Hello World”应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧,帮助你更好地理解和掌握移动应用开发。
91 17
|
9月前
|
缓存 算法 网络协议
Android面试回忆录移动应用开发专业核心课程
Android面试回忆录移动应用开发专业核心课程
|
5月前
|
存储 Java 开发工具
移动应用开发之旅:探索Android操作系统的无限可能
【8月更文挑战第56天】随着智能手机的普及,移动应用已成为我们日常生活中不可或缺的一部分。本文将引导读者了解移动应用开发的基本概念,重点探讨Android操作系统的开发环境搭建、界面设计、功能实现以及与后端服务的交互。通过简单的代码示例和清晰的步骤说明,即便是初学者也能快速入门,开启自己的移动应用开发之旅。
|
5月前
|
设计模式 前端开发 JavaScript
探索移动应用开发:从Android到iOS的跨平台之旅
【9月更文挑战第21天】在这篇文章中,我们将一同揭开移动应用开发的神秘面纱,从Android和iOS这两个主流平台出发,探讨如何利用现代技术栈实现跨平台开发。文章将通过具体的代码示例,带领读者理解不同平台间的差异与联系,以及如何运用React Native框架简化开发流程,实现一次编写,多平台运行的目标。无论你是刚入门的新手还是希望拓展技能的老手,这篇文章都将为你提供宝贵的知识和启示。
86 3
|
4月前
|
开发工具 Android开发 iOS开发
移动应用开发的艺术:探索Android与iOS的操作系统特性
【9月更文挑战第33天】在数字时代的浪潮中,移动应用已成为我们日常生活不可或缺的一部分。本文将深入探讨两个主流移动操作系统——Android和iOS——的独特特性,并分析它们如何影响移动应用的开发过程。我们将通过比较这两个系统的设计哲学、用户界面(UI)设计、开发工具以及市场策略,来揭示开发者如何在这些不同的平台上打造出色的用户体验。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解。
|
6月前
|
机器学习/深度学习 Android开发 iOS开发
探索移动应用开发的未来:Android与iOS的较量
【8月更文挑战第21天】在数字时代的浪潮中,移动应用已成为日常生活不可或缺的一部分。两大主流平台,Android和iOS,各自以其独特的优势和挑战塑造着开发者和用户的世界。本文将深入探讨这两个平台的发展动态、设计理念及其对移动应用开发未来的影响。
|
6月前
|
移动开发 Android开发 Swift

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 10
    移动应用开发与操作系统的深度协同:构建高效、安全的移动生态####