J2ME概要

來源:互聯網
上載者:User

 

 

0. J2ME DEMO
 
    0.1. KeyMapping.java

 
        按鍵動作相關

     
    0.2. ScratchPad.java

 
        觸控螢幕(或滑鼠)繪圖,touch_screen=true

     
    0.3. DrawShapes.java

 
        圓弧繪製

     
    0.4. FontViewer.java、 FontCanvas.java、 PrefsForm.java

        字型相關_多頁面切換

    0.5 DrawImage.java

        在記憶體中繪製圖片

    0.6 EventProcessing.java

        主程式架構_命令處理_事件處理

    0.7 DateFieldTest.java

        使用日期事件組件

    0.8 InteractiveGauge.java

        使用進度條組件Gauge

    0.9 StringItemTest.java

        使用字元標籤組件 StringItem

    0.10 TextFieldTest.java

        使用字元輸入組件TextField

    0.11 ChoiceGroupTest.java

        使用選擇組件ChoiceGroup

    0.12 ImageTest.java

        使用ImageItem和Image組件

    0.13 ImplicitList.java

        使用List組件(類比菜單)

    0.14 TextBoxTest.java

        使用多行文本組件TextBox

    0.15 AlertTest.java

        使用資訊提示組件Alert

    0.16 TickerTest.java

        使用滾動跑馬燈元件Ticker

    0.17 AppRuntimeDetect.java、ConfigMIDlet.java

        擷取當前硬體裝置的ApsaraVideo for Media Processing能力集

    0.18 ReadWrite.java

        訪問手機記錄管理系統
 
 
1. 高層 MIDP 事件分為兩類: Command 和 Item 事件

2. 可以管理命令的 MIDP 組件只有 Form、TextBox、List 和 Canvas

3. 除了 StringItem、Spacer 和 ImageItem,每一個 Item 都可以識別 Item 事件。

4. Ticker 是 Screen 的一個屬性,所以所有的 Screen 子類都可以調用。

5. Canvas 的座標系原點在左上方。

6. 兩個 Display 方法

    boolean isColor()    裝置是否支援彩色
    int numColors()        裝置支援的顏色數

7. Graphics 類顏色支援方法

    void setColor(int RGB)
    void setColor(int red, int green, int blue)

    int getColor()
    int getBlueComponent()
    int getGreenComponent()
    int getRedComponent()

    void setGrayScale(int value)
    int getGrayScale()

8. Graphics 類筆劃類型

    int getStrokeStyle()
    void setStrokeStyle(int style)

    Graphics.DOTTED        虛線
    Graphics.SOLID        實線

9. Graphics 類繪製弧形

    9.1 繪製弧時,可以將它繪製為輪廓線或者填充它。

        void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)    輪廓
        void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)    填充
   
    9.2 首先指定一個假想盒的外部尺寸(也稱為 bounding box),弧是繪製在這個盒子內部的。

    9.3 start angle 確定弧從 3 點鐘的位置開始繪製起始點。正值是反時針方向。

    9.4 arc angle 指定從起始角度按反時針方向繪製多少度。

        g.drawArc(10, 10, 100, 100, 0, 150);

        在位於 10,10 到 100,100 的 bounding box 中繪製弧,弧的 start angle 是 0,arc angle 為 150。

10.  Graphics 類繪製矩形

    10.1 與弧一樣,矩形也可以是輪廓或者填充的。此外,可以指定矩形是直角或者圓角的。

        void drawRect(int x, int y, int width, int height)
        void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

        void fillRect(int x, int y, int width, int height)
        void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

    10.2 在繪製圓角時,指定水平直徑 (arcWidth)和垂直直徑(arcHeight)。這些參數定義了弧在每個方向上的尖銳程度。更大的值表示更平緩的弧,更小的值會收緊曲線。

11. Graphics 類使用字型

    11.1 Font 類的方法:

        Font getFont(int face, int style, int size)
        Font getFont(int fontSpecifier)
        Font getDefaultFont()    // 返回系統定義的字型。

        Font font = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_ITALIC, Font.SIZE_MEDIUM);
        Font font = Font.getFont(Font.FONT_INPUT_TEXT);

    11.2 Font 屬性

        FACE_SYSTEM
        FACE_MONOSPACE
        FACE_PROPORTIONAL

        STYLE_PLAIN
        STYLE_BOLD
        STYLE_ITALIC
        STYLE_UNDERLINED

        SIZE_SMALL
        SIZE_MEDIUM
        SIZE_LARGE

        Style 參數可以與邏輯 (|) 操作符結合使用,如下所示:

12. Graphics 類使用錨點

    12.1 除了指定在什麼位置顯示一串字元的 x 和 y 座標外,錨點讓您可以指定在圍繞文字的邊界框中什麼地方放置 x 和 y 座標。

    12.2 有六個定義好的錨點,三個水平的和三個垂直的。在指定繪製文字的錨點時,錨點是成對使用的,所以必須選擇一個水平和一個垂直點。下面列出的可用的錨點:

        水平  LEFT HCENTER RIGHT
        垂直  TOP BASELINE BOTTOM

13. Graphics 類繪製文字

    void drawChar(char character, int x, int y, int anchor)
    void drawChars(char[] data, int offset, int length, int x, int y, int anchor)
    void drawString(String str, int x, int y, int anchor)
    void drawSubstring(String str, int offset, int len, int x, int y, int anchor)

14. Graphics 類繪製映像的方法

    drawImage(Image img, int x, int y, int anchor)

 
    我們用繪製文字的同樣步驟繪製映像。都是首先建立 x 和 y 座標以及錨點。
    不過,映像的一組錨點與文字的稍有不同。與文字不一樣,映像有一個中心點。
    因此在處理映像時,VCENTER 代替了 BASELINE。下面顯示了映像錨點:

 
    水平  LEFT HCENTER RIGHT

    垂直  TOP VCENTER BOTTOM

15. 其他 Graphics 方法
 
    15.1 clip() 剪下地區(clipping region) 定義了裝置顯示屏中在重新整理操作時將會更新的地區。下面是剪下方法:

 
        void setClip(int x, int y, int width, int height)

        void clipRect(int x, int y, int width, int height)

        int getClipX()

        int getClipY()

        int getClipWidth()

        int getClipHeight()

 
    15.2 translate() 是涉及座標系統的一個方法。到目前為止,我們假設座標 0,0 總是裝置顯示屏的左上方。事實上,可以轉換這個座標系統,使原點具有不同的 x,y 位置,如下所示:

 
        void translate(int x, int y)

        int getTranslateX()

        int getTranslateY()

 
16. Game API

    16.1 與我們熟悉的 Canvas 類一樣,GameCanvas 提供了建立使用者介面的基礎。GameCanvas 對每一個類執行個體包含一個單獨的 off-screen 緩衝,並提供了內建的查詢遊戲鍵的狀態的方法。

    16.2 Layer 是用於表示遊戲中一個可視對象的抽象類別。

    16.3 Sprite 是 Layer 的子類,它的作用是表示一個映像。Sprite 常常由幾個幀組成。要執行動畫,按順序顯示幀以產生移動映像的效果。還可以對 Sprite 進行像旋轉或者翻轉這樣的轉換。

    16.4 TiledLayer 是 Layer 的子類,它類比試算表,其中每一個儲存格表示一個映像。TiledLayer 通常用於表示大型可視元素,如遊戲背景。

    16.5 LayerManager 維護一個 Layer 的有序列表,並確定每一個 Layer 的哪一部分需要繪製,並以正確的順序進行繪製。

17. 手機記錄管理系統

    17.1 建立或開啟一個已有的記錄系統

        RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary)
       
        recordStoreName        記錄系統名稱
        createIfNecessary    如果指定名稱的記錄系統不存在,是否要建立一個新的系統。

    17.2 新增記錄

        addRecord(byte[] data, int offset, int numBytes)

        data        待插入資料的位元組數組
        offset        取值起點索引
        numBytes    取值數量

    17.3 遍曆記錄系統

        try {
            int nId = 0;
            RecordEnumeration re = rs.enumerateRecords(null, null, false);
            while (re.hasNextElement()) {
                String str = new String(re.nextRecord());
                System.out.println("Record #" + (++nId) + ": " + str);
                System.out.println("=============================");
            }
        } catch (Exception e) {
            db(e.toString());
        }

    17.4 排序

        //********************************************************
        //Create comparator class for sorting
        //********************************************************
        class comparator implements RecordComparator
        {
          public int compare(byte[] rec1, byte[] rec2)
          {
            String str1 = new String(rec1), str2 = new String(rec2);
            int result = str1.compareTo(str2);
            if (result == 0)
              return RecordComparator.EQUIVALENT;
            else if (result 《 0){
              return RecordComparator.PRECEDES;
            }
            else
              return RecordComparator.FOLLOWS;
          }
        }

        RecordEnumeration re = rs.enumerateRecords(null, new comparator(), false);

    17.5 過濾

        //********************************************************
        //Create filter class for searching
        //********************************************************
        class SearchFilter implements RecordFilter
        {
          private String searchText = null;
          public SearchFilter(String searchText)
          {
            // Text to find
            this.searchText = searchText.toLowerCase();
          }
          public boolean matches(byte[] candidate)
          {
            String str = new String(candidate).toLowerCase();
            // Does the text exist?
            if (searchText != null && str.indexOf(searchText) != -1)
              return true;
            else
              return false;
          }
        }       

        RecordEnumeration re = rs.enumerateRecords(new SearchFilter("xxx"), new comparator(), false);

    17.6 監聽

        // ********************************************************
        // Listener to process updates to the record store
        // ********************************************************
        class DemoRecordListener implements RecordListener {
            public void recordAdded(RecordStore recordStore, int recordId) {
                System.out.println("==Record added:" + recordId);
            }

            public void recordDeleted(RecordStore recordStore, int recordId) {
                System.out.println("==Record deleted:" + recordId);
            }

            public void recordChanged(RecordStore recordStore, int recordId) {
                System.out.println("==Record changed:" + recordId);
            }
        }

        RecordStore rs = RecordStore.openRecordStore(REC_STORE, true);
        rs.addRecordListener(new DemoRecordListener());

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.