⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpwaitform.java

📁 j2me 图象缩小和放大。自动适应屏幕大小
💻 JAVA
字号:
/**
 * 
 * @author Sam Huang
 *
 */
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Gauge;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.StringItem;

/**
 * 
 * 等待下载,监听并显示进度的Form类
 * 
 */
public class HttpWaitForm extends Form implements CommandListener,
		IHttpListener {

	private Gauge gauge;

	private Command cancel;

	private HttpThread httpThread;

	private StringItem sizeString;

	public HttpWaitForm(String url) {
		super("请等待");
		this.gauge = new Gauge("正在通讯...", false, 100, 0);
		// System.out.println(this.gauge.isInteractive());
		sizeString = new StringItem("剩余尺寸:", "未知");
		this.cancel = new Command("返回", Command.CANCEL, 0);
		// this.displayable = displayable;
		append(this.sizeString);
		append(this.gauge);
		addCommand(cancel);
		setCommandListener(this);
		httpThread = new HttpThread(url, this);
		httpThread.start();
	}

	public void commandAction(Command c, Displayable d) {
		if (c == cancel) {
			httpThread.setUserInterrupted();
			ImageAlbum.getDisplay().setCurrent(ImageAlbum.getPreviousForm());
		}
	}

	public void onFinish(byte[] buffer, int size) {
		byte[] data = buffer;
		if (size != buffer.length) {
			data = new byte[size];
			System.arraycopy(data, 0, buffer, 0, size);
		}
		try {
			Image img = Image.createImage(data, 0, data.length);
			//不为空,我们只需要把图片换一下,不需要重新初始化整个canvas
			//要不然很容易造成内存溢出
			if (ImageAlbum.scrollCanvas != null) {
				ImageAlbum.scrollCanvas.setOriginalImage(img);
				ImageAlbum.scrollCanvas.setImage(img);
			} else {
				ImageAlbum.scrollCanvas = new ScrollCanvas(img);
				
			}
			ImageAlbum.setCurrentForm(ImageAlbum.scrollCanvas);
			ImageAlbum.getDisplay().setCurrent(ImageAlbum.scrollCanvas);
		} catch (Exception ioe) {
			ioe.printStackTrace();

		} finally {
			httpThread = null;
			buffer = null;
			data = null;
			this.gauge = null;
		}

	}

	public void onError(int code, String message) {
		if (code == 404) {
			// 这里还应该将currentUrl恢复为原来的第一张或者最后一张的图片的地址,省略
			ImageAlbum.showAlert("已经达到第一张/最后一张图片.");
			// 我的本意是想先显示警告信息,确定后直接显示原来的窗口,略去等待窗口
			// 但是加上下边的代码后,在wtk模拟器里警告信息就被略去了
			// 由于选择的屏幕导航方法过于简单,解决这个问题需要一些功夫,这里不想继续探讨这个问题
			// ImageAlbum.getDisplay().setCurrent(ImageAlbum.getPreviousForm());
		} else {
			ImageAlbum.showAlert("错误代码:" + code + "\n错误信息:" + message);
		}
	}

	public void onProgress(int percent) {
		this.gauge.setValue(percent);
	}

	public void onSetSize(int size) {
		this.sizeString.setText("" + size);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -