Display 類:J2ME UI 系統的中樞
javax.microedition.lcdui.Display 是 MIDP 中管理螢幕顯示的核心類,單例模式(Display.getDisplay(midlet)),功能集中於兩大領域:螢幕屬性查詢與顯示控制。
一、螢幕屬性查詢:適配多樣化硬體
| 方法 | 回傳值 | 用途 |
isColor() | boolean | 判斷是否彩色螢幕 |
numColors() | int | 彩色:色數;單色:灰階等級數 |
numAlphaLevels() | int | 透明度支援等級(MIDP 2.0+) |
getBestImageWidth() | int | 裝置最佳圖片寬度(避免縮放失真) |
getBestImageHeight() | int | 裝置最佳圖片高度 |
getBorderStyle() | int | 高階 UI 控件邊框樣式 |
getColor(int type) | int | 高階 UI 預設色彩(背景/前景/高亮等) |
實戰場景:啟動時檢測 isColor() 載入對應資源包;依 getBestImageWidth/Height() 生成適配圖片;依 numAlphaLevels() 決定是否啟用半透明效果。
二、顯示控制:管理可見 UI 元件
| 方法 | 功能 |
setCurrent(Displayable d) | 設定當前顯示元件(Form/Canvas/Alert/List 等) |
setCurrent(Alert a, Displayable next) | 先顯示 Alert,自動轉至 next |
getCurrent() | 取得當前顯示元件 |
callSerially(Runnable r) | 請求在事件執行緒中序列化執行 r(繪製完成後) |
三、MIDP 2.0 新增:硬體互動能力
| 方法 | 功能 | 典型應用 |
flashBacklight(int duration) | 控制背光閃爍 | 多媒體播放防螢幕保護、來電/訊息提醒 |
vibrate(int duration) | 控制震動馬達 | 遊戲撞擊回饋、靜音模式提醒 |
實戰技巧:部分手機進入螢幕保護會暫停多媒體播放,週期性呼叫 flashBacklight(1) 可保持背光喚醒,繞過系統休眠。
完整使用範例
public class GameCanvas extends Canvas {
private Display display;
public void start() {
display = Display.getDisplay(MidletInstance.getInstance());
// 適配螢幕特性
boolean color = display.isColor();
int bestW = display.getBestImageWidth();
int bestH = display.getBestImageHeight();
// 載入適配資源...
display.setCurrent(this);
}
// 繪製迴圈中安全更新 UI
public void updateScore(final int score) {
display.callSerially(new Runnable() {
public void run() { scoreLabel.setText("Score: " + score); }
});
}
}
結語
Display 類雖 API 精簡,却是 J2ME 應用與裝置硬體介面的關鍵橋樑。掌握「屬性查詢驅動資源適配、顯示控制管理 UI 流程、硬體互動增強體驗」三大用法,能讓應用在千差萬別的功能機螢幕上呈現一致、最佳的視覺與交互品質。
- 上一篇文章: J2ME 遊戲移植 Android 實戰:平台差異對照與遷移關鍵技術點
- 下一篇文章: J2ME Item 狀態監聽機制實戰:以 ChoiceGroup 為例的完整開發流程
Copyright ©
程式碼之家 All Rights Reserved