摘要:
近年来,智能手机的流行使得越来越多的人选择手机作为社交和聊天的主要工具,手机输入法也在市场需求推动下应运而生。随着当今软件多元化的发展,输入法程序也需要换肤和定制化的功能,为了使多平台输入法兼容皮肤数据文件,设计一个跨平台皮肤引擎的架构和一组抽象控件,是解决此问题的最好方法,所以输入法项目组提出了皮肤引擎的需求。 论文以当前软件引擎行业的发展为基础,软件复用技术为背景,分析了当前Android平台的发展趋势和扩展支持的现状,总结出目前对于输入法皮肤引擎的要求。从技术角度介绍了提升内存使用率,优化软件内存性能的LRU算法的内存管理技术,以及为了加快绘制速率提升软件绘制性能的双缓存技术和局部双缓存技术,并为之后的多平台实现和发现提供了参考和依据。 本文使用Java语言开发了皮肤引擎,其设计上分为七个模块:皮肤文件、控件的分类和构成、控件的绘制、控件的事件判断、键盘切换和换肤策略。其中皮肤文件部分介绍了皮肤引擎中数据来源的皮肤文件数据格式。控件的分类和构成讲解了皮肤引擎中定义的一套抽象的控件组成和分类。控件的绘制和控件的事件判断作为皮肤引擎中界面显示和事件传递的重要组成部分。控件的绘制速率会直接影响按键响应时间,所以优化控件绘制成为皮肤引擎性能优化的关键。通过增加字符串缓存池减少字符串拼接带来的性能损失,同时将相同的按钮背景进行局部缓存,建立渲染绘制和贴图绘制转换的映射表,节省内存存储空间,提升绘制效率。通过上述的设计,系统解决了瓶颈问题,满足了性能上的需求,提升了用户体验。 经过实际的测试,证明了本系统完成了对皮肤数据文件的逆序列化解析,并且实现绘制和传递机制。建立了一整套可以跨平台的抽象架构和控件组成,能够与输入法引擎和输入法配置系统在Android上的结合,能够实现换肤和自定义皮肤的功能,满足皮肤引擎性能需求和功能性的需求,具有较高的复用性和实用价值。
展开