J2ME中横竖屏切换知识小结

前几天在清源教育网站看到这么一篇文章,感觉对像我一样的开发人员来说特别有帮助,现在贴出来,希望能帮助大家,另外清源教育网站上有不少这类技术文章,有兴趣得大家可以去看看。好了,话不多说,接下来进入正题:
  随着手机的功能越来越丰富,支持横竖屏切换的手机越来越多,在手机软件开发中也必须要处理这个功能了。下面对于使用J2ME技术进行编程时对于横竖屏(转屏)切换时的相关知识进行一下小结。
  1、如何判断横竖屏切换
  横竖屏切换由手机系统自动完成的,在J2ME中只能检测到这种变换,判断横竖屏切换的方法有2种:
  A)线程中每次检测法(轮询方式)
  这种方式是在程序的线程中每隔一定的时间间隔,就获得一次屏幕的宽度和高度,然后判断宽度和高度是否变化,如果宽度和高度和已有的宽度和高度相比发生了变化,至于是变化成横屏还是竖屏则只需要比较宽高就可以实现。在判断到横竖屏切换时,执行逻辑代码即可。
  使用这种方式由于每次线程循环都需要检测,所以执行效率不高,但是由于一些转屏手机不支持sizeChanged的方法回调,所以使用这种方式的通用性是最高的,是经常被使用的方法。
  B)sizeChanged法(中断方式)
  这种方式是指如果转屏手机对于MIDP支持比较规范,则当横竖屏切换时会自动调用Canvas类中的sizeChanged方法,这样就需要在Canvas的子类中覆盖该方法即可,在该方法内部书写横竖屏切换的逻辑处理代码即可。
  使用这种方式由于是系统自动调用,所以执行效率很好,但是由于部分手机实现的不规范,所以通用性没有第一种方式高。
  说明:高级用户界面自动切换,不需要书写处理的代码。
  2、如何处理横竖屏切换
  在检测到横竖屏切换以后,就需要对于横竖屏切换进行处理了,处理的方式一般有也有两种:
  A)简单提示法
  这种处理方式时指只实现一种屏幕模式下的逻辑,而在另外一种屏幕方式下显示提示。例如只实现竖屏模式的界面,在横屏模式下,只出现提示:“请在竖屏模式下使用本程序”。
  使用这种方式程序实现比较简单,只需要实现一套界面即可,适合于比较简单的程序。
  B)实现两套UI法
  这种处理方式时指在一个程序中实现两套界面:一套横屏一套竖屏。可以在程序中设置一个screenType的参数,在每个节目的绘制方法中根据该参数判断是横屏还是竖屏,然后执行不同的绘制代码即可。
  使用这种方式程序实现比较友好,但是程序开发和测试的工作量都要稍微大一点,而且横竖屏切换时数据的变换也比较麻烦。
  3、其它说明
  在实现横竖屏切换时,有些知识会帮助你实现一些很实用的功能:
  在Nokia手机上禁止横竖屏切换:
  在S60 5th 及以上版本中,可以通过在jad或manifest文件中通过指定如下属性来指定程序运行时的屏幕类型:
  竖屏:Nokia-MIDlet-App-Orientation:portrait

  横屏:Nokia-MIDlet-App-Orientation:landscape

  http://v.qq.com/boke/page/r/e/7/r0116jgs9e7.html

  http://v.qq.com/boke/page/a/w/i/a01161llbwi.html

  http://my.tv.sohu.com/us/176572703/59503205.shtml

  http://blog.tianya.cn/blogger/post_read.asp?BlogID=4758970&PostID=52461316

  http://www8593393.blog.sohu.com/

  http://jsk0592.blog.163.com/

  http://www.tudou.com/programs/view/5CXOBCaarcc/

  http://www.tudou.com/programs/view/-YM4X7VX3hg/

  http://www.tudou.com/programs/view/jNymh-dwUPs/

  http://blog.cnfol.com/qzjsk120/article/1376982152-88770173.html

  http://blog.sina.com.cn/s/blog_b4487fd00101qqsd.html

  http://blog.cnfol.com/qzjsk120/article/1376827719-88722891.html

  http://blog.csdn.net/u011735542/article/details/10051207

  http://blog.csdn.net/u011735542/article/details/10060361

  http://blog.cnfol.com/qzjsk120/article/1376872696-88725025.html

  http://blog.cnfol.com/qzjsk120/article/1376873089-88725179.html

  http://blog.qzwb.com/index.php/uid-95640-action-viewspace-itemid-44388

  http://v.qq.com/boke/page/q/1/8/q01163jgu18.html

  http://v.qq.com/boke/page/z/g/a/z01168wuwga.html

  http://jsk0592.blog.163.com/blog/static/223722109201371995758477/

  http://www8593393.blog.sohu.com/274522215.html

  http://t.sohu.com/people?uid=1695594214&1376877672627

  http://www.xm7788.cn/home.php?mod=space&uid=37810&do=blog&quickforward=1&id=612

  http://my.tv.sohu.com/us/176572703/59457533.shtml

  http://bbs.51sleep.com/thread-110354-1-1.html

  http://bbs.51sleep.com/thread-110353-1-1.html

  http://bbs.nhaidu.com/forum.php?mod=viewthread&tid=644297&extra=page%3D1

  http://bbs.nhaidu.com/forum.php?mod=viewthread&tid=644296&extra=page%3D1

  http://v.qq.com/boke/page/s/w/m/s011636b3wm.html

  http://www.mala.cn/thread-7784157-1-1.html

  http://blog.sina.com.cn/s/blog_b4487fd00101qq22.html

  http://blog.sina.com.cn/s/blog_b4487fd00101qq25.html

  http://blog.sina.com.cn/s/blog_c36d52120101n6yb.html

  http://blog.sina.com.cn/s/blog_c36d52120101n6ye.html

  http://blog.qzwb.com/index.php/uid-132030-action-viewspace-itemid-44467

  http://jsk0592.blog.163.com/blog/static/22372210920137201552128/

  http://blog.sina.com.cn/s/blog_c36d52120101n7w7.html

  http://blog.sina.com.cn/s/blog_adbfad940101f9q9.html

  http://blog.sina.com.cn/s/blog_adbf7ca40101dv7j.html

  http://blog.sina.com.cn/s/blog_ae7e6ed40101pb73.html

  http://www.xm7788.cn/home.php?mod=space&uid=37810&do=blog&quickforward=1&id=615

  http://blog.sina.com.cn/s/blog_b4fcbe580101fasu.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值