首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

MIDP 2.0 Alert 新功能:進度條、命令與自訂樣式

     編輯:J2ME

前言

Alert 繼承自 Screen,用於通知使用者錯誤或資訊。MIDP 1.0 中 Alert 較死板,MIDP 2.0 新增關鍵特性:支援指示器 (Indicator),可結合 Gauge 顯示進度;並允許加入自訂 Command,大幅提升彈性。

Gauge 與 Alert 結合規範

作為 Alert 指示器的 Gauge 必須符合:

  1. 非互動模式(interactive=false)。
  2. 不在其他容器中。
  3. 標籤為 null。
  4. 無關聯 Command 或 CommandListener。
Gauge gauge = new Gauge(null, false, max, initial);
Alert alert = new Alert("Title");
alert.setIndicator(gauge);

因 UI 類別執行緒安全,可在背景執行緒更新 gauge.setValue(),Alert 會自動重繪。

Command 整合

  • 可顯式對 Alert 加入 Command,並實作 CommandListener 處理。
  • 若加入自訂 Command,預設 Command 被取代;移除所有自訂 Command 後預設 Command 會自動恢復。
  • 若加入兩個以上 Command,Timeout 自動設為 Alert.FOREVER(需使用者手動關閉)。

完整範例:四種 Alert 型態展示

public class AlertTest extends MIDlet implements CommandListener {
    // 內部類別:TimedAlert, ModalAlert, ProgressAlert, BusyAlert
    // 共用 AlertRunner 抽象基類,定義 doAlert() 方法。

    // ProgressAlert:含 Gauge 進度條,背景執行緒每秒遞增,達上限後加入 Done Command。
    // BusyAlert:使用 Gauge.INDEFINITE 持續動畫,5 秒後自動關閉。

    private Display display;
    private List alertList;
    private AlertRunner[] alertRunners;

    protected void startApp() {
        if (display == null) {
            display = Display.getDisplay(this);
            initMIDlet();
        }
    }

    private void initMIDlet() {
        alertRunners = new AlertRunner[] {
            new TimedAlert("Timed alert"),
            new ModalAlert("Modal alert"),
            new ProgressAlert("Progress alert"),
            new BusyAlert("Busy alert")
        };
        alertList = new List("Alert Testing", List.IMPLICIT);
        alertList.setCommandListener(this);
        for (AlertRunner r : alertRunners)
            alertList.append(r.toString(), null);
        display.setCurrent(alertList);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == exitCommand) exitMIDlet();
        else if (c == List.SELECT_COMMAND)
            alertRunners[alertList.getSelectedIndex()].doAlert();
    }
    // 其他生命週期方法略...
}

關鍵差異總結

型態Timeout指示器Command
Timed Alert固定時間 (如 5 秒)無預設 Dismiss
Modal AlertFOREVER無預設 Dismiss
Progress Alert極長 (1 小時)Gauge 進度條進度完成後動態加入 Done
Busy Alert固定時間Gauge.INDEFINITE 動畫無

結語

MIDP 2.0 讓 Alert 從單純通知升級為可互動的進度回饋元件,善用 setIndicator 與 Command 可建立更友善的使用者體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved