`

J2ME低级用户界面

阅读更多

1.重绘和强制重绘

在用J2ME的低级UI时,所有的界面绘制要靠自己来实现,主要是在paint消息中来做,这里涉及几个接口:paintrepaintserviceRepaintscallSerially

paint

paint相当于是个回调函数,被J2ME主线程(处理UI和事件)来调用,任何时候我们都不能自己直接调用paint,程序在paint里面按部就班的画出界面即可,paint会带一个Graphics参数,用这个graphics去作图就可以了。

现在的很多J2ME平台已经默认支持双缓冲,所以在paint执行时,实际上界面并没有画出,而是等到paint执行完成后,一次性刷新到屏幕上的,不过这是和平台相关的。

repaint

这个是通知系统,我们需要刷新界面了,但仅仅是个通知,repaint会立即返回(无阻塞),paint会在合适的时候被系统调用,所以paintrepaint不是一一对应的,有一个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被调用时,偏移量被加到每个XY坐标轴上,当前的原点可以通过getTranslateXgetTranslateY方法得到

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三种低级用户界面事件处理技术比较

    J2ME三种低级用户界面事件处理技术比较

    第五章低级用户界面及事件处理--j2me开发.ppt

    第五章低级用户界面及事件处理--j2me开发.ppt

    j2me讲义--从入门到精通

    第1章 走进J2ME移动开发世界 第2章 面向移动信息设备的 第3章 移动信息设备简表 第4章 搭建移动应用开发环境 第5章 MIDlet编程基础 第6章 MIDP 高级界面编程 第7章 低级用户界面编程

    J2ME实用教程.rar

    本书内容包括J2ME简介,J2ME开发环境的安装及配置,MIDP程序开发,高级用户界面及事件处理,低级用户界面及事件处理,手机游戏项目开发介绍,手机游戏开发及案例分析,数据存储,无线网络开发和移动银行实例等。...

    J2ME实用教程(有需要的可下载)

    第1章-J2ME简介 第2章-J2ME开发环境的安装及配置 ...第5章-低级用户界面及事件处理 第6章-手机游戏项目开发介绍 第7章-手机游戏开发 第8章-游戏案例分析 第9章-数 据 存 储 第10章-无线网络开发第 11章-移动银行实例

    JAVA基于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.

    J2ME移动设备程序设计分卷1

    全书由10章组成,内容包括概论,连接设备与连接受限设备的配置和简表、MIDP编程基础、J2ME 应用开发环境与工具、MIDP高级用户界面设计、MIDP低级用户界面设计、MIDP游戏程序设计、MIDP 多媒体程序设计、MIDP数据管理...

    tengge手机端j2me编程教程完整版

    ┌第二章 高级用户界面设计 ┃2_1.信息提示Alert类 ┃2_2.文本界面程序设计 ┃2_3.Form界面程序设计 ┃2_4.列表界面程序设计 ┃2_5.Image类和图形列表提示框 ┃2_6.Form多种控件及跑马灯 ┃2_7.Form界面监听控件...

    J2ME实用教程-附源码

    本书内容包括J2ME简介,J2ME开发环境的安装及配置,MIDP程序开发,高级用户界面及事件处理,低级用户界面及事件处理,手机游戏项目开发介绍,手机游戏开发及案例分析,数据存储,无线网络开发和移动银行实例等。

    基于J2ME的手机游戏开发

    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 ...

    J2ME贪吃蛇游戏论文

    第五节 用户界面(LCDUI 13 一、 UI基础 14 二、 高级UI 14 三、低级UI 15 第三章 手机游戏开发过程 16 第一节 贪吃蛇游戏的规则简介以及开发环境 16 一、贪吃蛇游戏的规则简介 16 二、开发环境 16 第二节 详细设计 ...

    使用Canvas建立应用程序的欢迎界面

    使用低级用户界面技术制作j2me应用程序的欢迎界面的方法

    JAVA基于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 开

    j2me 很值得下在 .

    主要有高级AIP用户界面设计,低级AIP设计,记录管理,无线处理,安全技术,多媒体。。。

    j2me手机开发相关源代码

    3用户界面 4高级UI组件开发 5低级UI组件开发 6记录管理系统(RMS) 7异常处理 8多线程应用 9移动网络应用 10文件管理 11个人信息管理 12无线消息服务 13Push技术 14XMl应用 15多媒体开发 16游戏开发 17设计模式 18单元...

    javac#开发手机程序及移动应用

    ch03 MIDP用户界面对象 ch04 图形处理及低级事件处理 ch05 多线程编程 ch06 I/O及网络编程 ch07 数据库RMS编程 ch08 浮点数编程 ch09 多媒体及GAME API编程 ch10 安全、加密及代码优化 ch11 扩展类库及供应...

Global site tag (gtag.js) - Google Analytics