《Java 手機/PDA 程序設計入門》讀書筆記7--LCDAUI低級API之Canvas

Canvas幫助我們處理低級系統事件。

重繪事件
一個是用低級API的系統至少要具有描繪畫面的能力。

startApp(){
MyCanvas mc=new MyCanvas();
display.setCurrent(mc);
}

public class MyCanvas extends Canvas
{
  public void paint(Graphics g){
  { //code of paint.
 
  }
}
serviceRepaints()用來強制隊列中的重繪事件快點做完。

座標系
迪卡爾座標系的Y軸方向向下就是我們屏幕上的座標系。

座標
是指像素(Pixel)和像素之間的空格所構成的座標。

Graphics--畫布
setColor(R,G,B) --value0~255
getRedComponent()
getGreenComponent()
getBuleComponent()

setColor(0x00RRGGBB) / getDisplayColor();

線 drawLine(start X,start Y,end X,end Y)

筆觸(stroke style)--Graphics.SOLID 、Graphics.DOTTED
setStrokeStyle(Graphics.SOLID )

矩形 drawRect(start X,start Y,width,height)

圓角矩形 drawRoundRect(start X,start Y,width,height,arcWidth,arcHeight)
後兩個參數:圓角所在矩形的寬和高。

填充矩形 fillRect(start X,start Y,width,height)

填充圓角矩形 fillRoundRect(start X,start Y,width,height,arcWidth,arcHeight)

弧形 drawArc(start X,start Y,width,height,arc,over)
前四個參數決定弧形所在的矩形範圍,第五個決定起始角度,第六個決定弧形本身所涵蓋的角度。

填充三角形 fillTriangle(x1,y1,x2,y2,x3,y3)

Canvas與屏幕事件處理
Canvas本身有兩種狀態:
普通狀態-Normal 全屏狀態-Full Screen
setFullScreenMode()來設定其狀態。

當屏幕被系統畫面覆蓋時,自動調用hideNotify()
當系統畫面消失時,恢復了原本的畫面,系統會調用showNotify()

鍵盤事件處理
按下按鈕引發keyPressed() 函數,傳入一個代表該鍵的整數值
放開按鈕引發keyReleased()函數,傳入一個代表該鍵的整數值
連按按鈕引發KeyRepeated()函數,傳入一個代表該鍵的整數值;
不是所有機器都支持,hasRepeatEvents()來詢問系統是否支持連發事件。

鍵盤響應
Canvas類裏定義的常數:KEY_NUM0~KEY_NUM9、KEY_STAR,KEY_POUND分別代表0~9數字鍵和星井鍵。另外定義了幾個與Game鍵盤代碼相關的常數:UP,DOWN,LEFT,RIGHT,FIRE,GAME_A,GAME_B,GAME_C,GAME_D

getGameAction()
該函數傳入keyCode,函數會回傳所代表的Game鍵盤代碼
switch(getGameAction(keyCode))
{
     case Canvas.LEFT:
           moveLeft();
           break;

getKeyCode()
該函數傳入Game鍵盤代碼,函數會回傳所代表的keyCode。 和上個函數互爲反函數。
if (keyCode==getKeyCode(Canvas.LEFT))
moveLeft();

觸摸屏事件
用hasPointerEvents()判斷是否支持觸摸屏事件。
觸控筆點擊 引發pointerPressed(),傳入xy座標
放開引發pointerReleased(),傳入xy座標。
拖拽 pointerDragged() (某些機器可以,用hasPointerMotionEvents()判斷)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章