background image

Java 教程:J2ME 编程之手机横竖屏切换总结

随着手机的功能越来越丰富,支持横竖屏切换的手机越来越多,在手机软件开发中也必
须要处理这个功能了。下面对于使用 J2ME 技术进行编程时对于横竖屏(转屏)切换时的相
关知识进行一下小结。
  1、如何判断横竖屏切换
  横竖屏切换由手机系统自动完成的,在 J2ME 中只能检测到这种变换,判断横竖屏
切换的方法有 2 种:
  A)线程中每次检测法(轮询方式)
  这种方式是在程序的线程中每隔一定的时间间隔,就获得一次屏幕的宽度和高度,
然后判断宽度和高度是否变化,如果宽度和高度和已有的宽度和高度相比发生了变化,
至于是变化成横屏还是竖屏则只需要比较宽高就可以实现。在判断到横竖屏切换时,执行
逻辑代码即可。
  使用这种方式由于每次线程循环都需要检测,所以执行效率不高,但是由于一些转
屏手机不支持 sizeChanged 的方法回调,所以使用这种方式的通用性是最高的,是经常被
使用的方法。
  B)sizeChanged 法(中断方式)
  这种方式是指如果转屏手机对于 MIDP 支持比较规范,则当横竖屏切换时会自动调
用 Canvas 类中的 sizeChanged 方法,这样就需要在 Canvas 的子类中覆盖该方法即可,在
该方法内部书写横竖屏切换的逻辑处理代码即可。
  使用这种方式由于是系统自动调用,所以执行效率很好,但是由于部分手机实现的
不规范,所以通用性没有第一种方式高。
  说明:高级用户界面自动切换,不需要书写处理的代码。
  2、如何处理横竖屏切换
  在检测到横竖屏切换以后,就需要对于横竖屏切换进行处理了,处理的方式一般有
也有两种:
  A)简单提示法
  这种处理方式时指只实现一种屏幕模式下的逻辑,而在另外一种屏幕方式下显示提

示。例如只实现竖屏模式的界面,在横屏模式下,只出现提示: 请在竖屏模式下使用本

程序 。
  使用这种方式程序实现比较简单,只需要实现一套界面即可,适合于比较简单的程
序。
  B)实现两套 UI 法
  这种处理方式时指在一个程序中实现两套界面:一套横屏一套竖屏。可以在程序中设
置一个 screenType 的参数,在每个节目的绘制方法中根据该参数判断是横屏还是竖屏,
然后执行不同的绘制代码即可。
  使用这种方式程序实现比较友好,但是程序开发和测试的工作量都要稍微大一点,
而且横竖屏切换时数据的变换也比较麻烦。
  3、其它说明