`

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低级UI文字分行

    本文将详细介绍如何在J2ME低级用户界面(UI)中实现文字的分行功能,并提供一个实用的函数示例。 首先,我们要理解的是,文字分行的核心在于找到合适的位置将字符串分割为多个适合指定宽度的子字符串。在给定的代码...

    J2ME低级界面全示例Eclipse

    **J2ME低级界面全示例Eclipse** Java Micro Edition (J2ME) 是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如手机、智能手表等。J2ME提供了多种框架来构建应用程序,其中的低级界面(Low-Level User ...

    J2ME低级界面汉字输入

    总的来说,J2ME低级界面的汉字输入是一个相对复杂的过程,需要对J2ME的事件处理、字库管理和用户界面设计有深入理解。通过掌握这些技术,开发者可以创造出更加本地化且具有高度定制性的移动应用。

    j2me低级界面字符串自动换行代码包

    标题中的“j2me低级界面字符串自动换行代码包”指的是在Java 2 Micro Edition (J2ME)平台上,针对图形用户界面(GUI)开发的一种解决方案,它涉及到字符串处理和显示,特别是在有限的屏幕空间内自动进行换行。...

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

    ### J2ME三种低级用户界面事件处理技术深入解析 #### 覆盖keyPressed方法:基础事件处理 在J2ME(Java 2 Micro Edition)的低级用户界面编程中,事件处理是一项核心技能,尤其对于手机键盘事件的处理至关重要。...

    j2me低级api与事件demo.rar

    《J2ME低级API与事件处理:深入解析与示例》 J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。J2ME的低级API,也称为CLDC(Connected ...

    j2me高级用户界面.ppt

    【J2ME高级用户界面详解】 Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的嵌入式设备,如移动电话和掌上电脑。在J2ME中,开发手机应用程序时,创建吸引人的用户界面(UI)是至关重要的...

    J2me中低级界面字体处理.doc

    在J2ME中,我们不能像在高级用户界面那样自由选择各种字体,因为手机设备的资源限制,只能使用手机支持的默认字体。`Font`类是用于处理字体的核心类,它提供了创建和管理字体的方法。 创建`Font`对象时,主要使用`...

    j2me高级界面和低级界面的切换

    在Java ME(J2ME)平台上,开发移动应用程序时,我们经常会遇到高级界面(High-Level User Interface, HLUI)和低级界面(Low-Level User Interface, LLUI)的切换问题。高级界面通常指的是那些基于MIDP(Mobile ...

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

    【低级用户界面与事件处理】在J2ME开发中,低级用户界面是指通过基本的API进行定制化的界面设计,通常涉及到Canvas类的使用。Canvas是Displayable的一个子类,提供了一种直接操作设备屏幕像素的能力,适用于需要精细...

    J2ME源码,低级界面输入数字

    MIDP提供了图形用户界面(GUI)和网络访问等功能,而KVM则负责执行Java字节码。在一些早期或者功能有限的设备上,可能需要使用低级界面来实现更高效或自定义的用户交互,这通常是通过直接操作设备硬件按键来实现的。...

    J2ME低级Canvas实现九宫图

    九宫图,也被称为九宫格,是一种常见的布局方式,常用于游戏、菜单系统或者简单的用户界面设计。在手机平台上,J2ME提供了基础的图形绘制功能,使得开发者能够构建丰富的交互式应用。 首先,我们要理解J2ME中的...

    J2ME 低级画布实现中文输入

    在MIDP中,Canvas是基础的绘图组件,可以用来创建自定义的用户界面。 在J2ME中,低级画布(Custom Canvas)是继承自`javax.microedition.lcdui.Canvas`类的自定义类。开发者通常会重写`paint()`方法来实现自己的...

    j2meUI低级界面开发实例

    在 J2ME 中,用户界面 (UI) 的创建对于构建交互式的移动应用程序至关重要。本篇将深入探讨 J2ME UI 的低级界面开发实例,包括图片加载和按钮选择等功能。 首先,我们要理解 J2ME UI 开发的基础组件,主要由 MIDP ...

    j2me 低级UI制作菜单 例子

    在Java 2 Micro Edition (J2ME)平台上开发移动应用时,我们经常需要创建用户界面(UI)以提供良好的用户体验。由于资源有限,J2ME提供了两种主要的UI框架:高级UI(MIDP CLDC)和低级UI(通常基于Graphics类)。本教程...

    java低级用户界面及事件处理.ppt

    【Java低级用户界面及事件处理】主要涉及的是在Java ME (Micro Edition)环境中,针对MIDP(Mobile Information Device Profile)平台进行低级UI设计和事件管理的技术。这一部分的内容通常用于创建自定义的界面组件,...

    J2ME相关技术,介绍J2ME的问题处理

    1. J2ME游戏开发人员:专注特定平台的游戏开发,需熟练掌握高级和低级用户界面、线程和网络编程。 2. J2ME应用开发人员:开发移动应用,如定位服务和移动商务,需精通高级用户界面、线程和网络编程。 3. J2ME游戏...

    J2ME开发源码大全

    1. **用户界面**:使用J2ME的LWUIT( Lightweight UI Toolkit)或MIDP的Canvas类创建用户界面。LWUIT提供了一组丰富的组件,可以创建更具吸引力的图形用户界面。 2. **网络编程**:使用J2ME的`javax.microedition....

    J2ME移动计费支付模块

    6. **用户界面模块**:实现与用户的交互,包括接收输入、显示结果,使用J2ME提供的高级和低级用户界面组件。 7. **XML签名/验证模块**:对数据进行签名以确保数据完整性,使用SHA1算法生成摘要,配合Bouncy Castle ...

Global site tag (gtag.js) - Google Analytics