成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

BlackBerry應用開發者指南 創建客戶定制的UI組件

移動開發
本文依舊是介紹BlackBerry UI API篇,如何創建創建客戶定制的UI組件。你僅能將定制的上下文菜單項和布局增加到一個定制的 field 中。

本文為《BlackBerry應用開發者指南 UI API篇之創建客戶定制的UI組件》,本文依舊是介紹BlackBerry UI API篇,如何創建創建客戶定制的UI組件。

創建客戶定制的UI組件

你僅能將定制的上下文菜單項和布局增加到一個定制的 field 中。

創建定制的 field

為覆寫 field 的缺省行為,創建一個定制的 field。

(注:不要使用 Screen 對象來輸入文本。Screen 對象沒有明確的實現此功能,它需要復雜的輸入方法,例如國際化的鍵盤和 7100 系列的設備。為了實現不同輸入方法的無縫集成,擴展 Field 或者其任一子類。)

DrawStyle 接口的實現允許在定制的 field 上繪制樣式。

客戶定制的 field 應該實現所有相關的系統樣式。例如,USE_ALL_WIDTH 和 USE_ALL_HEIGHT適用于許多 field。

擴展 Field 類

擴展 Field 類和任一其子類,指定定制 Field 的特征。

代碼

定義按鈕的標簽,圖形,以及樣式

你的構造子的實現定義了按鈕的標簽,圖形,以及樣式。

代碼

指定 field 中對象的安排

任何擴展 Field 的類必須實現 layout().Field 管理器調用了 layout()方法來決定 field應該如何根據可用的控件安排它的內容。

代碼

定義需要的寬度

(注:在大多數情況下,通過覆寫 getPreferredWidth(),確保合適的布局出現在定制的布局管理器里。)

getPreferredWidth()的實現計算出定制 Field 的寬度,這個定制 Field 是基于標簽 Field的相對尺寸的。使用相對尺寸來確保標簽不會超出標簽的尺寸。

代碼

代碼

定義需要的高度

(注:在大多數情況下,通過覆寫 getPreferredHeight(),確保合適的布局出現在定制的布局管理器里。)

getPreferredHeight()的實現計算出定制 Field 的高度,這個定制 Field 是基于標簽 Field的相對尺寸的。它確保了標簽不會超出 field 的尺寸。

代碼

定義定制 field 的外觀

paint()的實現定義了 BlackBerry 設備屏幕上的定制 Field 的外觀,不管什么時候 Field的域標記為無效,Field 管理器都調用 paint()來重繪 Field。

技巧:驗證 paint()是否是有效率的,因為不管什么時候 field 發生變化,UI 框架調用 paint()方法。對于大數量的 field,使用 Graphics.getClippingRect()并在可見的區域里繪圖來保存繪制時間。

代碼

代碼

處理焦點事件

為了支持焦點事件,使用 Field.FOCUSABLE 樣式以及實現 Field.moveFocus().如果你想你的 Field 接收焦點,覆寫 Field.isFocusable()返回 true。

當 Field 獲得焦點時,UI 框架調用 onFocus(),當 Field 失去焦點時,調用 unFocus().如果你的 field 對于這些事件需要特定的行為,覆寫這些方法。框架調用 moveFocus()來處理 field 的焦點移動事件。它對應 trackwheelRoll 事件,覆寫 drawFocus( )。

實現 set和 get方法

Field 的 get 和 set 方法的實現,增加了 Field 的能力。

(注:所有 get 和 set 方法應該在 field 加入到一個 Screen 的前后工作。例如,如果現在屏幕上的 field 合適的調用了 invalidate()或 updateLayout()setLabel(),應該使用一個新值來修改其顯示。)

代碼

代碼實例

CustomButtonField.java 創建了具有多個圖形的 button  field。

代碼 

代碼 

代碼 

代碼 

代碼 

代碼#p#

創建定制的上下文菜單項

在 Field 類里,創建定制的上下文菜單項。

代碼

提供一個上下文菜單

在主應用程序類里,覆寫 makeContextMenu()方法提供一個上下文菜單。

代碼

創建應用程序菜單

在主應用程序類里,覆寫 makeMenu()方法創建應用程序菜單,并且無論合十,當特定的 field獲取焦點時,更新上下文菜單。

代碼

代碼實例

實例:  ContextMenuSample.java

  1. /**  
  2. *  ContextMenuSample.java  
  3. *  Copyright  (C)  2001-2005  Research  In  Motion  Limited.  All  rights  
  4. reserved.  
  5. */ 

代碼

代碼

#p#

創建定制的布局管理器

Manager 對象管理 UI 組件的位置以及決定屏幕上的 field 如何安排。

創建一個定制的布局管理器

擴展 Manager 類或其任一子類

代碼

返回一個優先的 Field寬度

覆寫 getPreferredWidth(),以致它能為管理器返回一個優先的 Field 寬度。

getPreferredWidth()的實現可以返回不同的值,取決于布局管理器的目的。例如,如果管理器擴展了 HorizontalFieldManager,getPreferredWidth()返回所有 field 寬度的總和。如果擴展了 VerticalFieldManager,getPreferredWidth()返回最寬 field 的寬度。

代碼

(注:TextField 和 Manger 使用了指派給他們的整個寬度。為組織 2 個或更多的水平上的對象,分別覆寫它們各自的 getPreferredWidth()方法。為了組織多個水平上的TextField,覆寫 layout().)

返回一個優先 Field 高度

覆寫 getPreferredHeight(),以致它能為管理器返回一個優先的 Field 高度。

代碼

指定子 Field如何安排

subLayout()方法指定了管理器如何在屏幕上組織 field。它得到管理器中 field 的個數,然后為子 field 設置合適的位置以及布局。

layout() 調用了 subLayout() 方法,subLayout() 方法通過調用每個管理器包含的 field 的setPositionChild ()以及 LayoutChild(),控制每個子 field 如何加到屏幕上。

代碼

代碼

(注:為設置 field 需要的大小,在 subLayout()方法里調用 setExtend()。如果你不調用 setExtend(),則不會繪制每個 field,并且也不拋出一個異常。)

處理焦點

當用戶滾動滑輪時,為了指定 field 該如何得到焦點,覆寫 nextFocus()方法。direction 參數描述了焦點移動的方向(一般來說,當滑輪向下滾動,焦點向下并且向右方向。當滑輪向上滾動,焦點向上并且向左)。

代碼

為了將焦點轉移到下一個 field,而以管理器的順序,這個 field 不是下一個 field,那么覆寫nextFocus().例如,如果你想為你的管理器實現 Page-up 和 Page-down 的功能,那么 nextFocus()就有用了。

當可見區域改變時重繪 field

缺省的,定制的管理器在不考慮剪輯區域下調用 paint()重繪所有 field。如果這導致了不必要的重繪,當可見區域改變時,僅 subpaint()的實現重繪所有 field。

代碼實例

例:  DiagonalManager.java

  1. /**  
  2. *  DiagonalManager.java  
  3. *  Copyright  (C)  2001-2005  Research  In  Motion  Limited.  All  rights  
  4. reserved.  
  5. */ 
  6. package   
  7. com.rim.samples.docs.custommenu;  
  8. import   
  9. net.rim.device.api.system.*; 

代碼

代碼#p#

創建列表

一個 ListField 包含了多列可選項。為了使用戶可以選擇列表中多項,聲明列表為MULTI_SELECT.

創建一個回調對象

ListFieldCallback 對象為列表控制所有重繪任務。每次要求 Field 顯示列表中的一個條目。必要的方法也會在回調對象中調用。

ListFieldCallback 接口的實現創建了一個回調對象。系統調用這個接口的方法繪制列表的行,獲得一個指定的列表元素,或決定列表的寬度。

允許 Field重繪一行

drawListRow()的實現允許 Field 重繪一行。傳遞到 drawListRow()的圖形上下文代表整個列表。相應地,drawText()必須指明繪制哪一行。

允許 Field從列表中得到一個條目(Entry )

get()的實現允許 field 從列表中得到一個條目。本方法返回一個包含在有明確索引行中的對象。

為列表返回一個優先的寬度

getPreferredWidth()的實現為列表返回一個優先的寬度。在下面的實現中,getPreferredWidth()返回整個屏幕的繪制寬度。

getPreferredWidth()的實現返回一個不同的值,這依賴 field 管理器的類型。例如,如果管理器擴展了 HorizontalFieldManager,getPreferredWidth()返回所有 field 寬度的總和。如果擴展了 VerticalFieldManager,getPreferredWidth()返回最寬 field 的寬度。

指派回調以及加入條目到列表中

創建列表對象,并且將回調指派這個對象。

創建列表對象

為了列表創建 ListField 對象以及 ListCallback 對象。

(注:ListCallback 是一個定制的 ListFieldCallback 類,這個類在 66 頁的“創建一個回調對象”中創建。)

設置回調

調用 setCallback()將 ListFieldCallback 與 ListField 關聯。這個關聯允許回調增加列表項到列表中。

增加列表條目

為了將條目增加到列表中,創建條目,并指定一個索引,并在這個索引上插入每個條目到ListField 對象中。然后每個 ListField 對象到 ListFieldCallback 中。

代碼實例

例:SampleListFieldCallback.java

  1. /**  
  2. *  SampleListFieldCallback.java  
  3. *  Copyright  (C)  2001-2005  Research  In  Motion  Limited.  All  rights  
  4. reserved.  
  5. */ 

【編輯推薦】

  1. BlackBerry應用開發者指南 創建客戶定制的UI組件
  2. BlackBerry應用開發者指南 UI API篇之管理UI組件
  3. BlackBerry應用開發者指南 UI API篇之顯示UI組件
  4. BlackBerry應用開發者指南基礎附錄 .alx文件
  5. BlackBerry應用開發者指南 選項API

 

責任編輯:佚名 來源: 網絡整理
相關推薦

2011-04-14 10:03:32

UI組件BlackBerry

2011-04-14 10:05:16

BlackBerry

2011-04-13 09:55:16

Mail APIBlackBerry

2011-04-13 13:38:57

選項APIBlackBerry

2011-04-13 11:31:06

PIM APIBlackBerry

2011-04-02 13:44:08

2011-04-13 14:10:27

.alx文件BlackBerry

2011-04-15 16:05:00

監聽UI對象的改變BlackBerry

2011-04-15 14:22:20

圖片操作UIBlackBerry

2011-04-18 11:00:34

使用音頻BlackBerry

2011-07-19 09:51:32

性能優化Designing FAndroid

2009-03-24 08:51:30

YUIJavaJavascript

2020-07-15 07:00:00

移動應用開發者指南

2011-02-16 16:45:23

MWCRIMBlackBerry

2022-01-02 06:59:43

SentrySDK 開發客戶端報告

2011-04-26 10:19:46

BlackBerry

2024-05-07 08:45:16

OpenAILlamaIndex大語言模型

2024-02-01 09:37:42

Kubernetes服務網格? 命令

2023-11-26 00:17:21

2018-03-27 23:25:40

Paddle
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜免费视频 | 日韩欧美在线精品 | 精品国产精品三级精品av网址 | 欧美精品一区二区三区四区 | 一区二区三区在线观看免费视频 | 久久亚洲国产精品日日av夜夜 | 亚洲综合色网站 | 国产高清一二三区 | 国产一区欧美一区 | 另类视频区 | 欧美日韩精品一区 | 国产日韩欧美激情 | 狠狠爱综合 | 成人午夜免费福利视频 | 午夜精品久久久久久久久久久久久 | 美美女高清毛片视频免费观看 | 欧美 日韩 中文 | 少妇性l交大片免费一 | 午夜欧美一区二区三区在线播放 | 欧美日韩在线高清 | 三级黄色片在线观看 | 国产精品一区二区在线免费观看 | 宅女噜噜66国产精品观看免费 | 久久国产高清 | 精品色| 国产精品免费一区二区 | 国产麻豆乱码精品一区二区三区 | 亚洲一区二区电影在线观看 | 91久久久久久久久 | 一级二级三级在线观看 | 欧美日韩精品一区 | 欧美激情欧美激情在线五月 | 人人擦人人干 | 91免费在线看 | 日日夜夜精品 | 美女视频一区二区三区 | 亚洲精品综合 | 在线2区| 国产日韩精品一区 | 国产永久免费 | 曰韩一二三区 |