Flex移动应用程序开发的技巧和窍门(二)
这是关于Flex移动应用程序开发的技巧和窍门的一系列文章中的第二部分。第一部分 内容主要集中讨论了视图之间以及应用程序执行之间切换时的数据处理。而这一部分则主要包括了移动应用程序动作条(ActionBar)和各标签组件的样式设计。
当你在Flex 4.5中创建TabbedViewNavigatorApplication时,你可以通过几种不同的方法自定义标签或动作条(包含有标题文本和其他组件或导航内容的标题栏)。一种方法是,使用自己的自定义素材(例如使用FXG格式文件或者皮肤文件)设置标签皮肤。但是,如果你的应用程序不需要很多的自定义,你可以使用简单的CSS道具。CSS风格化设计使你可以快捷、简单地改变默认的无聊灰色标签外观。
我在这里通过新建一个标签处理的应用程序实例,举例说明这是怎么实现的。在下面的例子中你会看到通过简单添加一些CSS道具和少许线条是如何快速改变动作条和移动应用程序标签的。
在标签中加入图标
(假设)下面的Flex TabbedViewNavigatorApplication代码中含有了链接到各自主页的三个标签:
<?xml version="1.0" encoding="utf-8"?> <s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"><s:ViewNavigator id="trends" label="Trends" width="100%" height="100%" firstView="views.TrendsView"/> <s:ViewNavigator id="attach" label="Attach" width="100%" height="100%" firstView="views.AttachView"/> <s:ViewNavigator id="call" label="Call Center" width="100%" height="100%" firstView="views.CallView"/> </s:TabbedViewNavigatorApplication> 当你新建一个Flex移动项目时,系统会自动应用默认的Mobile主题(如图1所示)。

当然,这种外观并不是很醒目。但是,通过在标签中加入图标的方法可以使它变得更加的引人注目。
你可以通过为每一个 ViewNavigator 组件(设置)合适的图标属性,从而实现标签中图标的添加。我选择了项目源中的素材目录下的三个图标,加入到了下面的代码中。
<?xml version="1.0" encoding="utf-8"?> <s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"> <s:ViewNavigator id="trends" label="Trends" width="100%" height="100%" firstView="views.TrendsView" icon="@Embed('assets/column-chart-icon32.png')"/> <s:ViewNavigator id="attach" label="Attach" width="100%" height="100%" firstView="views.AttachView" icon="@Embed('assets/paperclip-icon32.png')"/> <s:ViewNavigator id="call" label="Call Center" width="100%" height="100%" firstView="views.CallView" icon="@Embed('assets/receptionist-icon32.png')"/> </s:TabbedViewNavigatorApplication> 通过上述简单的改变,你就使得你的标签更具个性了(如图2所示)。

动作条风格化设计
在标签中加入图标是一个好的开始,但是如果你有和我一样的想法,你就会迫切希望改变动作条部分所使用的灰色背景,希望把标签变成自己想要的主题样式。使用CSS你就可以实现这些。
你可以通过简单地使用动作条组件中的Spark选择器和指定任意可支持的风格或可继承的风格来实现动作条的个性化。
注意:Flex 4.5 ActionScript API documentation 文件向我们提供了各组件所支持的以及可继承的特定的风格化道具的信息。它也有关于这种风格化道具是否具有CSS继承性方面的说明。如果你在API中核查动作条组件,你就可以知道什么可以被风格化。
在你对动作条风格作出改变之前,你可能会对其默认值比较感兴趣。例如,你可能想了解默认的字体大小和加权情况,这些情况可能不会像字体颜色那么明显。你可以通过查看Mobile主题默认的CSS属性,对你要风格化的动作条有更深入的了解。在Mac OS中,你可以在 /Applications/Adobe Flash Builder 4.5/sdks/4.5/frameworks/projects/mobiletheme/defaults.css 找到defaults.css文件。在Windows系统中,你可以在C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\4.5.0\frameworks\projects\mobiletheme\defaults.css 找到defaults.css文件。
下面就是动作条中defaults.css文件里的两个代码片段及其标题:
ActionBar { chromeColor: #484848; defaultButtonAppearance: normal; skinClass: ClassReference("spark.skins.mobile.ActionBarSkin"); textShadowAlpha: .65; textShadowColor: #000000; paddingBottom: 1; paddingLeft: 0; paddingRight: 0; paddingTop: 1; } ... ActionBar #titleDisplay { color: #FFFFFF; fontSize: 28; fontWeight: bold; } 注意,字体颜色,字号及加权情况是使用titleDisplay ID选择器来设置的。
由于在我的样本应用程序的动作条中只有一个文字标题,我接下来就只对这个文字标题个性化。如果在你的动作条中含有一些按钮和其他组件,你也可以使用可支持风格对其个性化。
动作条的 titleDisplay (标题显示)皮肤部分可以很容易地被使用CSS风格化。我只是对我的样本应用程序的 <fx:style> 标签的CSS属性做了如下的设置:
s|ActionBar { chromeColor: #229988; titleAlign: center; } s|ActionBar #titleDisplay { color: #CCCCCC; /* default color is white */ fontSize: 40; fontFamily: "Comic Sans MS"; } 现在,动作条的文字标题就以在浅绿色的背景下,居中的、白色Comic Sans字体的形式显示了(如图3所示)。

标签风格化
你也可以使用CSS对你的标签条风格化。这就需要你在CSS规则中指定TabbedViewNavigator组件的tabBar (标签条)皮肤部分。再次查看Mobile主题中的defaults.css文件,了解这部分皮肤的默认设置:
TabbedViewNavigator #tabBar { chromeColor: #484848; color: #FFFFFF; fontSize: 20; fontWeight: normal; iconPlacement: top; interactionMode: mouse; skinClass: ClassReference("spark.skins.mobile.TabbedViewNavigatorTabBarSkin"); textShadowAlpha: .65; textShadowColor: #000000; } 注意: TabbedViewNavigator 组件中定义的 tabBar 其实是一个ButtonBar(按钮条)。Spark TabBar 在移动应用程序中并没有实现最优化。如果你追溯自定义皮肤的发展历史,你会发现 TabbedViewNavigatorTabBarSkin 其实是对 ButtonBarSkin 的继承和进一步发展。
我可以再次在我的应用程序的 <fx:style> 标签中加入一个CSS规则,通过加入自己想要的风格来自定义组件的外观:
TabbedViewNavigator #tabBar { chromeColor: #229988; color: #CCCCCC; fontFamily: "Comic Sans MS"; iconPlacement:left; textDecoration:underline; } 现在,标签条的文字就被变成了和动作条一样的有淡绿色背景的Comic Sans字体(如图4所示)。记住,我并不是一个设计师,但显而易见,通过简单的添加CSS组块改变应用程序的外观是多么简单易行的一件事。

这是标签标记了的主应用程序文件的全部源代码。除了CSS,它还通过在视图中设置ViewNavigator(视图导航器)对象的firstView(第一视图)属性引用了视图文件夹中的基础视图。TrendsView(动态视图)和视图的结合。AttachView(绑定视图)和视图的结合。分别的调用视图(CallView):
<?xml version="1.0" encoding="utf-8"?> <s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"> <fx:Style> @namespace s "library://ns.adobe.com/flex/spark"; s|ActionBar { chromeColor: #229988; titleAlign: center; } s|ActionBar #titleDisplay { color: #CCCCCC; fontSize: 40; fontFamily: "Comic Sans MS"; } s|TabbedViewNavigator #tabBar { chromeColor: #229988; color: #CCCCCC; fontFamily: "Comic Sans MS"; iconPlacement:left; textDecoration:underline; } </fx:Style> <s:ViewNavigator id="trends" label="Trends" width="100%" height="100%" firstView="views.TrendsView" icon="@Embed('assets/column-chart-icon32.png')"/> <s:ViewNavigator id="attach" label="Attach" width="100%" height="100%" firstView="views.AttachView" icon="@Embed('assets/paperclip-icon32.png')"/> <s:ViewNavigator id="call" label="Call Center" width="100%" height="100%" firstView="views.CallView" icon="@Embed('assets/receptionist-icon32.png')"/> </s:TabbedViewNavigatorApplication> 注意: 为简单起见,上述实例包括了MXML应用程序的风格化。然而,它确实是创建一个单独的,包含了所有样式以及你的主应用程序文件的CSS文件的参考的CSS文件的一个很好的实践。
你可以下载并导入这篇文章中用到的样本文件来探索这个项目的完整的源代码。
Flex移动应用程序开发的技巧和窍门(二)的更多相关文章
- Flex移动应用程序开发的技巧和窍门(三)
这是关于 Flex 移动应用程序开发的技巧和窍门系列文章的第三部分内容.第一部分内容主要集中讨论了视图之间以及应用程序执行之间切换时的数据处理.第二部分则主要涵盖了应用程序动作条和标签组件风格化方面的 ...
- Flex移动应用程序开发的技巧和窍门(一)
这是一个由多个部分组成的系列文章的第一部分,它包含了Flex移动开发的若干技巧.如果你过去习惯于桌面和Web编程,你会发现,开发移动应用程序将面临一系列新的挑战. 除了重新思考你的对数据存储和处理的策 ...
- Flex移动应用程序开发的技巧和窍门(四)
范例文件 flex-mobile-dev-tips-tricks-pt4.zip 这是本系列文章的第四部分,该系列文章涵盖Flex移动开发的秘诀与窍门. 第一部分关注切换视图以及切换执行应用时的数据处 ...
- Flex移动应用程序开发的技巧和窍门(五)
范例文件 flex-mobile-development-tips-tricks-pt5.zip This is Part 5 of a multipart series of articles th ...
- 微信小程序开发工具使用与设计规范(二)
[未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...
- mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开 ...
- 【转】mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
转自:https://www.cnblogs.com/stevenluo/p/6030445.html 微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热 ...
- Android应用程序开发之图片操作(二)——工程图片资源的加载及OOM的处理
(一)工程图片资源的加载方法 在Android应用程序开发之图片操作(一)中,详细说明了如何操作各种资源图片,只是有的没有附上示例代码,在此,我将针对项目工程中的图片资源的显示加载进行说明.官方说明, ...
- 微信小程序开发调试技巧
1. 查看线上小程序console a. 先打开开发小程序console b. 再打开线上小程序,此时可以查看console
随机推荐
- 行内元素为何不能设置margin-top、margin-bottom;padding-top、padding-bottom值
曾经学过的教程中写明:行内元素的特点有: 1.与其他元素在同一行 2.宽度(width).高度(height).内边距的top/bottom(padding-top/padding-bottom)和外 ...
- html5语义化标签总结二
HTML 5的革新之一:语义化标签二文本元素标签.分组元素标签. HTML 5的革新——语义化标签(一)中介绍了一些HTML5新加的一些节元素,一张页面中结构元素构成网页大体,但是也需要其他内容来填充 ...
- HDU1251-统计难题(字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- AIM Tech Round 3 (Div. 2)D. Recover the String(贪心+字符串)
D. Recover the String time limit per test 1 second memory limit per test 256 megabytes input standar ...
- 安卓图表引擎AChartEngine(二) - 示例源码概述和分析
首先看一下示例中类之间的关系: 1. ChartDemo这个类是整个应用程序的入口,运行之后的效果显示一个list. 2. IDemoChart接口,这个接口定义了三个方法, getName()返回值 ...
- 使用RGBa和Filter实现不影响子元素的CSS透明背景
点击查看原文 问题 如果我们想要一个元素拥有半透明的背景,我们有两个选择: 使用CSS和 opacity 做一张 24-bit PNG 背景图片 在CSS中使用opacity有两个问题,一是为了适应所 ...
- arcengine C#关于动态添加图层
动态加载影像图层为例 研究了两三天算是弄出来了.本例适合影像数据量特别的大程序使用,可以动态的添加删除影像数据,还有不完善的地方,不过基本满足要求. 1.首先得到关键点的图层 m_Map = axMa ...
- SQL TOP分页
SQL TOP分页 2010-11-12 16:35:29| 分类: SQL | 标签: |字号大中小 订阅 1.分页方案一:(利用Not In和SELECT TOP分页) 语句形式: ...
- 函数之DisString
DocStringsPython有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings .DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用 ...
- Identifying Dialogue Act Type
Natural Language Processing with Python Chapter 6.2 import nltk from nltk.corpus import nps_chat as ...