第三章 界面UI的基石—UI布局(5)

3.3样式(Style)和主题(Theme)的使用

3.3.1样式(Style)的使用

不管是应用开发还是游戏开发,我们开发出来的产品,大部分的时候还是要让更多的人来使用的。因此,除了功能上的完善之外,布局上的合理而美观也是我们需要考虑的问题。Style和Theme的设计就是提升用户体验的关键之一。

Style和Theme都是为了改变样式,但是二者又略有区别:

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

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

它们的使用是非常灵活的,可以添加系统中所带组件的所有属性。

下面,我们分别来看看它们是如何使用的。

首先,我们在values目录下创建styles.xml文件,打开之后添加上一个样式:


<?xml version="1.0" encoding="utf-8"?>

<resources>

<style name="TextView">

<item name="android:textSize">18sp</item>

<item name="android:textColor">#fff</item>

<item name="android:shadowColor">#FF5151</item>

<item name="android:shadowRadius">3.0</item>

</style>

<style name="TextView_Style2">

<item name="android:textSize">24sp</item>

<item name="android:textColor">#FF60AF</item>

<item name="android:shadowColor">#E6CAFF</item>

<item name="android:shadowRadius">3.0</item>

</style>

</resources>

其中,android:shadowColor是指定文本阴影的颜色,android:shadowRadius是设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

接着,我们在布局文件中添加两个文本框,分别给他们用上这两个样式:


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

style="@style/TextView_Style1"

android:text="我是样式1"/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

style="@style/TextView_Style2"

android:text="我是样式2"/>

</LinearLayout>

效果图如图3-10所示。

图3-10Style样式的使用

可以看到,这两个文本框应用了不同的样式,所以显示了不同的效果。

3.3.2主题(Theme)的使用

说完了style,下面就说说Theme。Theme跟style差不多,从代码的角度来说是一样的,只是概念上的不同。Theme是应用在Application或者Activity里面的,而Style是应用在某一个View里面的。我们还是以一个例子来看看Theme的使用。
我们首先在values目录下创建themes.xml文件,(当然,我们也可以在之前的styles.xml文件中直接添加)打开之后添加上一个样式:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<style parent="@android:style/Theme" name="MyTheme">

<item name="android:windowNoTitle">true</item>

<item name="android:windowBackground">@drawable/ball</item>

</style>

</resources>
 
在这里,我们写了一个继承自系统默认的Theme的主题,里面有2个属性,第一个属性是设置无标题,第二个属性是设置背景图。然后,我们在AndroidManifest.xml文件中应用该主题:
 

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.chapter2"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name"

android:theme="@style/MyTheme">

<activity android:name=".Chapter2Activity"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>
 
运行的效果如图3-11所示。
 

图3-11Theme主题的使用

可以看到,我们应用的主题已经生效了。标题栏被设置为了不可见,同时也设置了背景图片。
我们可以将那些展现效果相同的视图设置为相同的样式或主题,提高我们开发的效率和代码的可读性。
时间: 2024-10-26 20:33:30

第三章 界面UI的基石—UI布局(5)的相关文章

第三章 界面UI的基石—UI布局(1)

第三章界面UI的基石-UI布局 上一章我们一起学习了Android中的常用组件及一些UI编程的技术.在此基础上,我们就可以将这些组件有效的组织起来,构成一个美观.合理的界面. 在本章,我们先来详细说明Android中UI的几种布局,通过这几种布局就能将组件有效的组合到一起.然后说明在Android开发中如何应用样式和主题,通过样式和主题,可以预定义一系列的属性值,使整个应用程序形成统一的显示风格. 3.1用户界面的基本单元-View视图 在Android SDK中,View(视图)类是视图类的一

[看书][CSS精粹(第2版)]第三章 CSS和图像 & HTML网页布局

本章主要讲述作为背景图像方面的技巧. 1.边框(添加边框样式.去除边框): 2.为页面设置背景图像,位置设定,固定背景图像: 3.为任意元素设置背景图像: 4.文字放在图像的上面(作为背景图像): 5.为文档添加多个背景图像(本例利用html和body元素产生多重背景图像的效果): 6.在页面中使用透明效果(使用PNG格式图像). 利用网络搜索补充学习了padding的4个方向顺序(上右下左 顺时针),流式布局(看网上的解释结合书里的描述,大概是指页内布局元素采用百分数指定位置和大小). [个人

第三章 界面UI的基石—UI布局(2)

3.2百花齐放-各种Layout布局 3.2.1Layout布局的简单介绍 一般的,一个Android视图中会有很多的控件.为了界面的合理.美观,我们需要让它们按照我们设计好的思路排列在界面上,那么,我们就需要容器来存放这些控件,并控制它们的位置排列,就像HTML中的div.table一样,Android布局也起到了同样的作用. Android布局有很多种,它们各有各的特点,分别应用在不同的场合,而且可以嵌套使用.我们要根据我们的界面设计选择合适的布局,可能有些时候不同的布局可以达到同样的效果,

第三章 界面UI的基石—UI布局(3)

3.2.4框架布局(FrameLayout) FrameLayout是五大布局中最简单的一个布局,也称为层布局或者是帧布局.在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,层叠式排列.此布局无法控制子控件的大小和位置,但是子控件自身可以控件其大小和位置.后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的).此布局通常用于游戏或者处理一些画廊程序. 我们也以一个简单的例子来说明. <?x

第三章 界面UI的基石—UI布局(4)

3.2.5表单布局(TableLayout) TableLayout,即表单布局,以行和列的形式管理控件.每行为一个TableRow对象,也可以为一个View对象.当为View对象时,该对象将横跨该行所有列. 同样的,我们也以一个简单的例子来加以说明,看完例子之后相信大家对TableLayout的应用会有一个比较全面的了解. <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:andr

Android界面编程——Android高级UI组件(三)

Android界面编程 Android高级UI组件 2.4.1适配器组件 适配器的作用 适配器充当适配器控件和该视图数据之间的桥梁.适配器提供访问的数据项,并负责产生数据组中的每个项的视图. 常用的适配器 BaseAdapter:抽象类,具有较高的灵活性. ArrayAdapter:最为简单,智能展示一行文字. SimpleAdapter:有较好的扩充性,可以自定义出各种效果. SimpleCursorAdapter:主要用于操作数据库. 常用的适配器控制 适配器控件扩展自ViewAdapter

第二章 吸引你的眼球—UI编程(1)

第二章 吸引你的眼球-UI编程 学习Android应用程序的开发技术,除了先要熟悉相关工具以外,最直接的,就是学习如何使用各种UI组件.我们开发的应用程序,一般都会包含一组用户可见的界面,而这些界面就是由一个个的AndroidUI组件组成的.我们在学习界面开发技术的过程中,首先就要熟悉这些组件,然后才能将它们有效的组织起来,构成一个美观.合理的界面. 本章会先详细讲解一些常用的UI组件,及如何自定义组件,然后会说明一些其它常用的UI编程技术. 2.1 UI基础-常用UI组件 Android的组件

Android教材 | 第三章 Android界面事件处理(二)—— 杰瑞教育原创教材试读

 编者按 JRedu 杰瑞教育原创系列教材将于年后与大家正式见面.为更好的借鉴读者意见,我们将会陆续地在博客园推出一系列教材试读.我们也热忱的欢迎广大博友与我们互动,提出宝贵意见. 本篇博客将推出教材第三章第二部分的试读(传送门:第一部分),请大家继续提出宝贵意见,我们也将为积极互动的博友,免费提供我们的原创教材以及更多福利,也欢迎大家加入最下方QQ群与我们交流,谢谢大家! 3.5 系统设置事件处理 3.5.1onConfigurationChanged响应事件 在App开发过程中,有时候需要获

Android异步处理系列文章四篇之一使用Thread+Handler实现非UI线程更新UI界面

目录: Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理 Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面 概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainTh