3.4 资源管理器
这里的资源管理器并非 Windows 下的文件浏览器,而是负责对各种资源,比如字体、
主题、图片、界面数据、字符串和其它数据的进行集中管理的组件。引入资源管理器的目的
有以下几个:
让上层不需要了解存储的方式。在没有文件系统时或者内存紧缺时,把资源转成常量数
组直接编译到代码中。在有文件系统而且内存充足时,资源放在文件系统中。在有网络
时,资源也可以存放在服务器上(暂未实现)。资源管理器为上层提供统一的接口,让
上层而不用关心底层的存储方式
让上层不需要了解资源的具体格式。比如一个名为 earth 的图片,没有文件系统或内存
紧缺,图片直接用位图数据格式存在 ROM 中;而有文件系统时,则用 PNG 格式存放
在文件系统中。资源管理器让上层不需要关心图片的格式,访问时指定图片的名称即可
(不用指定扩展名)
让上层不需要了解屏幕的密度。不同的屏幕密度下需要加载不同的图片,比如 MacPro
的 Retina 屏就需要用双倍解析度的图片,否则就出现界面模糊。AWTK 以后会支持 PC
软件和手机软件的开发,所以资源管理器需要为此提供支持,让上层不需关心屏幕的密
度
对资源进行内存缓存。不同类型的资源使用方式是不一样的,比如字体和主题加载之后
会一直使用,UI 文件在生成界面之后就暂时不需要了,PNG 文件解码之后就只需要保
留解码的位图数据即可。资源管理器配合图片管理器等其它组件实现资源的自动缓存
负责资源管理器和资源管理相关的组件详见图 3.12,网络加载暂未实现。
图 3.12 资源管理器
3.4.1 资源的生成
AWTK 中的资源需要进行格式转换才能使用:
在没有文件系统时或者内存紧缺时,需要把资源转成常量数组直接编译到代码中
XML 格式的 UI 文件需要转换成二进制的格式
XML 格式的主题文件需要转换成二进制的格式
TTF 可以根据需要转换成位图字体
1