📄 unicanvas.java
字号:
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 + -