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

📄 unicanvas.java

📁 一个图铃下载的小程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Vector;

import javax.microedition.io.Connector;
import javax.microedition.io.ContentConnection;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemCommandListener;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.Ticker;
import javax.microedition.rms.RecordStore;

import com.nokia.mid.ui.FullCanvas;

public class UniCanvas extends FullCanvas implements Runnable, CommandListener{
	boolean isStop; //线程结束标识

	short key; //用于保存当前按的键!

	short TIME_PER_FRAME = 50;//线程循环一次的时间

	Command cmdExit, cmdOK, cmdBack, cmdNext, cmdLast, cmdSend;

	short posH = 0, posV = 1, sizeH, sizeV;//主画面水平指针的位置,垂直指针的位置,指针水平移动的数目,指针垂直移动的数目

	short resPosH, resPosV, resSizeH, resSizeV;//资源画面水平指针的位置,垂直指针的位置,指针水平移动的数目,指针垂直移动的数目

	short listPosH, listPosV, listSizeH, listSizeV;//目录画面水平指针的位置,垂直指针的位置,指针水平移动的数目,指针垂直移动的数目

	short prePosH, preSizeH;//预览画面水平指针的位置,指针水平移动的数目

	short listX = 1, listY = 27, spaceH, spaceV = 20, icoWight = 16; //列表开始的水平坐标,垂直坐标,水平间隔,垂直间隔,图标宽度

	short screenRows = 8, rowChars = 9;//一屏显示行数,一行显示的字数(没用)

	short resPos = 0, listPos = 0;//记录指针

	static short pageSize = 12;// resultSize;//每页要检索的记录数,每页实际检索的结果长度

	short resRows, listRows;//资源检索的结果长度,目录检索的结果长度

	//Vector resultVector = null;//检索结果

	Vector listVector, resVector;//检索目录结果,检索资源结果

	ResultBean resultBean = null;//检索结果

	int curPage, totalPage;//当前第几页,共几页

	Image logo1Img,logo2Img, splashImg, mainImg, backImg, main_selImg;

	Image help_nImg, about_nImg, search_nImg, set_nImg, set_yImg, help_yImg,
			about_yImg, search_yImg;

	Image tuwen_nImg, tuwen_yImg, ling_nImg, ling_yImg, tuijian_nImg,
			tuijian_yImg, setu_nImg, setu_yImg;

	Image titleImg, picIco, ringIco, glsIco, fileIco, selectImg;

	Image downImg, arrowImg, alertImg, button_yImg, button_nImg, playImg,
			tiaoImg,pauseImg;

	Image strImg;

	//Image previewImg;

	short screenWidth = 176, screenHeight = 188;//保存屏幕尺寸默认为小屏幕

	String listTitle = "", resTitle = "";//标题内容

	String buttonWord = null;//按钮内容

	String alertStr = null;//提示信息

	Font font; //字体

	short mainOperate;//主画面操作 1:图片 2:铃声 3:图文 4:精品推荐 5:搜索

	int linkTimes = 0, playTimes = 0;//连接时,播放音乐时

	int showTimes = 0;//目录,资源滚动时用

	int titleTimes = 0;//标题滚动时用

	short page = -1; //不同的值代表不同的画面

	short nextPage, lastPage;//要跳转的画面,跳转之前的画面

	//Stack lastPage = new Stack();//要返回的画面

	String lastListPage, lastResPage;//最近访问的列表画面,最近访问的资源画面

	static short pageState = 1;//画面1:第一次进入 2:第二次进入

	final static short PAGE_LOGO1 = -1; //移动梦网LOGO
	
	final static short PAGE_LOGO2 = 0; //百宝箱LOGO

	final static short PAGE_SPLASH = 1; //闪屏

	final static short PAGE_MAIN = 2; //应用主菜单

	final static short PAGE_SEARCH = 3; //搜索画面

	final static short PAGE_HELP = 4; //帮助画面

	final static short PAGE_ABOUT = 5; //关于画面

	final static short PAGE_SET = 6; //设置画面

	final static short PAGE_LIST = 7; //目录画面

	final static short PAGE_RES = 8; //资源画面

	final static short PAGE_PREVIEW = 9; //预览画面

	final static short PAGE_LINK = 10; //连接中画面

	final static short PAGE_SEND = 11; //发送画面

	final static short PAGE_ALERT = 12; //提示画面
	
	final static short PAGE_WAP = 13; //wap提示画面
	
	final static short PAGE_PAUSE = 14;//暂停画面

	short lodingX = 11;//用于控制LOGING时进度条的移动

	static Form searchForm = null, sendForm = null, glsForm = null,
			aboutForm = null, helpForm = null;//检索form,发送form

	TextField searchText = null, sendText = null;//检索文本框,发送文本框

	static List setList = null;

	Display myDisplay;

	UniMIDlet myMidlet;

	static String httpServer = null,httpMyServer = null,wapUrl = null;

	StringBuffer httpUrl = null;

	static String mobileCode = null;

	Sound sound;//播放声音

	LinkThread link;//连接

	int test = 0,size=0;
	
	UniCanvas canvas = null;
	
	boolean isCommand = false;

	public UniCanvas(UniMIDlet midlet, Display display) { //Test为继承了MIDlet的类
		//System.out.println("==UniCanvas==");
		//this.setFullScreenMode(true);
		this.myMidlet = midlet;
		this.myDisplay = display;
		this.canvas = this;
		httpServer = myMidlet.getAppProperty("HttpServer");
		httpMyServer = myMidlet.getAppProperty("HttpMyServer");
		mobileCode = myMidlet.getAppProperty("MobileCode");
		wapUrl = myMidlet.getAppProperty("WapUrl");
		try {
			logo1Img = Image.createImage("/icons/logo1.png");
			logo2Img = Image.createImage("/icons/logo2.png");
			splashImg = Image.createImage("/icons/splash.png");
			mainImg = Image.createImage("/icons/main.png");
			backImg = Image.createImage("/icons/back.png");
			main_selImg = Image.createImage("/icons/main_sel.png");

			about_nImg = Image.createImage("/icons/about_n.png");
			search_nImg = Image.createImage("/icons/search_n.png");
			set_nImg = Image.createImage("/icons/set_n.png");
			help_nImg = Image.createImage("/icons/help_n.png");
			about_yImg = Image.createImage("/icons/about_y.png");
			search_yImg = Image.createImage("/icons/search_y.png");
			set_yImg = Image.createImage("/icons/set_y.png");
			help_yImg = Image.createImage("/icons/help_y.png");

			tuwen_yImg = Image.createImage("/icons/tuwen_y.png");
			tuwen_nImg = Image.createImage("/icons/tuwen_n.png");

			ling_yImg = Image.createImage("/icons/ling_y.png");
			ling_nImg = Image.createImage("/icons/ling_n.png");

			setu_yImg = Image.createImage("/icons/setu_y.png");
			setu_nImg = Image.createImage("/icons/setu_n.png");

			tuijian_yImg = Image.createImage("/icons/tuijian_y.png");
			tuijian_nImg = Image.createImage("/icons/tuijian_n.png");

			titleImg = Image.createImage("/icons/title.png");

			ringIco = Image.createImage("/icons/ring.png");
			picIco = Image.createImage("/icons/pic.png");
			glsIco = Image.createImage("/icons/gls.png");
			fileIco = Image.createImage("/icons/file.png");

			selectImg = Image.createImage("/icons/select.png");

			downImg = Image.createImage("/icons/down.png");
			arrowImg = Image.createImage("/icons/arrow.png");
			alertImg = Image.createImage("/icons/alert.png");

			button_nImg = Image.createImage("/icons/button_n.png");
			button_yImg = Image.createImage("/icons/button_y.png");

			playImg = Image.createImage("/icons/play.png");
			tiaoImg = Image.createImage("/icons/tiao.png");
			pauseImg = Image.createImage("/icons/pause.png");
			font = Font.getDefaultFont();

		} catch (Exception e) {
			e.printStackTrace();
		}
		sound = new Sound();
		cmdExit = new Command("退出", Command.BACK, 1);
		cmdOK = new Command("确定", Command.OK, 2);
		cmdBack = new Command("返回", Command.BACK, 1);
		cmdNext = new Command("下页 ", Command.OK, 1);
		cmdLast = new Command("上页", Command.OK, 1);
		if (searchForm == null) {
			searchForm = new Form("搜索");
			searchForm.addCommand(cmdBack);
			searchForm.addCommand(cmdOK);
			searchText = new TextField("请输入关键字", "", 20, TextField.ANY);
			
			//searchText.setMaxSize(10);

			//searchForm.append(splashImg);
			searchForm.append(searchText);
			searchForm.append("注意:最多输入20个字符");
			searchForm.setCommandListener(this);
			//myDisplay.setCurrent(searchForm);
		}
		
		if (setList == null) {
			setList = new List("设置", Choice.EXCLUSIVE);
			setList.append("开启启动时音乐", null);
			setList.append("关闭启动时音乐", null);
			if (getIsOpen()) {
				setList.setSelectedIndex(0, true);
			} else {
				setList.setSelectedIndex(1, true);
			}
			setList.addCommand(cmdBack);
			setList.setCommandListener(this);
			//myDisplay.setCurrent(setList);
		}
		
		if (helpForm == null) {
			helpForm = new Form("帮助");
			helpForm.append("【应用介绍】");
			helpForm.append("\n是一款集图铃转发下载和图文资讯为一体的综合应用软件。最性感的风骚美眉、最流行的经典铃音、最爆料的图文资讯、让你感受前所未有的感观冲击,还犹豫什么,赶快行动吧!");
			helpForm.append("\n【基本操作】");
			helpForm.append("左软键或中间键确定,右软键返回或退出,方向键上下左右移动光标。");
			helpForm.append("\n【使用规则】");
			helpForm.append("\n取消联网应用包月方法\nA自动取消包月:客户当月不使用该业务或主动删除客户端程序;\nB百宝箱门户退订:通过手机访问百宝箱业务门户,在首页[取消服务]栏目中查询并退订;\nC短信退订:发送0000至1020查询订购信息并退订(详情可参考短信相关规范);");
			//helpForm.append("方向键上下左右移动光标,");
			//helpForm.append("方向键的中间键实现确定功能,");
			//helpForm.append("在图片和铃声阅览页面可以按中软键返回主菜单");
			helpForm.addCommand(cmdBack);
			helpForm.setCommandListener(this);
			//myDisplay.setCurrent(helpForm);
		}
		
		if (aboutForm == null) {
			aboutForm = new Form("关于");
			aboutForm
					.append("北京当途摩宝科技发展有限公司发行\nwww.down2mobile.com\n客服电话:010-84832907\nEmail:khfw@down2mobile.com\n内容提供:当途摩宝");
			aboutForm.addCommand(cmdBack);
			aboutForm.setCommandListener(this);
			//myDisplay.setCurrent(aboutForm);
		}
		
		//this.sizeChanged(400,184);
		//this.setFullScreenMode(true);
		//cmdSend = new Command("发送", Command.ITEM, 2);
	}

	public void paint(Graphics g) {
		//System.out.println("==PAIN==");
		if (linkTimes > 5)
			linkTimes = 0;
		if (linkTimes > 8)
			playTimes = 0;
		try {
			switch (page) {
			case PAGE_LOGO1: //在loding处
				//setFullScreenMode(true);
				if (getIsOpen()) {
					if (sound.isStop()) {
						sound.getPlayer();
						sound.start();
					}
				}
				g.drawImage(logo1Img,0,0, 20);
				g.setColor(0);
				page++;
				break;
			case PAGE_LOGO2: //在loding处
				try {
					Thread.sleep(1000);
				} catch (Exception e) {
				}
				g.drawImage(logo2Img,0,0, 20);
				g.setColor(0);
				page++;
				break;
			case PAGE_SPLASH: //在splash处
				try {
					Thread.sleep(2000);
				} catch (Exception e) {
				}
				g.drawImage(splashImg, 0, 0, 20);
				g.setColor(0xFF);
				splashImg = null;
				System.gc();
				pageState = 1;
				sizeV = 4;
				sizeH = 4;
				page++;
				break;

			case PAGE_MAIN: //在MENU菜单处
				//g.setClip(0,0,2,2);
				//System.out.println("=====main==pageState===="+pageState);
				g.setColor(0);
				//g.drawRect(0,184,176,6);
				//g.setClip(0,0,200,200);
				//g.fillRect(0,184,176,2);
				if (pageState == 1) {
					try {
						Thread.sleep(1000);
					} catch (Exception e) {
					}
					g.setColor(255, 255, 255);
					g.fillRect(0, 0, this.screenWidth, this.screenHeight);
					addCommand(1);
					//g.drawImage(mainImg, 0, 0, 0);
					pageState++;
				}

				g.drawImage(mainImg, 0, 0, 0);
				
				g.setColor(255, 255, 255);
				
				g.drawImage(tuijian_nImg, 65, 64, 0);
				g.drawImage(setu_nImg, 65, 78, 0);
				g.drawImage(ling_nImg, 65, 92, 0);
				g.drawImage(tuwen_nImg, 65, 106, 0);

				g.drawImage(search_nImg, 44, 110, 0);
				g.drawImage(set_nImg, 64, 110, 0);
				g.drawImage(help_nImg, 84, 110, 0);
				g.drawImage(about_nImg, 104, 110, 0);
				if (posV > 0) {
					g.drawImage(main_selImg, 47, posV * 14 + 50, 0);
				}
				switch (posV) {
				case 1:
					g.drawImage(tuijian_yImg, 65, 64, 0);
					break;
				case 2:
					g.drawImage(setu_yImg, 65, 78, 0);
					break;
				case 3:
					g.drawImage(ling_yImg, 65, 92, 0);
					break;
				case 4:
					g.drawImage(tuwen_yImg, 65, 106, 0);
					break;
				}
				switch (posH) {
				case 1:
					g.drawImage(search_yImg, posH * 20 + 24, 110, 0);
					break;
				case 2:
					g.drawImage(set_yImg, posH * 20 + 24, 110, 0);
					break;
				case 3:
					g.drawImage(help_yImg, posH * 20 + 24, 110, 0);
					break;
				case 4:
					g.drawImage(about_yImg, posH * 20 + 24, 110, 0);
					break;
				}
				drawCommand(g,3);
				sound.close();
				break;
			case PAGE_LIST:

				g.drawImage(backImg, 0, 0, 0);
				g.drawImage(titleImg, 0, 0, 0);

				g.setColor(255, 255, 255);
				g.drawString(listTitle, (this.screenWidth - font
						.stringWidth(listTitle)) / 2, 4, 0);
				g.setColor(0);
				g.drawString(listTitle, (this.screenWidth - font
						.stringWidth(listTitle)) / 2 - 1, 3, 0);
				//g.setColor(0);
				if (listPosV > 0) {
					g.drawImage(selectImg, 0, (listPosV - 1) * spaceV + listY
							- 2, 0);
				}
				//System.out.println("listPosV-1 ===" + (listPosV-1));
				for (int i = 0; i < listSizeV; i++) {
					g.drawImage(fileIco, listX, listY + i * spaceV, 0);
					ResultBean bean = (ResultBean) listVector.elementAt(i
							+ listPos);
					if (i == listPosV - 1) {
						if (isTranslate(bean.getName(), this.screenWidth
								- listX - icoWight)) {
							g.setClip(listX + icoWight, listY + i * spaceV,
									this.screenWidth, spaceV);
							//g.translate(-showTimes,0);
							g.drawString(bean.getName(), listX + icoWight
									- showTimes, listY + i * spaceV, 0);
							//g.translate(0,0);
							g
									.setClip(0, 0, this.screenWidth,
											this.screenHeight);
						} else {

							g.drawString(bean.getName(), listX + icoWight,

⌨️ 快捷键说明

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