`
peizhiinfo
  • 浏览: 1426399 次
文章分类
社区版块
存档分类
最新评论

字体大小设置

 
阅读更多

上周项目组提出了给程序加上字体设置的功能,相信这也是很多应用程序都会具有的一个功能。但是实现起来,我发现了很多很多……

首先,由于程序一开始设计的时候,并没有考虑字体设置的功能,讲到这里,不少人已经知道,很有可能会对程序对出不小的修改了。当然,并不是说一开始程序设计的不好,只能说明一个问题:在程序员的世界里,永远不变的就是变化的需求。前面说了,由于程序一开始没有考虑字体设置的功能,而在J2ME平台上,字体大小只有三种(大中小)[ps:其他平台的软件,相信同一项目中,字体的大小也是有一定规范的],那么,把项目中使用到的字体设置为常量,是非常合适的。比如就是以下三种:

GameConst.LFont,GameConst.MFont,GameConst.SFont

当然,还需要一个GameConst.FontSystem来引用其中一种作为程序中使用的字体。这些实现都没有问题,但是现在问题来了,程序中的字体需要根据用户的需求改变。比如 用户选择了小字体,那么就是对应程序中的GameConst.SFont,但是我们开始选择的是GameConst.MFont,怎么办呢?不可能直接修改GameConst.FontSystem啊(它是常量,常量一旦初始化,不能修改)。

我一开始想到的是把它定义为变量不就得了,但是我刚把它定义为变量,我的妈啊,程序里面出现100多处报错。大量的地方引用了GameConst.FontSystem,修改起来实在是不便。所以我就直接定义了一个新的变量,然后在变量上做修改。而利用eclipse的替换功能,把程序中所有的GameConst.FontSystem替换成了定义的变量(感谢eclipse的全局替换功能,技术改变生产力啊……)。

似乎到此问题已经解决了,其实,问题才刚刚开始,由于是J2ME程序,界面的绘制和字体的大小有着密切的关系(不可避免的耦合),可能做过UI的朋友应该知道。那么,由于字体大小改变了,是不是所有的界面都会出现一定的问题呢(外观不协调)?非常幸运的,由于程序中大部分地方都设计的很合理,所以改动的地方不大。但是比较遗憾的是,有些问题还是不得不去面对。比如说,字体设置界面前面,已经出现了不少界面,而由于在字体界面中修改了字体的大小,返回到前面的界面,界面中的子体值同样是修改过的。这个时候,就会出现界面混乱的情况,当然这个时候也可以通过重新初始化前面界面的元素,以达到和当前字体匹配,但是元素实在太多了,麻烦。最后我选择的是删除前面界面,重新生成……

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics