Flex AIR应用换肤功能(Android和IOS)
说明换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载swf文件的过程,而这些swf文件则有css文件编译而来。 关于换肤功能,在android和ios系统的实现方式是不同的。主要原因,是因为ios不支持本地加载(ipa中包含)多个swf文件。 ? 换肤基础1)?原理?:就是将各种不同的css文件先编译成swf,然后用StyleManager类的loadStyleDeclarations方法加载换肤的swf。 2)?基础:?定义css文件,如下: /*?CSS?file?*/ @namespace?s?"library://ns.adobe.com/flex/spark"; @namespace?mx?"library://ns.adobe.com/flex/mx"; s|Application{ ??? ?font-size:?12; ??? ?skin-class:?ClassReference("IndexSkin"); } 注意如果是用skin-class,则皮肤文件必须与样式文件放在同一目录下,否则有问题. 右击css文件?选择‘将css文件编译为swf’,这样就会在编译的目录下产生对应的swf文件。 3)?应用: FlexGlobals.topLevelApplication.styleManager.loadStyleDeclarations2("com/xx/xx/xx/cloudstudio/xx/styles/StyleChoice1.swf",true); Android换肤 1.??目录结构 2. 定义四套css文件
需要将这四套css文件编译为swf文件,可通过右键点击该css文件,选择“将CSS编译为SWF”即可。 3. ?使用换肤功能
注:?标记代码中,ApplicationDomain.currentDomain建议就这么写,因为在ios系统中,这个是必须的,它可以是该swf文件与主swf文件放在同一个域中进行访问。 styleManager.loadStyleDeclarations2(skinName,true,?ApplicationDomain.currentDomain,255)">null);其实质就是去加载本地的swf文件。 4. 打包: 对于Android系统,打包可以直接通过FB进行。打包时,需要将要使用的swf文件都打进apk中。 Apk解压后可看见:
IOS换肤:? ? 说明: ?ios不建议使用换肤功能,因为会影响系统的性能,严重情况下会使应用的崩溃,无法通过苹果的审核。
1?) ?开发说明:?IOS换肤的实现和Android有所不同,主要是IOS系统不支持同时加载多个swf文件。所以,如果想在ios系统上实现换肤功能,则必须使用服务器文件托管的方式,即将swf文件放到远程服务器上,由本地区访问远程的swf文件,完成换肤功能。 2)??使用txt文件声明要托管的swf文件 注:?txt文件里的内容必须按照上图所示格式编写,即每一个swf文件以换行分隔。 3)?在应用程序描述符文件中配置该txt文件
注:?表示根目录下的.txt文件: 4)??使用ADT的AOT模式打包ipa
注:要将txt文件、编译后的几个swf文件都进行打包。打包结束后,会生成新的文件夹:
5)??使用打包后生成的swf文件,实现换肤功能 将externalStrippedSwfs文件夹中的swf文件都放到远程的服务器中,然后本地访问这些swf文件即可,如: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |