作者:0.0 | 来源:互联网 | 2023-05-19 17:23
FullCanvas是NOKIA所创造的扩展包中的类,其可以替换掉MIDP2.0中Canvas,并直接提供了全屏实现,并且相比与MIDP中的CANVAS做了一些NOKIA机型所支持的特殊操作,处
FullCanvas是NOKIA所创造的扩展包中的类,其可以替换掉MIDP2.0中Canvas,并直接提供了全屏实现,并且相比与MIDP中的CANVAS做了一些NOKIA机型所支持的特殊操作,处理。本文主要讨论两种实现全屏的方式在各类机型中的真实表现,并对大家做机型扩展时的选择有所帮助。
首先目前主要有两大厂商对FullCanvas提供了支持,分别为NOKIA和索爱.但索爱对FullCanvas的支持不是很好,在模拟器上不会出现问题,但在真机中会出现取不到正确的全屏高度,这个在索爱大屏(240*320)的机型中特别明显,如果你使用getHeight()的方式来获取高度再进行计算绘制的话,那绘制出来的界面就不是全屏的了,而索爱对MIDP2.0中的全屏方式支持是OK的。
而NOKIA对FullCanvas的支持就很好,不会出现这样的问题,但NOKIA对MIDP 2.0 Canvas的全屏实现方式setFullScreenMode(true)支持很差,在S60的机型中会出现不能同步取到正确全屏高度,而获取到的是非全屏高度。
而MOTO的机型不支持FULLCANVAS,并且对MIDP 2.0 的CANVAS 的全屏方式也支持的很差,同样不能保证能同步取到正确的全屏高度,这个在V3,E398这些机型中几乎是100%有这个问题,而E680这些机型就不会有这些问题。
要解决这种问题,当然最直接的就是写死全屏高度,并且以后的坐标计算都使用这个高度进行计算,不要使用getHeight(),但如果你想做一个自适应的UI设计这种方式就不适用了。
我们从上面的分析可以知道NOKIA对FullCanvas支持很好,索爱对MIDP 2.0的全屏方式支持很好,那我们做自适应的UI版本是就可以索爱的使用MIDP2.0的方式,而NOKIA的使用FullCanvas,这样至少可以保证NOKIA和索爱机型实现自适应。而MOTO的话,在V3.E398机型中只能写死高度了,通常都是在获取的高度加21或22的高度来实现全屏。
通过这两种方式在不同机型的实现情况,可以看出各种机型对J2ME的支持都不统一规范,甚至对MIDP2.0的标准都不能完全规范实现。我们在做多个版本时只能根据他们的特性进行区分实现了,而这也增加了我们程序开发和后期版本管理的复杂度(一个自适应的程序都必须至少要有3种包)。