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


    说明

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


  • 相关阅读:
    spring框架里面处理中文匹配
    日常问题记录--使用fiddler自动响应jsonp结构的响应
    linux命令--pamp
    每天一个linux命令--nice命令
    阿里RAP+fiddler实现app原生应用的cgi数据mock----- (二)添加mock规则,随机返回4中类型(不同长度)的数据
    父子组件之间传递数据
    redux-API(二)
    redux数据流
    Redux 的基础概念-API
    react-redux要点梳理
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330053.html
Copyright © 2020-2023  润新知