热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

FullCanvas与Canvas全屏模式真机使用分析

FullCanvas是NOKIA所创造的扩展包中的类,其可以替换掉MIDP2.0中Canvas,并直接提供了全屏实现,并且相比与MIDP中的CANVAS做了一些NOKIA机型所支持的特殊操作,处

FullCanvasNOKIA所创造的扩展包中的类,其可以替换掉MIDP2.0Canvas,并直接提供了全屏实现,并且相比与MIDP中的CANVAS做了一些NOKIA机型所支持的特殊操作,处理。本文主要讨论两种实现全屏的方式在各类机型中的真实表现,并对大家做机型扩展时的选择有所帮助。

 

首先目前主要有两大厂商对FullCanvas提供了支持,分别为NOKIA和索爱.但索爱对FullCanvas的支持不是很好,在模拟器上不会出现问题,但在真机中会出现取不到正确的全屏高度,这个在索爱大屏(240*320)的机型中特别明显,如果你使用getHeight()的方式来获取高度再进行计算绘制的话,那绘制出来的界面就不是全屏的了,而索爱对MIDP2.0中的全屏方式支持是OK的。

 

NOKIAFullCanvas的支持就很好,不会出现这样的问题,但NOKIAMIDP 2.0 Canvas的全屏实现方式setFullScreenMode(true)支持很差,在S60的机型中会出现不能同步取到正确全屏高度,而获取到的是非全屏高度。

 

MOTO的机型不支持FULLCANVAS,并且对MIDP 2.0 CANVAS 的全屏方式也支持的很差,同样不能保证能同步取到正确的全屏高度,这个在V3,E398这些机型中几乎是100%有这个问题,而E680这些机型就不会有这些问题。

 

要解决这种问题,当然最直接的就是写死全屏高度,并且以后的坐标计算都使用这个高度进行计算,不要使用getHeight(),但如果你想做一个自适应的UI设计这种方式就不适用了。

我们从上面的分析可以知道NOKIAFullCanvas支持很好,索爱对MIDP 2.0的全屏方式支持很好,那我们做自适应的UI版本是就可以索爱的使用MIDP2.0的方式,而NOKIA的使用FullCanvas,这样至少可以保证NOKIA和索爱机型实现自适应。而MOTO的话,在V3.E398机型中只能写死高度了,通常都是在获取的高度加2122的高度来实现全屏。

 

  通过这两种方式在不同机型的实现情况,可以看出各种机型对J2ME的支持都不统一规范,甚至对MIDP2.0的标准都不能完全规范实现。我们在做多个版本时只能根据他们的特性进行区分实现了,而这也增加了我们程序开发和后期版本管理的复杂度(一个自适应的程序都必须至少要有3种包)。

 

推荐阅读
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 热血合击脚本辅助工具及随机数生成器源码分享
    本文分享了一个热血合击脚本辅助工具及随机数生成器源码。游戏脚本能够实现类似真实玩家的操作,但信息量有限且操作不可控。热血合击脚本辅助工具可以帮助玩家自动刷图、换图拉怪等操作,并提供了雷电云手机的扩展服务。此外,还介绍了使用mt_rand函数作为随机数生成器的代码示例。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
author-avatar
0.0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有