说明

换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载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,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文件即可,如:

最新文章

  1. XStream简单入门
  2. 安装oracle 10g 文件系统
  3. HQL查询——关联和连接
  4. 描述Linux下文件删除的原理(计时3分钟)
  5. 一. Linux 常用命令总结
  6. Java基础之访问文件与目录——测试文件或目录的路径(TryPath)
  7. sql 邮件发送测试情况
  8. Mac添加环境变量的三种方法
  9. C程序内存分配
  10. QTcpsocket 实现FTP
  11. 卸载Symantec Endpoint Protection, 无需password的卸载方法
  12. HDU-1978How many ways
  13. 构建WDK驱动出现fatal error U1087: cannot have : and :: dependents for same target
  14. 【转】height,posHeight和pixelHeight区别
  15. 爬虫四大金刚:requests,selenium,BeautifulSoup,Scrapy
  16. $O(n+log(mod))$求乘法逆元的方法
  17. 数据重组:对一堆相似字典进行分类统计(shidebin)
  18. [Unity插件]Lua行为树(二):树结构
  19. 安装完打开 eclipse 提示 JVM 版本较低
  20. Jquery 获取第一个子元素

热门文章

  1. twisted(转)
  2. C# 详解反射
  3. 【JZOJ4813】【NOIP2016提高A组五校联考2】running
  4. php的模板原理
  5. 【Django入坑之路】Django后台上传图片,以及前端的显示
  6. oracle-ORA-00942错误
  7. PLAY2.6-SCALA(四) 请求体解析器
  8. mysql操作手册2
  9. 我的iOS高效编程秘诀—坚持编程习惯
  10. python 语法错误