从远程装载PNG图片实例

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

import Java.io.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class ImageLoader extends MIDlet

implements CommandListener, Runnable {

private Display mDisplay;

private Form mForm;

public ImageLoader() {

mForm = new Form("Connecting...");

mForm.addCommand(new Command("Exit", Command.EXIT, 0));

mForm.setCommandListener(this);

}

public void startApp() {

if (mDisplay == null) mDisplay = Display.getDisplay(this);

mDisplay.setCurrent(mForm);

// Do network loading in a separate thread.

Thread t = new Thread(this);

t.start();

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) {

if (c.getCommandType() == Command.EXIT)

notifyDestroyed();

}

public void run() {

HttpConnection hc = null;

DataInputStream in = null;

try {

String url = getAppProperty("ImageLoader-URL");

hc = (HttpConnection)Connector.open(url);

int length = (int)hc.getLength();

byte[] data = null;

if (length != -1) {

data = new byte[length];

in = new DataInputStream(hc.openInputStream());

in.readFully(data);

}

else {

// If content length is not given, read in chunks.

int chunkSize = 512;

int index = 0;

int readLength = 0;

in = new DataInputStream(hc.openInputStream());

data = new byte[chunkSize];

do {

if (data.length < index + chunkSize) {

byte[] newData = new byte[index + chunkSize];

System.arraycopy(data, 0, newData, 0, data.length);

data = newData;

}

readLength = in.read(data, index, chunkSize);

index += readLength;

} while (readLength == chunkSize);

length = index;

}

Image image = Image.createImage(data, 0, length);

ImageItem imageItem = new ImageItem(null, image, 0, null);

mForm.append(imageItem);

mForm.setTitle("Done.");

}

catch (IOException ioe) {

StringItem stringItem = new StringItem(null, ioe.toString());

mForm.append(stringItem);

mForm.setTitle("Done.");

}

finally {

try {

if (in != null) in.close();

if (hc != null) hc.close();

}

catch (IOException ioe) {}

}

}

}

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航