浏览 3795 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-22
最后修改:2010-04-22
jbuilder 2005 + wtk2.5 给大家共享一下。一起学习。 项目只能用于学习,限用于商业用途。 源代码分析: MobileMIDlet启动服务 package cn.mobell.windows; import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; import java.io.IOException; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import java.util.Vector; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.ByteArrayInputStream; import cn.mobell.tool.WmlParser; import cn.mobell.tool.HttpData; import cn.mobell.tool.ThreaHttp; /** * * <p> * Title: 主 MIDlet * </p> * <p> * Description: 项目只能用于学习,限用于商业用途。 * </p> * * <p> * Copyright: Copyright (c) 2008 - 06 * </p> * * <p> * Company: * </p> * * @author atgongguoat@163.com * @version 1.0 */ public class MobileMIDlet extends MIDlet implements CommandListener { private Display display; MobileMainCanvas initCanvas_temp; //联网线程(2008-12-24) // private ThreaHttp httpThread; public MobileMIDlet() { HttpData.getInstance().readTimeTest("readTimeTest"); display = Display.getDisplay(this); //启动联网线程 // httpThread = new ThreaHttp(); // this.startMidThrea(); initCanvas_temp = new MobileMainCanvas(this); initCanvas_temp.game_start(); display.setCurrent(initCanvas_temp); } public void pauseApp() { //notify(); } public void startApp() { } public void exit() { initCanvas_temp.game_stop(); Display.getDisplay(this).setCurrent(null); destroyApp(true); } //传入参数true public void destroyApp(boolean parm1) { notifyDestroyed(); } public void commandAction(Command command, Displayable displayable) { } // /** // * 启动联网(测试) // */ // private void startMidThrea() { // try { // httpThread.startThreaHttp(); // httpThread.initHttp("http://wap.mobell.cn/wendao/wendaolist.php?kjava=1&word=%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%B0%E7%90%83%E4%B8%8D%E6%98%AF%E5%9C%86%E7%9A%84&dosubmit=dosubmit", "init"); // } catch (Exception exe) { // exe.printStackTrace(); // } // } // /** // * 初始化联网参数 // * @param wapurl String 访问URL // * @param datatype String 存贮数据键值 (key) // */ // public void initHttp(String wapurl, String datatype) { // httpThread.wapurl = wapurl; // httpThread.datatype = datatype; // httpThread.isrun = true; // } } 在上面MIDLet里,启动了canvas MobileMainCanvas,由它来负责画界面。 package cn.mobell.windows; import java.util.Vector; import javax.microedition.lcdui.*; import cn.mobell.port.abstractCanvas; import cn.mobell.ui.MyTextBox; import cn.mobell.ui.MyList; import cn.mobell.ui.MyChoiseGroup; import cn.mobell.tool.*; import cn.mobell.ui.Mytextshow; import java.io.*; public final class MobileMainCanvas extends abstractCanvas implements Runnable, CommandListener { public MobileMainCanvas() { try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } MobileInfo mobileInfo; private MobileMIDlet midlet; public Thread gameThread; MyTextBox textbox; MyList mylist; Mytextshow textshow; // MyChoiseGroup choiseGroup1; // MyChoiseGroup choiseGroup2; boolean showIs = false; private boolean httpcatoonbool = false; String temptextshow; //////////////九宫菜单////////////// private Image icons[] = new Image[9]; private int nrow = 3; private int ncol = 3; private int imgNum = 0; private int[] pointX = new int[9]; private int[] pointY = new int[9]; //////////////九宫菜单////////////// //Font.SIZE_SMALL); //保存系统字型 /////////////屏幕坐标////////////// // private int title_x; //标题坐标 // private int title_y = 2; private int ticker_x = 0; //滚动条坐标 private int ticker_y = 47; private int text_x = 0; //文本坐标 private int text_y = 75; private int table_x; //下拉框坐标 private int table_y = 31; /////////////屏幕坐标////////////// // Command okcommand = new Command("确定", Command.SCREEN, 1); //非游戏图片以及片头动画变量 private Image loadres; private Image[] loadImage = new Image[4]; private Image arrowImage; private Image logoImage; private Image bgImage; private Image bgtopImage; private Image bgfootImage; private Image buttemImage; private Image selectImage; private Image listselectImage; private Image menuImage; private Image arrawLImage; private Image arrawRImage; private Image arrawPImage; private int timeCount; //计数器 private int timeid; //计数器 private int keydelay = 0; //用来控制按键时的延迟时间 private boolean key_press = false; //立即按键,快速执行 private boolean keyRepeat; //控制按键 private int key; //键值 //游戏屏幕的宽度和高度-非全屏模式 private final int WIDTH = 240; private final int HEIGHT = 320; private final int TIME_PER_FRAME = 80; //游戏速度的控制 /* about variable of game state */ public int game_state; private static final int P_LOAD = 0; //游戏最先进入的状态 private static final int P_MENU = 1; private static final int P_TABLEFORM = 2; private static final int P_EXIT = 9; private static final int P_LOADER = 10; private boolean quitGame = false; //游戏结束 /////////////tableForm////////// private int tickerStepX; //ticker滚动条 x 变量 //标题 宽度和高度 int table_state; private static final int TABLEFORM_LIST = 0; private static final int TABLEFORM_INPUT = 1; private static final int TABLEFORM_SHOW = 2; //TabbarNames数组 宽度和高度 根据背景图片设定 private int tabbarStarX; //TabbarNames数组 菜单初始 X 坐标 private int tabbarStarY; //TabbarNames数组 菜单初始 Y 坐标 private int tabbarEndX; //TabbarNames数组 菜单结束 X 坐标 private int tabbarEndY; //TabbarNames数组 菜单结束 Y 坐标 private int tabbarStepX = 0; //TabbarNames数组 table 偏移坐标 private int bgstepX; //TabbarNames数组 table 偏移量 private int strstepX; //TabbarNames数组 table 偏移量 private int tabbarStateid; private int tabbarStateUPid; private int[] tabbarX = new int[9]; //TabbarNames数组 菜单初始 X 坐标 private int listId; // boolean lightID = false; /////////////tableForm////////// /////////////textshow////////// int rowid; //要显示的文本行数长度 int showId; //超出的行数 int line; //可显示的行数 /////////////textshow////////// /******************************/ /******* 联网动画数据定义 ****/ /******************************/ private Image httpImage; private Image[] httpLoadImage = new Image[4]; private int urltimeCount ; public MobileMainCanvas(MobileMIDlet MID) { this.midlet = MID; game_init(); display = Display.getDisplay(midlet); this.setFullScreenMode(true); //联网线程 初始化及启动 ThreaHttp.getInstance().startThreaHttp(); } // 游戏初始化 private final void game_init() { // logoImage = loadImage("/bglogo.png"); // loadres = loadImage("/loading.png"); for (int i = 0; i < 4; i++) { loadImage[i] = Image.createImage(loadres, 0, i * 15, 145, 15, 0); } /******************************/ /******* 联网图片初始化 ****/ /******************************/ httpImage = loadImage("/urlloading.png"); for (int i = 0; i < 4; i++) { httpLoadImage[i] = Image.createImage(httpImage, 0, i * 11, 10, 10, 0); } /****************************/ bgImage = loadImage("/bg.png"); bgtopImage = Image.createImage(bgImage, 0, 0, 240, 47, 0); bgfootImage = Image.createImage(bgImage, 0, 48, 232, 20, 0); buttemImage = Image.createImage(bgImage, 0, 70, 70, 20, 0); // selectImage = loadImage("/select.png"); listselectImage = loadImage("/listselect.png"); /** * 载入图片。切割图片资源 */ //切割9宫菜单 menuImage = loadImage("/menu.png"); for (int i = 0; i < 9; i++) { icons[i] = Image.createImage(menuImage, 0 + i * 75, 0, 75, 76, 0); } // arrowImage = loadImage("/arrow.png"); arrawLImage = Image.createImage(arrowImage, 0, 12, 4, 7, 0); arrawRImage = Image.createImage(arrowImage, 5, 12, 4, 7, 0); arrawPImage = Image.createImage(arrowImage, 0, 0, 12, 11, 0); bgstepX = 4 * stepFontHight; for (int r = 0; r < nrow; r++) { for (int c = 0; c < ncol; c++) { imgNum = r * 3 + c; pointX[imgNum] = 5 + (77) * r; pointY[imgNum] = 60 + (77) * c; } } tabbarStarX = 12; tabbarStarY = 30; tabbarEndX = WIDTH - 2 * tabbarStarX; tabbarEndY = 53; bgstepX = 70; strstepX = 0; for (int i = 0; i < tabbarX.length; i++) { tabbarX[i] = tabbarStarX + (70 - samllfont.stringWidth("开始开始")) / 2 + bgstepX * i; } mobileInfo = new MobileInfo(); line = screen_height / stepFontHight; } //开始线程 public final void game_start() { gameThread = new Thread(this); gameThread.start(); } public final void game_stop() { gameThread = null; System.gc(); } protected final void paint(Graphics g) { g.setFont(samllfont); try { switch (game_state) { case P_LOAD: //最先进入得画面,显示loading画面 drawLoading(g, HEIGHT - 30); break; case P_MENU: // 进入九宫画面 drawBG(g); paintMenu(g); // paintTicker(g, System.getProperty("microedition.platform")); paintTicker(g, System.getProperty("microedition.platform")); break; case P_EXIT: paintTicker(g, "退出工具箱,您确定?"); break; case P_TABLEFORM: // 进入TableForm画面 drawBG(g); drawTableFormTabbar(g); switch (table_state) { case TABLEFORM_LIST: paintTicker(g, "菜单列表页面"); drawTableFormList(g); break; case TABLEFORM_INPUT: paintTicker(g, mobileInfo.getTabbar(tabbarStateid)[listId]); switch (tabbarStateid) { case 0: //百度 switch (listId) { case 0: //百宝知道 case 1: //百宝百科 case 2: //百宝英汉 case 3: //百宝汉英 case 4: //全文翻译 textbox.paint(g); break; } break; case 1: //金融 switch (listId) { case 0: //大盘行情 break; case 1: //个股查询 textbox.paint(g); break; case 2: //基金查询 textbox.paint(g); break; case 3: //外汇价格 // mylist.paint(g); break; } break; case 2://彩票 switch (listId) { case 0: //体彩 mylist.paint(g); break; case 1: //福彩 break; } case 3: //生活娱乐 break; case 4: //交通出行 textbox.paint(g); String[] temp_title = {"线路查询", "站点查询", "换乘查询"}; //联网取标题数据 drawList(g, temp_title, 20); break; case 5: //生活工具 switch (listId) { case 1: // 常用号码 break; case 0: // case 2: // case 3: // case 4: // case 5: // textbox.paint(g); break; } break; case 6: //星座 switch (listId) { case 0: // 奇异梦解 textbox.paint(g); break; case 1: //每日星运 break; } break; case 7: //3G快车 break; case 8: //在线帮助 break; } break; case TABLEFORM_SHOW: paintTicker(g, "查询结果信息"); switch (tabbarStateid) { case 0: //百度 switch (listId) { case 0: //百宝知道 mylist.paint(g); break; case 1: //百宝百科 case 2: //百宝英汉 case 3: //百宝汉英 case 4: //全文翻译 textshow.paint(g); break; } break; case 1: //金融 switch (listId) { case 0: //大盘行情 //直接联网显示大盘行情 显示深市沪市行情 textshow.paint(g); break; case 1: //个股查询 case 2: //基金查询 textshow.paint(g); break; case 3: //外汇价格 break; } break; case 2: //彩票查询 switch (listId) { case 0: // 体彩 break; case 1: //福彩 textshow.paint(g); break; } break; case 3: //生活娱乐 textshow.paint(g); break; case 4: //交通出行 switch (listId) { case 0: //公交查询 break; case 1: //火车查询 mylist.paint(g); break; case 2: //飞机查询 mylist.paint(g); break; } break; case 5: textshow.paint(g); break; case 6: textshow.paint(g); break; case 7: textshow.paint(g); break; case 8: textshow.paint(g); break; } //drawTextShow(g, wmlinfo_text); break; } break; case P_LOADER: paintloader(g); break; } } catch (Exception e) { long timenow = System.currentTimeMillis(); while (System.currentTimeMillis() - timenow < 10000) { //10秒后退出 } quitGame = true; } } //测试用 boolean cartoonboolean = false; public final void run() { long starttime = 0; long timetaken = 0; try { while (!quitGame) { starttime = System.currentTimeMillis(); urltimeCount++; switch (game_state) { case P_EXIT: break; case P_LOAD: if (timeCount >= 23) { timeid = -1; } else if (timeCount <= 0) { timeid = 1; } timeCount = timeCount + timeid; if (timeCount >= 23) { imgNum = 0; game_state = P_MENU; } // // 联网数据处理结束 // // 取到初始数据结束 // if (HttpData.userHash.containsKey("init")) { // //清除 联网 数据 // HttpData.userHash.remove("init"); // game_state = P_MENU; // // 速度测试 //// cn.mobell.tool.HttpData.getInstance().readTimeTest("初始数据结束"); // // } break; case P_MENU: tickerStepX++; if (tickerStepX > WIDTH) { tickerStepX = 0; } break; case P_TABLEFORM: break; case P_LOADER: timeCount++; if (timeCount > loaderw) { timeCount = 0; } break; } repaint(); serviceRepaints(); if (keydelay > 0) { //按键时间控制 keydelay--; } //垃圾回收 System.gc(); timetaken = System.currentTimeMillis() - starttime; if (timetaken < TIME_PER_FRAME) //确定游戏帧数 gameThread.sleep(TIME_PER_FRAME - timetaken); // if(cartoonboolean){ // System.out.println("^^^^^^^^^^^^^^^^^^^^^"); // httpcatoonbool = true; // } } } catch (Exception ex) { repaint(); serviceRepaints(); } } /** *连续按键控制 * * */ protected void keyRepeated(int keyCode) { keyPressed(keyCode); } /** *按键控制 * 所有主线程中按键控制 * */ protected final void keyPressed(int keycode) { // key_press = true; this.key = keycode; if (keydelay == 0) { keydelay = 3; switch (game_state) { case P_EXIT: if (key == KEY_SOFTKEY1) { quitGame = true; midlet.exit(); } if (key == KEY_SOFTKEY2) { game_state = P_MENU; } break; case P_MENU: keyProcessMenu(); break; case P_TABLEFORM: keyProcessTableForm(); switch (table_state) { case TABLEFORM_LIST: keyProcessTableForm_list(); break; case TABLEFORM_INPUT: keyProcessTableForm_input(); break; case TABLEFORM_SHOW: keyProcessTableForm_show(); break; } break; } } } /** *键释放 * * */ protected final void keyReleased(int keycode) { // keyRepeat = false; this.key = 0; } /** *重画 * * */ public final void repaintFrame(int time) { long PaintTime = System.currentTimeMillis(); repaint(); serviceRepaints(); PaintTime = System.currentTimeMillis() - PaintTime; try { if (PaintTime < time) Thread.sleep(time - PaintTime); else Thread.sleep(0); } catch (Exception ex) { } } ////来电 protected void hideNotify() { } protected void showNotify() { } /** *程序启动时,开机动画 *posY 动画显示的Y坐标 * */ private void drawLoading(Graphics g, int posY) { g.setColor(0xffffff); g.fillRect(0, 100, WIDTH, HEIGHT); g.drawImage(logoImage, (WIDTH - logoImage.getWidth()) >> 1, (HEIGHT - logoImage.getHeight()) / 2, 20); g.drawImage(loadImage[timeCount % 3], (WIDTH - loadImage[timeCount % 3].getWidth()) >> 1, 178, 20); } /******************************/ /******* 画联网数据处理动画 *****/ /******************************/ public void setHttpcatoonbool(boolean _httpcatoonbool){ this.httpcatoonbool = _httpcatoonbool; } private void drawHttpCatoon(Graphics g ) { g.setClip(0,0,240,320); if(httpcatoonbool){ int httpcount = (urltimeCount / 4) % 4; System.out.println("httpcount = " + httpcount); g.drawImage(httpLoadImage[httpcount], WIDTH - httpLoadImage[httpcount].getWidth()-10, 10, 20); System.out.println("ddddddddddddddddddddddddddd = " + httpcount); } } //画载入 int loaderx = 67; int loadery = HEIGHT - 26; int loaderw = 242; int loaderh = 26; int loadertempx = 26; private void paintloader(Graphics g) { g.setColor(0xffffff); g.fillRect(loaderx, loadery, timeCount, loaderh); } /** *统一背景 * * */ private void drawBG(Graphics g) { g.setColor(0xFFFFFF); g.fillRect(0, 0, WIDTH, HEIGHT); g.drawImage(bgtopImage, 0, 0, 20); g.drawImage(bgfootImage, (WIDTH - bgfootImage.getWidth()) >> 1, HEIGHT - bgfootImage.getHeight(), 20); g.drawString("确定", 10, 302, 20); g.drawString("返回", 202, 302, 20); // drawHttpCatoon(g); // g.drawImage(buttemImage, 0, // HEIGHT - buttemImage.getHeight(), 20); // g.drawImage(buttemImage, (WIDTH - buttemImage.getWidth()) , // HEIGHT - buttemImage.getHeight(), 20); } /** * 画九宫菜单 * */ private void paintMenu(Graphics g) { for (int r = 0; r < nrow; r++) { for (int c = 0; c < ncol; c++) { // g.drawImage(icons[r * 3 + c], pointX[r * 3 + c], pointY[r * 3 + c], 20); } } g.drawImage(selectImage, pointX[imgNum] + 12, pointY[imgNum] + 27, 20); } /** * 画滚动条菜单 * str 所要显示的文字 * stringLong 所显示文字的长度,当stringLong大于屏幕宽度时,滚动,否则居中 */ private void paintTicker(Graphics g, String str) { int stringLong = samllfont.stringWidth(str); g.setColor(0x000000); g.setClip(0, 29, WIDTH, HEIGHT); if (stringLong < WIDTH) { ticker_x = (WIDTH - stringLong) / 2; } else { ticker_x = WIDTH / 2 - tickerStepX; } g.drawString(str, ticker_x, ticker_y, 20); } /** * 画TableForm 通用背景 * * */ private void drawTableFormTabbar(Graphics g) { //画Tablebar工具条中 左右图标 g.drawImage(arrawLImage, 0, table_y, 20); g.drawImage(arrawRImage, WIDTH - arrawRImage.getWidth(), table_y, 20); g.setClip(tabbarStarX, tabbarStarY, tabbarEndX, tabbarEndY); //画Tablebar工具条 tabbarStateUPid = tabbarStateid; if (tabbarStateid > 8) { tabbarStateUPid = 0; } else if (tabbarStateid < 0) { tabbarStateUPid = 8; } g.drawImage(buttemImage, tabbarStarX + tabbarStepX, 24, 20); //画Tablebar工具条中菜单 g.setColor(0xffffff); for (int i = 0; i < mobileInfo.TabbarNames.length; i++) { g.drawString(mobileInfo.TabbarNames[i], tabbarX[i], 30, 20); } if (tabbarStateid == tabbarStateUPid) { g.setColor(0x000000); g.drawString(mobileInfo.TabbarNames[tabbarStateUPid], tabbarX[tabbarStateUPid], 30, 20); } } /** * //画TableForm List菜单 * * */ protected void drawTableFormList(Graphics g) { int y = 75; int setpy = 26; g.setClip(0, 0, WIDTH, HEIGHT); g.drawImage(listselectImage, 0, y + setpy * (listId) - 3, 20); g.setColor(0x000000); for (int i = 0; i < mobileInfo.getTabbar(tabbarStateid).length; i++) { g.drawImage(arrawPImage, 5, y + setpy * (i), 20); g.drawString(mobileInfo.getTabbar(tabbarStateid)[i], 27, y + setpy * (i), 20); } } /** * ////画list页面查询菜单 * * */ protected void drawList(Graphics g, String[] str, int y) { g.setClip(0, 0, WIDTH, HEIGHT); g.setColor(0x000000); for (int i = 0; i < str.length; i++) { g.drawString(str[i], 3, text_y + y + stepFontHight * (i), 20); } } /** * 九宫菜单页面按键控制 * * */ private void keyProcessMenu() { if (key == KEY_UP_ARROW) { imgNum--; if (imgNum < 0) { imgNum = 8; } } if (key == KEY_DOWN_ARROW) { imgNum++; if (imgNum > 8) { imgNum = 0; } } if (key == KEY_LEFT_ARROW) { if (imgNum != 2 && imgNum != 1) { imgNum = imgNum - 3; if (imgNum < 0) { imgNum = 8; } } else imgNum = imgNum + 5; } if (key == KEY_RIGHT_ARROW) { if (imgNum != 6 && imgNum != 7) { imgNum = imgNum + 3; if (imgNum > 8) { imgNum = 0; } } else imgNum = imgNum - 5; } if (key == KEY_SOFTKEY1 || key == KEY_SOFTKEY3) { game_state = P_TABLEFORM; table_state = TABLEFORM_LIST; } if (key == KEY_SOFTKEY2) { game_state = P_EXIT; } } /** * TableForm 页面 左右选择时 按键控制 * 优先级最大 * */ private void keyProcessTableForm() { if (key == KEY_LEFT_ARROW) { table_state = TABLEFORM_LIST; listId = 0; tabbarStateid--; if (tabbarStateid < 0) { tabbarStateid = 8; } tabbarStepX = tabbarStepX - bgstepX; if (tabbarStarX + tabbarStepX <= 0) { tabbarStepX = 0; int vvv; vvv = tabbarX[8]; tabbarX[8] = tabbarX[0]; tabbarX[0] = tabbarX[1]; tabbarX[1] = tabbarX[2]; tabbarX[2] = tabbarX[3]; tabbarX[3] = tabbarX[4]; tabbarX[4] = tabbarX[5]; tabbarX[5] = tabbarX[6]; tabbarX[6] = tabbarX[7]; tabbarX[7] = vvv; } } if (key == KEY_RIGHT_ARROW) { table_state = TABLEFORM_LIST; listId = 0; tabbarStateid++; if (tabbarStateid > 8) { tabbarStateid = 0; } tabbarStepX = tabbarStepX + bgstepX; if (tabbarStepX > 2 * bgstepX) { //3 * bgstepX tabbarStepX = 2 * bgstepX; strstepX = strstepX + bgstepX; int xxx; xxx = tabbarX[0]; tabbarX[0] = tabbarX[8]; tabbarX[8] = tabbarX[7]; tabbarX[7] = tabbarX[6]; tabbarX[6] = tabbarX[5]; tabbarX[5] = tabbarX[4]; tabbarX[4] = tabbarX[3]; tabbarX[3] = tabbarX[2]; tabbarX[2] = tabbarX[1]; tabbarX[1] = xxx; } } } /** * 列表页面 按键控制 * KEY_SOFTKEY2 返回上级菜单 * * tabbarStateid 9大菜单 id * listId 9大菜单下小菜单列表 id * */ private void keyProcessTableForm_list() { if (key == KEY_UP_ARROW) { listId--; if (listId < 0) { listId = mobileInfo.getTabbar(tabbarStateid).length - 1; } } if (key == KEY_DOWN_ARROW) { listId++; if (listId > mobileInfo.getTabbar(tabbarStateid).length - 1) { listId = 0; } } if (key == KEY_SOFTKEY1 || key == KEY_SOFTKEY3) { switch (tabbarStateid) { case 0: //百度 switch (listId) { case 0: //百宝知道 case 1: //百宝百科 case 2: //百宝英汉 case 3: //百宝汉英 case 4: //全文翻译 textbox = new MyTextBox(display, this, mobileInfo.Tarry0[listId][1]); break; } table_state = TABLEFORM_INPUT; break; case 1: //金融 switch (listId) { case 0: ////大盘行情 String temp = "大盘行情"; //联网取大盘行情数据 textshow = new Mytextshow(display, this, temp); table_state = TABLEFORM_SHOW; //直接跳到页面 break; case 1: //个股查询 case 2: //基金查询 textbox = new MyTextBox(display, this, mobileInfo.Tarry1[listId][1]); table_state = TABLEFORM_INPUT; break; case 3: //外汇价格 String[][] money = (String[][])this.getLinkContent(tabbarStateid, listId, "外汇价格"); mylist = new MyList(display, this, money, midlet); table_state = TABLEFORM_INPUT; break; } break; case 2: //彩票乐透 switch (listId) { case 0: //体彩getLinkContent String[][] caipiao = (String[][])this.getLinkContent(tabbarStateid, listId, "体彩"); mylist = new MyList(display, this, caipiao, midlet); table_state = TABLEFORM_INPUT; break; case 1: //福彩 String temp = "福彩行情"; //联网取福彩行情数据 textshow = new Mytextshow(display, this, temp); table_state = TABLEFORM_SHOW; //直接跳到页面 break; } break; case 3: //生活娱乐 break; case 4: //交通出行 switch (listId) { case 0: //公交查询 textbox = new MyTextBox(display, this, "选择城市"); table_state = TABLEFORM_INPUT; break; case 1: //火车查询 break; case 2: //飞机查询 break; } break; case 5: //生活工具 switch (listId) { case 1: // 常用号码 //getOnlyContent String temp = (String)this.getOnlyContent( tabbarStateid, listId, "常用号码");; //联网取福彩行情数据 textshow = new Mytextshow(display, this, temp); table_state = TABLEFORM_SHOW; //直接跳到页面 break; case 0: case 2: case 3: case 4: case 5: textbox = new MyTextBox(display, this, mobileInfo.Tarry5[listId][1]); table_state = TABLEFORM_INPUT; break; } break; case 6: switch (listId) { case 0: // 奇异梦解 textbox = new MyTextBox(display, this, mobileInfo.Tarry6[listId][1]); table_state = TABLEFORM_INPUT; break; case 1: //每日星运 String temp = "星运详情"; //联网取每日星运数据 textshow = new Mytextshow(display, this, temp); table_state = TABLEFORM_SHOW; //直接跳到页面 break; } break; case 7: //3G快车 break; case 8: //帮助 break; } } if (key == KEY_SOFTKEY2) { game_state = P_MENU; } } /** * 输入款输入字符后 按键控制 * 链接网络取得数据 然后转入 TABLEFORM_SHOW 最终显示结果页面 * tabbarStateid 9大菜单 * listId 9大菜单下小菜单列表 */ private void keyProcessTableForm_input() { if (key == KEY_SOFTKEY2) { showIs = false; table_state = TABLEFORM_LIST; } switch (tabbarStateid) { case 0: //百度 switch (listId) { case 0: //百宝知道 if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs) { //当输入框输入数据后,按左软键进行联网查询 cartoonboolean=true; String[][] biadu = (String[][])this.getMuchContent(textbox. m_text, 0, 0, "baidu"); mylist = new MyList(display, this, biadu, midlet); table_state = TABLEFORM_SHOW; cartoonboolean=false; } if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面 showIs = true; textbox.keyPress(key); } break; case 1: //百宝百科 case 2: //百宝英汉 case 3: //百宝汉英 case 4: //全文翻译 if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1)&& showIs) { String temptexbox = (String)this.getSingleContent(textbox. m_text, tabbarStateid, listId, "baoddaf"); textshow = new Mytextshow(display, displayable, temptexbox); table_state = TABLEFORM_SHOW; } if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1)&& showIs == false) { //按确定键,输入框跳入输入界面 showIs = true; textbox.keyPress(key); } break; } break; case 1://金融 switch (listId) { case 0: ////大盘行情 break; case 1: //个股查询 case 2: //基金查询 if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs) { String temptexbox = (String)this.getSingleContent(textbox. m_text,tabbarStateid, listId, "baoddaf"); textshow = new Mytextshow(display, displayable, temptexbox); table_state = TABLEFORM_SHOW; } if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面 showIs = true; textbox.keyPress(key); } break; case 3: //外汇价格 break; } break; case 2: break; case 3: break; case 4: break; case 5://生活工具 switch(listId){ case 1://常用号码 break; case 0: case 2: case 3: case 4: case 5: case 6: if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs) { String temptexbox = (String)this.getSingleContent(textbox. m_text, tabbarStateid, listId, "生活工具"); textshow = new Mytextshow(display, displayable, temptexbox); table_state = TABLEFORM_SHOW; } if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面 showIs = true; textbox.keyPress(key); } break; } break; case 6://星座 switch(listId){ case 0://解梦 if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs) { //当输入框输入数据后,按左软键进行联网查询 String[][] biadu = (String[][])this.getMuchContent(textbox. m_text, 0, 0, "baidu"); mylist = new MyList(display, this, biadu, midlet); table_state = TABLEFORM_SHOW; } if ((key == KEY_SOFTKEY3 || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面 showIs = true; textbox.keyPress(key); } break; case 1: break; } break; case 7: break; case 8: break; } } /** * 最终文本显示页面 按键控制 * KEY_SOFTKEY2 返回上级菜单 * * 当文字的长度大于一屏时;通过上下按键翻滚页面 * tabbarStateid 9大菜单 * listId 9大菜单下小菜单列表 * rowid 联网取得的文本的行数 * line 一屏可显示的行数 */ private void keyProcessTableForm_show() { if (key == KEY_SOFTKEY2) { showIs = false; if(tabbarStateid == 0){ table_state = TABLEFORM_INPUT; }else { table_state = TABLEFORM_LIST; } } if (rowid > line) { if (key == KEY_UP_ARROW) { showId--; if (showId < 0) { showId = 0; } } if (key == KEY_DOWN_ARROW) { showId++; if (showId > rowid - line) { showId = rowid - line; } } } else showId = 0; switch (tabbarStateid) { case 0: //百度 if (listId==0) { //百度知道 mylist.keyPress(key); } break; case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6://星座 if(listId==0){//解梦 mylist.keyPress(key); } break; case 7: break; case 8: break; } } /** * 读取图片的方法 * @param read image * */ private Image loadImage(String imageName) { Image img = null; try { img = Image.createImage(imageName); } catch (Exception ex) { } return img; } public void commandAction(Command command, Displayable displayable) { } //画百度知道显示页面 public void drawHttpLoding(Graphics g) { g.drawString("联网提示", 10, HEIGHT_TEMP - 20, 20); } /** * * @param _source String 提交的文本框内容 * @param listId int 当项目id * @param _storageType String 临时存储Key * @return String 返回 无列表 内容 */ private String getSingleContent(String _source, int _tableId, int _listId, String _storageType) { // 提交中文 URL 转码 String contentStr = ""; String temptexbox = cn.mobell.tool.URLEncoder.encode(_source, "UTF-8"); String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId); String baiduUrl = array_Tarry[_listId][4] + "&" + array_Tarry[_listId][3] + "&" + array_Tarry[_listId][2] + "=" + temptexbox; //midlet.initHttp(baiduUrl, _storageType); ThreaHttp.getInstance().initHttp(baiduUrl, _storageType); while (true) { if (HttpData.userHash.containsKey(_storageType)) { Vector vec_data = (Vector) HttpData.userHash.get(_storageType); System.out.println("baidu vec_data.size" + vec_data.size()); for (int i = 0; i < vec_data.size(); i++) { //原来用数据类,现在用书组 //数组信息:mlTag; WXL 标签,xmlText; 内容,newline; 是否换行,pageurl; 内容对应的URL String[] wmlinfo_obj = (String[]) vec_data.elementAt(i); contentStr = contentStr + wmlinfo_obj[1]; } //清除 联网 数据 vec_data.removeAllElements(); HttpData.userHash.remove(_storageType); break; } } //自己判断无数据处理 return contentStr; } /** * * @param _source String 提交的文本框内容 * @param listId int 当项目id * @param _storageType String 临时存储Key * @return String 返回 列表 内容 */ private String[][] getMuchContent(String _source, int _tableId, int _listId, String _storageType) { // 提交中文 URL 转码 System.out.println("##$$#$启动联网动画"); String[][] contentStr = null; //标题对应的url String temptexbox = cn.mobell.tool.URLEncoder.encode(_source, "UTF-8"); String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId); String baiduUrl = array_Tarry[_listId][4] + "&" + array_Tarry[_listId][3] + "&" + array_Tarry[_listId][2] + "=" + temptexbox; //midlet.initHttp(baiduUrl, _storageType); ThreaHttp.getInstance().initHttp(baiduUrl, _storageType); while (true) { if (HttpData.userHash.containsKey(_storageType)) { Vector vec_data = (Vector) HttpData.userHash.get(_storageType); System.out.println("baidu vec_data.size" + vec_data.size()); contentStr = new String[vec_data.size()][2]; for (int i = 0; i < vec_data.size(); i++) { //原来用数据类,现在用书组 //数组信息:mlTag; WXL 标签,xmlText; 内容,newline; 是否换行,pageurl; 内容对应的URL String[] wmlinfo_obj = (String[]) vec_data.elementAt(i); contentStr[i][0] = wmlinfo_obj[1]; contentStr[i][1] = wmlinfo_obj[3]; } //清除 联网 数据 vec_data.removeAllElements(); HttpData.userHash.remove(_storageType); break; } } //自己判断无数据处理 //httpcatoonbool=false; return contentStr; } /** * 直接提交URL 取得数据 * @param listId int 当项目id * @param _storageType String 临时存储Key * @return String 返回 无列表 内容 */ private String getOnlyContent( int _tableId, int _listId, String _storageType) { // 提交中文 URL 转码 String contentStr = ""; String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId); String baiduUrl = array_Tarry[_listId][4] + "&" + array_Tarry[_listId][3] ; ThreaHttp.getInstance().initHttp(baiduUrl, _storageType); while (true) { if (HttpData.userHash.containsKey(_storageType)) { Vector vec_data = (Vector) HttpData.userHash.get(_storageType); for (int i = 0; i < vec_data.size(); i++) { //原来用数据类,现在用书组 //数组信息:mlTag; WXL 标签,xmlText; 内容,newline; 是否换行,pageurl; 内容对应的URL String[] wmlinfo_obj = (String[]) vec_data.elementAt(i); contentStr = contentStr + wmlinfo_obj[1]; } //清除 联网 数据 vec_data.removeAllElements(); HttpData.userHash.remove(_storageType); break; } } //自己判断无数据处理 return contentStr; } /** * 直接提交URL 取得数据 * @param listId int 当项目id * @param _storageType String 临时存储Key * @return String 返回 列表 内容 */ private String[][] getLinkContent( int _tableId, int _listId, String _storageType) { // 提交中文 URL 转码 String[][] contentStr = null; //标题对应的url String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId); String baiduUrl = array_Tarry[_listId][4] + "&" + array_Tarry[_listId][3] ; System.out.println("联网URL:"+baiduUrl); ThreaHttp.getInstance().initHttp(baiduUrl, _storageType); while (true) { if (HttpData.userHash.containsKey(_storageType)) { Vector vec_data = (Vector) HttpData.userHash.get(_storageType); System.out.println("baidu vec_data.size" + vec_data.size()); contentStr = new String[vec_data.size()][2]; for (int i = 0; i < vec_data.size(); i++) { //原来用数据类,现在用书组 //数组信息:mlTag; WXL 标签,xmlText; 内容,newline; 是否换行,pageurl; 内容对应的URL String[] wmlinfo_obj = (String[]) vec_data.elementAt(i); contentStr[i][0] = wmlinfo_obj[1]; contentStr[i][1] = wmlinfo_obj[3]; } //清除 联网 数据 vec_data.removeAllElements(); HttpData.userHash.remove(_storageType); break; } } //自己判断无数据处理 return contentStr; } private void jbInit() throws Exception { } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-27
WTK 自己知道下载吧。
|
|
返回顶楼 | |
发表时间:2010-05-05
switch语句用的太多了
|
|
返回顶楼 | |
发表时间:2010-05-07
楼主的注释写很详细,对新手应该有帮助
|
|
返回顶楼 | |