加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex AIR应用换肤功能(Android和IOS)

发布时间:2020-12-15 03:38:41 所属栏目:百科 来源:网络整理
导读:说明 换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载 swf 文件的过程,而这些 swf 文件则有 css 文件编译而来。 关于换肤功能,在 android 和 ios 系统的实现方式是不同的。主要原因,是因为 ios 不支持本地加载( ipa 中包含)多个 swf 文件

说明

换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载swf文件的过程,而这些swf文件则有css文件编译而来。

关于换肤功能,在androidios系统的实现方式是不同的。主要原因,是因为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)??使用ADTAOT模式打包ipa


注:要将txt文件、编译后的几个swf文件都进行打包。打包结束后,会生成新的文件夹:


5)??使用打包后生成的swf文件,实现换肤功能

externalStrippedSwfs文件夹中的swf文件都放到远程的服务器中,然后本地访问这些swf文件即可,如:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读