<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

    常用鏈接

    常用設置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155536
    • 排名 - 390

    最新評論

      手機姓名秀 - NameShow

     在手機上展示你的姓名。
     
     [背景]:
     1、如果你的名字是生僻字,沒法組成常見詞,別人問起,你得解釋半天,最終還是要拿筆寫出來別人才明白。
     2、當你想向別人展示個性簽名時,拿出紙質簽名就太土了,也不方便。
     3、當你需要展示名片時,紙質名片沒有帶,手機總帶了吧?NameShow就派上用場了。
          
     [說明]:
     1、用WinRAR打開NameShow.jar,
     用自己制作的姓名圖片替換原有up.png、left.png、down.png、right.png。
     原圖片大小是128x160,根據自己的手機屏幕大小提供相應大小的圖片。
     替換完成后,把NameShow.jar安裝到手機即可運行。
     2、上下左右導航鍵各對應一張圖片。
     3、如果姓名是三個字:up.png對應全名,left.png對應姓,
     down.png對應名的第一個字,right.png對應名的第二個字;
     如果是姓名是二個字:則down.png可以省略。
     4、本程序在CLDC1.0,MIDP2.0環境編譯,Nokia S40的Java環境成功運行。
     
     [問題]
     Q:自己制作圖片太麻煩,為什么不能在程序中輸入姓名并保存,每次打開顯示上次輸入的姓名?
     A:普通手機沒有超大字體,要想顯示個性畫且超大的全屏字,只能用圖片。
     
     Q:我的手機不是智能機,可以用嗎?
     A:支持Java的手機都可以使用。
     
     Q:直接在手機上顯示圖片不是更方便?
     A:有的手機全屏顯示圖片時并不優雅,如果用NameShow將更方便切換姓與名的顯示。


    NameShowMIDlet.java:
    import java.io.IOException;
    import java.io.InputStream;

    import javax.microedition.lcdui.Canvas;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;

    /**
     * 手機姓名秀 - NameShow
     *
     * [背景]:
     * 1、如果你的名字是生僻字,沒法組成常見詞,別人問起,你得解釋半天,最終還是要拿筆寫出來別人才明白。
     * 2、當你想向別人展示個性簽名時,拿出紙質簽名就太土了,也不方便。
     * 3、當你需要展示名片時,紙質名片沒有帶,手機總帶了吧?NameShow就派上用場了。
     *      
     * [說明]:
     * 1、用WinRAR打開NameShow.jar,
     * 用自己制作的姓名圖片替換原有up.png、left.png、down.png、right.png。
     * 原圖片大小是128x160,根據自己的手機屏幕大小提供相應大小的圖片。
     * 替換完成后,把NameShow.jar安裝到手機即可運行。
     * 2、上下左右導航鍵各對應一張圖片。
     * 3、如果姓名是三個字:up.png對應全名,left.png對應姓,
     * down.png對應名的第一個字,right.png對應名的第二個字;
     * 如果是姓名是二個字:則down.png可以省略。
     * 4、本程序在CLDC1.0,MIDP2.0環境編譯,Nokia S40的Java環境成功運行。
     *
     * [問題]
     * Q:自己制作圖片太麻煩,為什么不能在程序中輸入姓名并保存,每次打開顯示上次輸入的姓名?
     * A:普通手機沒有超大字體,要想顯示個性畫且超大的全屏字,只能用圖片。
     *
     * Q:我的手機不是智能機,可以用嗎?
     * A:支持Java的手機都可以使用。
     *
     * Q:直接在手機上顯示圖片不是更方便?
     * A:有的手機全屏顯示圖片時并不優雅,如果用NameShow將更方便切換姓與名的顯示。
     *****************************************
     * 開發工具:Eclipse Pulsar for Mobile Java Developers
     * 手機模擬器:Nokia S40 6th、Motorola
     *****************************************
     * @author Winty wintys@gmail.com
     * @version 2010-01-30
     *
     */
    public class NameShowMIDlet extends MIDlet
                implements CommandListener{
        private Command back,exit,help,about;
        private NameDisplayCanvas canvas;
        private Image []imgs;//四個圖片,順序為上下左右。加一個logo.png,共五個。
        private Image img;
        private boolean isHelp = false;
        private boolean isAbout = false;

        public NameShowMIDlet() {
            imgs = new Image[5];
            back = new Command("返回",Command.BACK,1);
            exit = new Command("退出",Command.EXIT , 2);
            help = new Command("幫助",Command.HELP, 3);
            about = new Command("關于",Command.HELP, 4);
            canvas = new NameDisplayCanvas();
            canvas.addCommand(back);
            canvas.addCommand(exit);
            canvas.addCommand(help);
            canvas.addCommand(about);
            canvas.setCommandListener(this);
            Display.getDisplay(this).setCurrent(canvas);
        }

        protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
        }

        protected void pauseApp() {
        }

        protected void startApp() throws MIDletStateChangeException {
            String []imgnames = {"up.png","down.png","left.png","right.png","logo.png"};
            for(int i = 0;i < imgnames.length; i++){
                InputStream is = null;
                try{
                    is = this.getClass().getResourceAsStream(imgnames[i]);
                }catch(NullPointerException e){
                    is = null;
                    e.printStackTrace();
                }
                
                if( is != null){
                    try {
                        imgs[i] = Image.createImage(is);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }//end of if
            }//end of for
        }

        public void commandAction(Command c, Displayable d) {
            if( c == exit){
                try {
                    destroyApp(false);
                    notifyDestroyed();
                } catch (MIDletStateChangeException e) {
                    e.printStackTrace();
                }
            }
            
            if( c == about){
                isAbout = true;
                canvas.repaint();
            }
            
            if( c == help){
                isHelp = true;
                canvas.repaint();
            }
        }
        
        //內部類,屏幕Canvas
        class NameDisplayCanvas extends Canvas{
            private static final int COLOR_INFO = 0x0078FF;
            private static final int COLOR_ERROR = 0xFF0000;
            
            public NameDisplayCanvas(){    
                this.setFullScreenMode(true);
            }
            
            protected void paint(Graphics g) {
                int w = getWidth();
                int h = getWidth();
                
                if(isAbout){
                    String name = "NameShow - 姓名秀";
                    String author = "作者:天堂露珠";
                    String email = "Email:wintys@gmail.com";
                    String date = "Date:2010-01-30";
                    g.setColor(COLOR_INFO);
                    displayInfo(g,name,author,email,date);
                    if(imgs[4] != null)
                        g.drawImage(imgs[4], w/2, h/2-40, Graphics.TOP|Graphics.HCENTER);

                    isAbout = false;
                    return;
                }
                
                if(isHelp){
                    String str1 = "導航鍵各對應一張圖片";
                    String str2 = "'*'鍵顯示about信息";
                    String str3 = "'#'鍵退出程序";
                    String str4 = "";
                    g.setColor(COLOR_INFO);
                    displayInfo(g,str1,str2,str3,str4);
                    
                    isHelp = false;
                    return;
                }
                
                //默認顯示第一張圖片
                if(img == null)
                    img = imgs[0];
                
                if(img != null)
                    g.drawImage(img, 0, 0, Graphics.TOP|Graphics.LEFT);
                else{//當所請求顯示的圖片沒有找到時,顯示此提示
                    String str = "無法載入圖片!";
                    clearScreen(g);
                    g.setColor(COLOR_ERROR);
                    g.drawString(str, w/2, h/2, Graphics.BASELINE | Graphics.HCENTER);
                }
            }
            
            protected void keyPressed(int keyCode) {
                int action = getGameAction(keyCode);
                switch(action){
                    case LEFT:
                        img = imgs[2];
                        break;
                    case RIGHT:
                        img = imgs[3];
                        break;
                    case DOWN:
                        img = imgs[1];
                        break;
                    case UP:
                    case FIRE:
                    default:
                        img = imgs[0];
                        break;
                }
                repaint();
                
                //按下'#'退出
                if(keyCode == KEY_POUND){
                    try {
                        destroyApp(false);
                    } catch (MIDletStateChangeException e) {
                        e.printStackTrace();
                    }
                    notifyDestroyed();
                }
                //按下'*'顯示幫助信息
                if(keyCode == KEY_STAR){
                    isAbout = true;
                }
            }
            
            //清屏
            private void clearScreen(Graphics g){
                int color = g.getColor();
                g.setColor(0xFFFFFF);
                g.fillRect(0,0,getWidth(),getHeight());
                g.setColor(color);
            }
            
            //顯示文本信息
            private void displayInfo(Graphics g,String s1,String s2 ,String s3,String s4){
                int w = getWidth();
                int h = getWidth();
                clearScreen(g);
                
                int anchor = Graphics.BASELINE | Graphics.HCENTER;
                g.drawString(s1, w/2, h/2, anchor);
                g.drawString(s2,w/2,h/2+20,anchor);
                g.drawString(s3,w/2,h/2+40,anchor);
                g.drawString(s4,w/2,h/2+60,anchor);
            }
        }//end of NameDisplayCanvas
    }

    運行效果:
    這里使用的是測試姓名圖片(姓名為“王二小”):


    NameShow下載:http://www.tkk7.com/Files/wintys/file/NameShow.zip
    原創作品,轉載請注明出處。
    作者:天堂露珠 (wintys@gmail.com)
    博客:http://www.tkk7.com/wintys

    posted on 2010-01-30 21:48 天堂露珠 閱讀(475) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲日韩中文字幕在线播放| 免费阿v网站在线观看g| 久久久久国产成人精品亚洲午夜| 亚洲中字慕日产2020| 亚洲性一级理论片在线观看| 国产亚洲视频在线观看网址| 中文字幕在线成人免费看| 免费在线看v网址| 亚洲一级毛片免费观看| 久草免费在线观看视频| 77777亚洲午夜久久多人| 国产精品无码免费专区午夜 | 91网站免费观看| 亚洲国产日产无码精品| aa毛片免费全部播放完整| 亚洲精品一品区二品区三品区| 中文字幕免费在线看电影大全 | 亚洲AV无码乱码在线观看裸奔| 四虎亚洲精品高清在线观看| 午夜视频在线观看免费完整版| 久久国产精品亚洲一区二区| 激情小说亚洲图片| 色婷婷7777免费视频在线观看 | 亚洲av无码成人精品区在线播放 | 亚洲亚洲人成综合网络| 午夜无码A级毛片免费视频| 亚洲国产精品无码久久久| 免费看的成人yellow视频| igao激情在线视频免费| 噜噜噜亚洲色成人网站∨| 免费特级黄毛片在线成人观看| 国产亚洲男人的天堂在线观看| 国产成人精品日本亚洲专区61| 最近2019中文字幕免费直播| 国产av无码专区亚洲av桃花庵| 黄色a三级免费看| 麻豆国产人免费人成免费视频| 永久免费观看黄网站| 亚洲精品网站在线观看你懂的| 日本一道本高清免费| 亚洲AV无码一区二区三区久久精品|