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
随机推荐
- 关于js的连续赋值
首先,来看一个经典的案例: <script>var a = {n: 1}var b = a;a.x = a = {n: 2}alert(a.x);alert(b.x);</scrip ...
- Python 之路:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
一.Memcached Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负债.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...
- Python之路: socket篇
(默认)与特定的地址家族相关的协议,如果是 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议 sk import socketip_port = ()sk = socket.socket( ...
- javascript 对象的复制
1. jQuery has a method that can be used to deep-clone objects, the$.extend() function. Let’s take a ...
- MySQL查询in操作 查询结果按in集合顺序显示_Mysql_脚本之家
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- Cocos2dx 学习笔记整理----在项目中使用图片(一)
cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资 ...
- javascript 巴西世界杯倒计时
巴西世界杯是足球迷的今年最终关注的事情,做为球迷的我也不例外,自己做了一个巴西世界杯的倒计时. <!DOCTYPE html> <html> <head> < ...
- 16、手把手教你Extjs5(十六)Grid金额字段单位MVVM方式的选择
这一节来完成Grid中的金额字段的金额单位的转换.转换旰使用MVVM特性,总体上和控制菜单的几种模式类似.首先在目录app/view/main/menu下建立文件Monetary.js,用于放金额单位 ...
- windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原
域内所有的域控制器都有一个内容相同的Active Directory,而且 Active Directory 的内容是动态平衡的,也就是说任何一个域控制器修改了 Active Directory,其他 ...
- Delphi 数据类型的说明
简单类型包括实数类型(Real) 和有序类型(Ordinal),有序类型又包括整数类型,字符类型,布尔类型,枚举类型和子界类型等. 数据类型 范围 ...