import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class AlphaBlending extends MIDlet implements CommandListener {
private Display display;
private Form. form;
private Command exitCommand;
private Command startCommand;
private Command backCommand;
private AlphaCanvas alphaCanvas;
private static final String IMAGE_NAME = "/image.png";
public AlphaBlending() {
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.EXIT, 2);
startCommand = new Command("Start", Command.SCREEN, 1);
backCommand = new Command("Back", Command.BACK, 1);
alphaCanvas = new AlphaCanvas(IMAGE_NAME);
form. = new Form("Alpha Blending Demo");
form.append(new StringItem(null, "Press 'Start' to run demo."));
form.addCommand(exitCommand);
form.addCommand(startCommand);
form.setCommandListener(this);
}
public void startApp() {
display.setCurrent(form);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}else if (c == startCommand) {
display.setCurrent(alphaCanvas);
alphaCanvas.addCommand(backCommand);
alphaCanvas.setCommandListener(this);
Thread t = new Thread(alphaCanvas);
t.start();
}else if (c == backCommand) {
display.setCurrent(form);
}
}
}
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
public class AlphaCanvas extends Canvas implements Runnable {
private Image backgroundImage;
private int[] maskArray;
private int imageWidth;
private int imageHeight;
private int x;
private int y;
private int maskHeight = 0;
public AlphaCanvas(String imageName) {
//create the background image
try {
backgroundImage = Image.createImage(imageName);
}catch(IOException ioe) {
ioe.printStackTrace() ;
}
imageWidth = backgroundImage.getWidth();
imageHeight = backgroundImage.getHeight();
//create a semi-transparent red mask to cover the background image
maskArray = new int[imageWidth*imageHeight];
for (int i = 0; i < imageWidth*imageHeight; i++) {
maskArray[i] = 0x11FFF000;//alpha coefficient set to 0.3
}
x = (getWidth() - imageWidth)/2;
y = (getHeight() - imageHeight)/2;
}
public void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());//paint Canvas background white
g.drawImage(backgroundImage, x, y, Graphics.TOP|Graphics.LEFT);
//render the semi-transparent mask
if (maskHeight != 0){
g.drawRGB(maskArray, 0, imageWidth, x, y, imageWidth, maskHeight, true);
}
}
public void run() {
for(int i = 1; i <= imageHeight; i++) {
maskHeight = i;
repaint();
try {
Thread.sleep(50);
}catch(InterruptedException ie) {}
}
}
}
分享到:
相关推荐
在J2ME中,使用Unicode编码处理中文字符至关重要,因为它能确保正确地存储和传输中文字符。 3. **输入法引擎** 中文输入法通常涉及到拼音输入、笔画输入或五笔字型等。在J2ME平台上,由于资源限制,拼音输入是最...
1. **合理使用数据结构**:J2ME中的数据结构如ArrayList和Vector在内存管理上不如Java SE高效。考虑使用数组代替ArrayList,避免动态扩容带来的性能开销。对于小规模的数据存储,可以考虑使用哈希表或者简单的数组...
这类文档通常会详细介绍每个类、方法和接口的用途,提供示例代码,并解释如何在实际项目中使用这些API。 **www.pudn.com.txt**可能是一个指向资源网站的链接或者说明文件,pudn.com是一个知名的中国技术资源分享...
本教程将深入讲解J2ME在手机程序开发中的应用,帮助开发者掌握这一核心技术。 ### J2ME技术概述 J2ME由两大部分构成:配置(Configurations)和框架(Profiles)。配置定义了运行时环境的基本特性,如内存大小和...
在探讨J2ME中的`TextBox`用法时,我们不仅限于其基本功能,还将深入理解如何结合`Command`命令来实现用户交互,以及如何优雅地处理应用的生命周期事件。以下将详细介绍`TextBox`和`Command`在Java Micro Edition...
J2ME中文教程 不错的学习资料,刚开始学习的可以参考下!
1. **熟悉基础类库**:从中文API文档中,开发者可以了解到J2ME提供的基础类库,如java.lang、java.io等,掌握这些类库的使用是进行任何开发的基础。 2. **学习MIDP框架**:MIDP是构建J2ME应用的关键,通过阅读中文...
5. **直接得到Image对象**:在J2ME中,可以使用`Image.createRGBImage`(midp2.0)或特定方法(NokiaUI)创建新的Image对象。 6. **处理小数运算**:在CLDC1.0设备上,可能不支持浮点数运算,需要将旋转角度转换为...
在J2ME中,RecordStore是用于存储非结构化数据的主要机制。开发者可以创建、读取、更新和删除RecordStore中的记录。此外,FileConnection API允许开发者访问设备的文件系统,进行文件的读写操作。 **游戏开发** ...
【标题】:“图片分类 J2ME中的图片处理” 【描述】:“图片的特点及分类;png图片的格式分析;图片在J2me中的应用。” 【标签】:“图片处理” “J2ME” “png” 在Java的移动开发领域,J2ME(Java 2 Micro ...
1. **使用`Thread.sleep()`进行延时**:在J2ME中,如果你想让程序暂停一段时间再继续执行,可以使用`Thread.sleep(millis)`方法。这里的`millis`参数表示要睡眠的毫秒数。但需要注意,`Thread.sleep()`可能会抛出`...
4. **MIDP API详解**:MIDP是J2ME中用于创建移动应用的核心API,教程会详细介绍如何使用Canvas、Form、Item等组件进行用户界面设计,以及怎样利用 MIDP的网络功能实现数据通信。 5. **图形与多媒体**:J2ME支持丰富...
**J2ME混淆器安装与使用详解** J2ME混淆器是针对Java Micro Edition (J2ME) ...以上就是关于J2ME混淆器的安装与使用方法的详细介绍,通过这个过程,你可以有效地保护你的J2ME应用程序,同时也能优化其大小和运行效率。
5. **MIDlet**:J2ME中的应用程序单元,类似于Java SE中的JApplet。一个MIDlet由一个主类(实现了MIDlet接口)和可选的其他类组成。 6. **用户界面(UI)编程**:J2ME的UI通常基于 Lightweight User Interface ...
通过这个J2ME中文教程,开发者不仅可以学习到J2ME的基本概念和使用方法,还能通过实际的代码示例深化理解和提升技能。无论你是初学者还是有一定经验的开发者,都可以从这个教程中受益匪浅,为你的移动应用开发之路...
MIDP(Mobile Information Device Profile)2.0是J2ME中的一个重要配置,它提供了在这些小型设备上开发应用程序的基本框架和API。本教程将深入探讨如何使用J2ME和MIDP2.0进行移动应用开发。 **1. J2ME架构** J2ME...
Myeclipse中的J2ME插件,使得开发者可以直接在IDE中创建、编辑、构建和运行J2ME项目,大大提高了开发效率。 在使用Myeclipse进行J2ME开发时,你可以创建新的J2ME工程,配置所需的CLDC和MIDP版本,然后添加源代码...
J2ME的中文教程,值得看一下!
在J2ME中,你需要学习如何使用MIDlet套件管理器来控制MIDlet的生命周期,包括startApp()、pauseApp()、resumeApp()和destroyApp()方法。同时,掌握基本的UI组件如ChoiceGroup、TextBox和Form的使用也至关重要。此外...