1.重绘和强制重绘
在用J2ME的低级UI时,所有的界面绘制要靠自己来实现,主要是在paint消息中来做,这里涉及几个接口:paint,repaint,serviceRepaints,callSerially,
paint
paint相当于是个回调函数,被J2ME主线程(处理UI和事件)来调用,任何时候我们都不能自己直接调用paint,程序在paint里面按部就班的画出界面即可,paint会带一个Graphics参数,用这个graphics去作图就可以了。
现在的很多J2ME平台已经默认支持双缓冲,所以在paint执行时,实际上界面并没有画出,而是等到paint执行完成后,一次性刷新到屏幕上的,不过这是和平台相关的。
repaint
这个是通知系统,我们需要刷新界面了,但仅仅是个通知,repaint会立即返回(无阻塞),paint会在合适的时候被系统调用,所以paint和repaint不是一一对应的,有一个repaint并不意味着一定会触发一个paint,多个repaint可能会被合并到一个paint调用。
如果在paint里面调用repaint,那么就意味着这个paint结束后会被再次调用,这在有些需要连续不段的刷屏的程序中可能有用,不过显然不太合适,比如下面这种代码。
public void paint (Graphics g) {
repaint();
}
serviceRepaints
如果调用serviceRepaints,则会直接立刻重绘界面,阻塞式调用,直到paint完成。所以如果我们写出下面的paint接口:
public void paint (Graphics g) {
repaint();
serviceRepaints();
}
后果相当于递归调用,并很快造成内存耗尽(Out of memory)异常,因为serviceRepaints里面又会直接调用paint(),所以使用serviceRepaints一定要小心,可以在某些地方使用serviceRepaints,但绝不能在paint里面调用。
callSerially
这个接口可以将一个Runable的接口抛在系统队列尾部,处理完消息之后,执行这个Runable接口的run,这在有些使用paint绘制的程序中会用到,可以在paint完以后,通过callSerially触发run接口,表示界面已经画完,可以做别的事情了,又不会阻塞系统队列。
2.可视性通知
Protected void hideNotify()
Protected void showNotify()
当Canvas被隐藏和显示的时候,两个方法被自动被系统调用。Canvas子类也可以通过重写这些方法来进行这些通知信息的接收工作。
3.坐标变换和图形剪裁
Graphics 提供了以下方法来进行坐标变换:
Public void translate(int x,int y)
Public int getTranslateX()
Public int getTranslateY()
当translate被调用时,偏移量被加到每个X和Y坐标轴上,当前的原点可以通过getTranslateX和getTranslateY方法得到
MIDP系统存在一个单一的裁剪,提供了当前的裁剪矩形和一个给定矩形相交(clipRect)以及完全设置裁剪矩形(setClip)的操作。图形操作所涉及的像素就是裁剪矩形内的像素,换句话说,裁剪矩形外的像素不被绘制(例如,有的游戏中只需要绘制屏幕的一部分)
Public void setClip(int x,int y,int width,int height)
Public int getClipX()
Public int getClipY()
Public int getClipWidth()
Public int getClipHeight()
Public void clipRect(int x,int y,int width,int height)
4.不变图像和可变图像
创建常规的不变图像:
1. createImage(String name)
2. createImage(InputStream stream)
3. createImage(byte[] imageDtat,int imageOffset,int imageLength)
4. createImager(Image source)
5. createImage(Image image,int x,int y,int width,int height,int transform)
从源图像中选取一个区域进行翻转,生成一个新的不变图像,MIDP2.0新方法
6. createRGBImage(int[] rgb,int width,int height,boolean processAlpha)
从一系列RGBA数据中创建一个不变图像,MIDP2.0新方法
使用以下方法能够截取图像的任何部分绘制到屏幕上,并且该方法允许对源图像进行翻转和镜像处理
Void drawRegion(Image src,int x_src,int y_src,int width,int height,int transform,int x_dest,int y_dest,int anchor);
分享到:
相关推荐
非官方详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分。
J2ME三种低级用户界面事件处理技术比较
第五章低级用户界面及事件处理--j2me开发.ppt
第1章 走进J2ME移动开发世界 第2章 面向移动信息设备的 第3章 移动信息设备简表 第4章 搭建移动应用开发环境 第5章 MIDlet编程基础 第6章 MIDP 高级界面编程 第7章 低级用户界面编程
本书内容包括J2ME简介,J2ME开发环境的安装及配置,MIDP程序开发,高级用户界面及事件处理,低级用户界面及事件处理,手机游戏项目开发介绍,手机游戏开发及案例分析,数据存储,无线网络开发和移动银行实例等。...
第1章-J2ME简介 第2章-J2ME开发环境的安装及配置 ...第5章-低级用户界面及事件处理 第6章-手机游戏项目开发介绍 第7章-手机游戏开发 第8章-游戏案例分析 第9章-数 据 存 储 第10章-无线网络开发第 11章-移动银行实例
目 录 第一章 绪论 1 ...2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 第三章 手机游戏开发过程 16 3.1 贪吃蛇游戏的规则简介以及开发环境 16 3.1.1 贪吃蛇游戏的规则简介 16 3.
全书由10章组成,内容包括概论,连接设备与连接受限设备的配置和简表、MIDP编程基础、J2ME 应用开发环境与工具、MIDP高级用户界面设计、MIDP低级用户界面设计、MIDP游戏程序设计、MIDP 多媒体程序设计、MIDP数据管理...
┌第二章 高级用户界面设计 ┃2_1.信息提示Alert类 ┃2_2.文本界面程序设计 ┃2_3.Form界面程序设计 ┃2_4.列表界面程序设计 ┃2_5.Image类和图形列表提示框 ┃2_6.Form多种控件及跑马灯 ┃2_7.Form界面监听控件...
本书内容包括J2ME简介,J2ME开发环境的安装及配置,MIDP程序开发,高级用户界面及事件处理,低级用户界面及事件处理,手机游戏项目开发介绍,手机游戏开发及案例分析,数据存储,无线网络开发和移动银行实例等。
2.5 用户界面(LCDUI 2.5.1 UI基础 2.5.2 高级UI 2.5.3 低级UI 第三章 手机游戏开发过程 3.1 贪吃蛇游戏的规则简介以及开发环境 3.1.1 贪吃蛇游戏的规则简介 第四章 程序的调试与运行 4.1游戏的调试 22 4.2 ...
第五节 用户界面(LCDUI 13 一、 UI基础 14 二、 高级UI 14 三、低级UI 15 第三章 手机游戏开发过程 16 第一节 贪吃蛇游戏的规则简介以及开发环境 16 一、贪吃蛇游戏的规则简介 16 二、开发环境 16 第二节 详细设计 ...
使用低级用户界面技术制作j2me应用程序的欢迎界面的方法
第一章 绪论 1 ...2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 第三章 手机游戏开发过程 16 3.1 贪吃蛇游戏的规则简介以及开发环境 16 3.1.1 贪吃蛇游戏的规则简介 16 3.1.2 开
主要有高级AIP用户界面设计,低级AIP设计,记录管理,无线处理,安全技术,多媒体。。。
3用户界面 4高级UI组件开发 5低级UI组件开发 6记录管理系统(RMS) 7异常处理 8多线程应用 9移动网络应用 10文件管理 11个人信息管理 12无线消息服务 13Push技术 14XMl应用 15多媒体开发 16游戏开发 17设计模式 18单元...
ch03 MIDP用户界面对象 ch04 图形处理及低级事件处理 ch05 多线程编程 ch06 I/O及网络编程 ch07 数据库RMS编程 ch08 浮点数编程 ch09 多媒体及GAME API编程 ch10 安全、加密及代码优化 ch11 扩展类库及供应...