欢迎来到天天文库
浏览记录
ID:19849073
大小:1.50 MB
页数:114页
时间:2018-10-07
《第五章、midp用户界面——底层api》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、J2ME程序设计-第五章MIDP用户界面库-底层API本章要点底层API的作用机制通过API获取显示屏幕的相关属性使用底层API绘图以及处理剪裁区底层API对输入的处理使用底层API过程中的多线程编程定制Item内容提要绘图机制设备和屏幕属性基本作图属性设置基本图形操作输入处理多线程定制Item屏幕显示原理计算机内存中开辟有一个区域,用于存放屏幕中像素信息。一个存储单元存储一个像素的信息计算机以扫描方式,从存储区域中逐个取出存储单元的像素信息,再显示在屏幕的相应像素上所谓在屏幕上绘图,实质是在内存中的显示缓冲区进行绘图内存中的
2、显示缓冲区屏幕屏幕显示原理当往屏幕进行动态绘图时,若图形比较复杂,无法在屏幕扫描的间歇中完成,则屏幕上显示的图形将变得闪烁起来为了避免出现这种现象,通常在内存中开辟第二个显示缓冲区,为区别这两个显示缓冲区,通常将第一个显示缓冲区记为on-screen,第二个显示缓冲区记为off-screen,off-screen并不跟屏幕直接关联,它通过on-screen间接与屏幕关联将要动态绘制的图形先绘制在off-screen,再将绘制好的图形从off-screen复制到on-screen,由于复制速度极快,可在屏幕扫描的间歇中完成,先前屏
3、幕闪烁的弊病得以克服以上即所谓“双缓冲技术”绘图机制底层API为用户提供了更多的界面元素的控制可以直接在屏幕上绘制需要的元素可以控制字体、颜色以及每个象素但是底层API需要在应用程序中显式编程,才能响应用户的键盘输入用户的指点输入绘图机制Displayable类继承关系Canvas绘图机制Canvas类是Displayable的子类全类名:javax.microedition.lcdui.Canvas功能:Canvas类相当于在屏幕上覆盖“画布”,让用户能在屏幕上绘图、处理键盘输入、指点输入等底层事件注意事项:与其它Displa
4、yable类不同,Canvas是一抽象类,用户必须编写继承Canvas类的子类才能使用它。绘图机制Canvas类的paint方法是抽象方法,其原型为:protectedabstractvoidpaint(Graphicsg)只有在Canvas类的子类中重写(即覆盖)paint方法后,才能调用paint()方法paint()方法功能:将Graphics所设置的图形绘制在屏幕显示区上注意事项:当需要更新界面时,系统会自动调用paint方法重新绘制屏幕应用程序不应直接调用paint方法,应当通过repaint()方法间接调用paint
5、方法重新绘制屏幕绘图机制在底层API中,绘图操作就是设置屏幕各个象素颜色和透明度系统不会自动在Canvas中绘制任何内容,也不会自动清除屏幕上的任何内容,一切绘制都要由应用程序显式编程才能实现必须在应用程序显式设置屏幕上每个象素颜色在底层API中,系统不会自动提供屏幕背景,应用程序通过显式地将整个屏幕的颜色设置成相同,来设置屏幕背景在屏幕像素中(准确讲应是内存显示缓冲区的存储单元中),后设置的颜色将覆盖先设置的颜色所以在设置了屏幕背景后,应用程序就可以在背景上绘制图形绘图机制Canvas类提供有如下方法:protectedvoi
6、dhideNotify()当应用程序管理程序将Canvas由可见变为不可见时,系统会自动调用该方法protectedvoidshowNotify()当应用程序管理程序将Canvas由不可见变为可见时,系统会自动调用该方法publicvoidrepaint()隐式调用paint()方法,重绘屏幕所有象素publicvoidrepaint(intx,inty,intwidth,intheight)隐式调用paint()方法,重绘由参数x,y,width,height表示的矩形区域绘图机制publicfinalvoidserviceR
7、epaints()repaint方法和paint方法是异步执行的。即repaint()方法可能不等paint()方法执行完毕,就先自行返回程序通过调用serviceRepaints()方法,让系统立即执行repaint()所调用的paint()方法,使repaint方法和paint方法的执行实现同步。在底层API中,系统可能会将多次repaint请求所要调用的多个paint()方法,优化合并为一个paint操作。设备和屏幕属性MIDP面对的移动设备屏幕差异很大,为了使程序能适用于各种移动设备在MIDP中引入了24位二进制数的颜色
8、模型分别用8位二进制数表示颜色的红、绿、蓝部分。并不要求所有移动设备都支持24位颜色模型某设备不具有显示24位颜色能力是允许的但要求该设备必须能够将24位颜色映射为其可以表示的颜色(或灰度)。设备和屏幕属性在Display类中,提供了如下的方法用于查询设备的颜色
此文档下载收益归作者所有