自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

BlackBerry應(yīng)用開發(fā)者指南 創(chuàng)建客戶定制的UI組件

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

本文為《BlackBerry應(yīng)用開發(fā)者指南 UI API篇之創(chuàng)建客戶定制的UI組件》,本文依舊是介紹BlackBerry UI API篇,如何創(chuàng)建創(chuàng)建客戶定制的UI組件。

創(chuàng)建客戶定制的UI組件

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

創(chuàng)建定制的 field

為覆寫 field 的缺省行為,創(chuàng)建一個定制的 field。

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

DrawStyle 接口的實現(xiàn)允許在定制的 field 上繪制樣式。

客戶定制的 field 應(yīng)該實現(xiàn)所有相關(guān)的系統(tǒng)樣式。例如,USE_ALL_WIDTH 和 USE_ALL_HEIGHT適用于許多 field。

擴(kuò)展 Field 類

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

代碼

定義按鈕的標(biāo)簽,圖形,以及樣式

你的構(gòu)造子的實現(xiàn)定義了按鈕的標(biāo)簽,圖形,以及樣式。

代碼

指定 field 中對象的安排

任何擴(kuò)展 Field 的類必須實現(xiàn) layout().Field 管理器調(diào)用了 layout()方法來決定 field應(yīng)該如何根據(jù)可用的控件安排它的內(nèi)容。

代碼

定義需要的寬度

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

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

代碼

代碼

定義需要的高度

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

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

代碼

定義定制 field 的外觀

paint()的實現(xiàn)定義了 BlackBerry 設(shè)備屏幕上的定制 Field 的外觀,不管什么時候 Field的域標(biāo)記為無效,F(xiàn)ield 管理器都調(diào)用 paint()來重繪 Field。

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

代碼

代碼

處理焦點事件

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

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

實現(xiàn) set和 get方法

Field 的 get 和 set 方法的實現(xiàn),增加了 Field 的能力。

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

代碼

代碼實例

CustomButtonField.java 創(chuàng)建了具有多個圖形的 button  field。

代碼 

代碼 

代碼 

代碼 

代碼 

代碼#p#

創(chuàng)建定制的上下文菜單項

在 Field 類里,創(chuàng)建定制的上下文菜單項。

代碼

提供一個上下文菜單

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

代碼

創(chuàng)建應(yīng)用程序菜單

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

代碼

代碼實例

實例:  ContextMenuSample.java

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

代碼

代碼

#p#

創(chuàng)建定制的布局管理器

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

創(chuàng)建一個定制的布局管理器

擴(kuò)展 Manager 類或其任一子類

代碼

返回一個優(yōu)先的 Field寬度

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

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

代碼

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

返回一個優(yōu)先 Field 高度

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

代碼

指定子 Field如何安排

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

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

代碼

代碼

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

處理焦點

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

代碼

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

當(dāng)可見區(qū)域改變時重繪 field

缺省的,定制的管理器在不考慮剪輯區(qū)域下調(diào)用 paint()重繪所有 field。如果這導(dǎo)致了不必要的重繪,當(dāng)可見區(qū)域改變時,僅 subpaint()的實現(xiàn)重繪所有 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#

創(chuàng)建列表

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

創(chuàng)建一個回調(diào)對象

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

ListFieldCallback 接口的實現(xiàn)創(chuàng)建了一個回調(diào)對象。系統(tǒng)調(diào)用這個接口的方法繪制列表的行,獲得一個指定的列表元素,或決定列表的寬度。

允許 Field重繪一行

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

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

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

為列表返回一個優(yōu)先的寬度

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

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

指派回調(diào)以及加入條目到列表中

創(chuàng)建列表對象,并且將回調(diào)指派這個對象。

創(chuàng)建列表對象

為了列表創(chuàng)建 ListField 對象以及 ListCallback 對象。

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

設(shè)置回調(diào)

調(diào)用 setCallback()將 ListFieldCallback 與 ListField 關(guān)聯(lián)。這個關(guān)聯(lián)允許回調(diào)增加列表項到列表中。

增加列表條目

為了將條目增加到列表中,創(chuàng)建條目,并指定一個索引,并在這個索引上插入每個條目到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應(yīng)用開發(fā)者指南 創(chuàng)建客戶定制的UI組件
  2. BlackBerry應(yīng)用開發(fā)者指南 UI API篇之管理UI組件
  3. BlackBerry應(yīng)用開發(fā)者指南 UI API篇之顯示UI組件
  4. BlackBerry應(yīng)用開發(fā)者指南基礎(chǔ)附錄 .alx文件
  5. BlackBerry應(yīng)用開發(fā)者指南 選項API

 

責(zé)任編輯:佚名 來源: 網(wǎng)絡(luò)整理
相關(guān)推薦

2011-04-14 10:05:16

BlackBerry

2011-04-14 10:03:32

UI組件BlackBerry

2011-04-13 13:38:57

選項APIBlackBerry

2011-04-13 09:55:16

Mail 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

監(jiān)聽UI對象的改變BlackBerry

2011-04-15 14:22:20

圖片操作UIBlackBerry

2011-07-19 09:51:32

性能優(yōu)化Designing FAndroid

2011-04-18 11:00:34

使用音頻BlackBerry

2009-03-24 08:51:30

YUIJavaJavascript

2020-07-15 07:00:00

移動應(yīng)用開發(fā)者指南

2022-01-02 06:59:43

SentrySDK 開發(fā)客戶端報告

2011-02-16 16:45:23

MWCRIMBlackBerry

2024-05-07 08:45:16

OpenAILlamaIndex大語言模型

2024-02-01 09:37:42

Kubernetes服務(wù)網(wǎng)格? 命令

2023-11-26 00:17:21

2018-03-27 23:25:40

Paddle

2011-04-26 10:19:46

BlackBerry
點贊
收藏

51CTO技術(shù)棧公眾號