這篇文章我醞釀很久了,現在9800出來,黑莓的觸屏開發應該會有一個比較熱的趨勢,就發佈出來吧。
觸摸屏設備編程1
一 觸摸屏幕設計需要注意的地方
開發用於帶觸摸屏的 BlackBerry® 設備的應用程序時,您應考慮這些設備的以下 UI 功能:
• 觸摸屏
• 屏幕方位的重要性
• 觸摸屏鍵盤
• 加速度計(一些帶觸摸屏的 BlackBerry 設備上)
關於這些項目的具體內容和細節,可以參考blackberry的編程白皮書:BlackBerry Java Application
Transitioning to Touch Screen Development.
二 觸摸屏幕的具體編程和設計的要求
隨着觸摸屏幕手機的引入,BlackBerry也加入了相應API的支持:
net.rim.device.api.ui.Touchscreen
這個類的作用就是系統用來判別當前手機是否是觸屏的utility類別,所以一個比較通用的java程序的做法就是在程序入口中加入這樣的邏輯判斷:
if(Touchscreen.isSupported())
{
/* Touch screen logic */
}
else
{
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
Dialog.alert("This application requires a touch screen device.");
System.exit(0);
}
});
}
在JDE5.0的示例程序中,有一個例子touchdemo,有關於這個工具類的具體使用方法,可以參考相應的代理例子在做一個通用的blackberry客戶端程序。
觸屏手機的引入,可以加入對屏幕的方向的變化,這個在原有的全鍵盤手機中是沒有的,所以在觸摸屏幕手機開發應用過程中,需要加入相應的響應的邏輯.
有兩種方式可以用來對屏幕的方位進行控制和調整,第一種方式是在screen的sublayout方法中。
public void sublayout(int width, int height)
{
//update scrren layout based on orientation
if(Display.getOrientation()== Display.ORIENTATION_LANDSCAPE)
{
invalidate();
}
else if(Display.getOrientation()== Display.ORIENTATION_PORTRAIT)
{
invalidate();
}
super.sublayout(width, height);
}
還有一種方式是在應用中顯式調用屏幕的方位信息,然後做出調整:
switch(Display.getOrientation())
{
case Display.ORIENTATION_LANDSCAPE:
Dialog.alert("Screen orientation is landscape"); break;
case Display.ORIENTATION_PORTRAIT:
Dialog.alert("Screen orientation is portrait"); break;
case Display.ORIENTATION_SQUARE:
Dialog.alert("Screen orientation is square"); break;
default:
Dialog.alert("Screen orientation is not known"); break;
}
除了對屏幕方位也就是重力切換的處理,在觸摸屏幕編程中,需要考慮UI事件的處理和全鍵盤手機的不同,關於這部分的具體處理,可以參考下面部分的示例以及後續的內容介紹。