今天用canvas写了一个google界面,烂的不行,只能在defaultcolorphone里有好的表现,换一个模拟器就不行,就是没有移植性,而且不能进行选择,纯粹是画了幅画.不过算是对前面学的东西的一个练习.本来想找地方传上来,可惜地方一时也找不到.打算过几天改进一下,重写一下源码,更有结构一些.另外再加上一些交互事件的处理.到时候把满意的传上来看.这里贴个源码
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.*;
public class SmartGoogle extends MIDlet
{
private Display display;
private MyCanvas mycanvas;
public SmartGoogle()
{
display=Display.getDisplay(this);
mycanvas=new MyCanvas("Google - Microsoft Internet Explorer");
}
public void startApp()
{
display.setCurrent(mycanvas);
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){}
}
class MyCanvas extends Canvas
{
Image img;
public MyCanvas(String title)
{
setTitle(title);
}
public void paint(Graphics g)
{
cls(g); //clear screen
draw(g); //draw main page
}
private void cls(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
}
private void draw(Graphics g)
{
String string1=new String("Sign in");
String string2=new String(" | ");
String string3=new String("Personalized Home");
Font f=Font.getDefaultFont();
g.setColor(0,0,255);
g.drawString(string1,getWidth(),0,Graphics.RIGHT|Graphics.TOP);
int width1=f.stringWidth(string1);
int height=f.getHeight();
g.drawLine(getWidth()-width1,height,getWidth()-f.charWidth(' '),height);
g.setColor(0,0,0);
g.drawString(string2,getWidth()-width1,0,Graphics.RIGHT|Graphics.TOP);
int width2=f.stringWidth(string2);
g.setColor(0,0,255);
g.drawString(string3,getWidth()-width1-width2,0,Graphics.RIGHT|Graphics.TOP);
int width3=f.stringWidth(string3);
g.drawLine(getWidth()-width1-width2-width3,height,getWidth()-width1-width2-f.charWidth(' '),height);
try{
img=Image.createImage("/logo.png");
g.drawImage(img,(getWidth()-img.getWidth())/2,height+5,Graphics.LEFT|Graphics.TOP);
}
catch(IOException e){}
string1="Web";
string2=" ";
string3="Images";
String string4="Group";
String string5="News";
String string6="more >>";
int width=(getWidth()-f.stringWidth(string1+string2+string3+string2+string4+string2+string5+string2+string6))/2;
height=height+5+img.getHeight();
g.setColor(0,0,0);
g.drawString(string1+string2,width,height,Graphics.LEFT|Graphics.TOP);
g.setColor(0,0,255);
g.drawString(string3+string2,width+f.stringWidth(string1+string2),height,Graphics.LEFT|Graphics.TOP);
g.drawLine(width+f.stringWidth(string1+string2),height+f.getHeight()-1,width+f.stringWidth(string1+string2+string3)-f.charWidth(' '),height+f.getHeight()-1);
g.drawString(string4+string2,width+f.stringWidth(string1+string2+string3+string2),height,Graphics.LEFT|Graphics.TOP);
g.drawLine(width+f.stringWidth(string1+string2+string3+string2),height+f.getHeight()-1,width+f.stringWidth(string1+string2+string3+string2+string4)-f.charWidth(' '),height+f.getHeight()-1);
g.drawString(string5+string2,width+f.stringWidth(string1+string2+string3+string2+string4+string2),height,Graphics.LEFT|Graphics.TOP);
g.drawLine(width+f.stringWidth(string1+string2+string3+string2+string4+string2),height+f.getHeight()-1,width+f.stringWidth(string1+string2+string3+string2+string4+string2+string5)-f.charWidth(' '),height+f.getHeight()-1);
g.drawString(string6,getWidth()-width,height,Graphics.RIGHT|Graphics.TOP);
g.drawLine(getWidth()-width,height+f.getHeight()-1,getWidth()-width-f.stringWidth(string6),height+f.getHeight()-1);
width=width-10;
height=height+f.getHeight()+6;
g.setColor(0,0,0);
g.drawLine(width,height,width,height+20);
g.drawLine(width,height,getWidth()-width,height);
g.setGrayScale(200);
g.drawLine(width,height+20,getWidth()-width,height+20);
g.drawLine(getWidth()-width,height,getWidth()-width,height+20);
height=height+28;
string1="Google Search I'm Feeling Lucky";
width=(getWidth()-f.stringWidth(string1))/2;
g.setGrayScale(210);
g.fillRect(width-8,height-4,f.stringWidth(string1)+16,f.getHeight()+7);
g.setGrayScale(0);
g.drawLine(width-8,height+f.getHeight()+3,width+f.stringWidth(string1)+8,height+f.getHeight()+3);
g.drawLine(width+f.stringWidth(string1)/2-4,height-4,width+f.stringWidth(string1)/2-4,height+f.getHeight()+3);
g.drawLine(width+f.stringWidth(string1)+8,height-4,width+f.stringWidth(string1)+8,height+f.getHeight()+3);
g.drawString(string1,width,height,Graphics.LEFT|Graphics.TOP);
string1=" Business Solutions ";
string2="Make Google Your Homepage!";
string3="?2006 Google";
string4=" About Google";
string5="-";
width=(getWidth()-f.stringWidth(string5+string1+string5+string4))/2;
height=height+50;
g.setColor(0,0,0);
g.drawString(string5,width,height,Graphics.LEFT|Graphics.TOP);
width=width+f.stringWidth(string5);
g.setColor(0,0,255);
g.drawString(string1,width,height,Graphics.LEFT|Graphics.TOP);
g.drawLine(width,height+f.getHeight()-1,width+f.stringWidth(string1)-f.charWidth(' '),height+f.getHeight()-1);
width=width+f.stringWidth(string1);
g.setColor(0,0,0);
g.drawString(string5,width,height,Graphics.LEFT|Graphics.TOP);
width=width+f.stringWidth(string5);
g.setColor(0,0,255);
g.drawString(string4,width,height,Graphics.LEFT|Graphics.TOP);
g.drawLine(width,height+f.getHeight()-1,width+f.stringWidth(string4)-f.charWidth(' '),height+f.getHeight()-1);
width=(getWidth()-f.stringWidth(string2))/2;
height=height+f.getHeight()+8;
g.drawString(string2,width,height,Graphics.LEFT|Graphics.TOP);
g.drawLine(width,height+f.getHeight()-1,width+f.stringWidth(string2)-f.charWidth(' '),height+f.getHeight()-1);
width=(getWidth()-f.stringWidth(string3))/2;
height=height+f.getHeight()+8;
g.drawString(string4,width,height,Graphics.LEFT|Graphics.TOP);
g.drawLine(width,height+f.getHeight()-1,width+f.stringWidth(string4)-f.charWidth(' '),height+f.getHeight()-1);
}
}