偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

你僅能將定制的上下文菜單項(xiàng)和布局增加到一個(gè)定制的 field 中。

創(chuàng)建定制的 field

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

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

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

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

擴(kuò)展 Field 類

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

代碼

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

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

代碼

指定 field 中對(duì)象的安排

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

代碼

定義需要的寬度

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

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

代碼

代碼

定義需要的高度

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

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

代碼

定義定制 field 的外觀

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

技巧:驗(yàn)證 paint()是否是有效率的,因?yàn)椴还苁裁磿r(shí)候 field 發(fā)生變化,UI 框架調(diào)用 paint()方法。對(duì)于大數(shù)量的 field,使用 Graphics.getClippingRect()并在可見的區(qū)域里繪圖來保存繪制時(shí)間。

代碼

代碼

處理焦點(diǎn)事件

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

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

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

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

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

代碼

代碼實(shí)例

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

代碼 

代碼 

代碼 

代碼 

代碼 

代碼#p#

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

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

代碼

提供一個(gè)上下文菜單

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

代碼

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

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

代碼

代碼實(shí)例

實(shí)例:  ContextMenuSample.java

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

代碼

代碼

#p#

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

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

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

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

代碼

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

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

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

代碼

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

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

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

代碼

指定子 Field如何安排

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

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

代碼

代碼

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

處理焦點(diǎn)

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

代碼

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

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

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

代碼實(shí)例

例:  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)建列表

一個(gè) ListField 包含了多列可選項(xiàng)。為了使用戶可以選擇列表中多項(xiàng),聲明列表為MULTI_SELECT.

創(chuàng)建一個(gè)回調(diào)對(duì)象

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

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

允許 Field重繪一行

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

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

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

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

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

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

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

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

創(chuàng)建列表對(duì)象

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

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

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

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

增加列表?xiàng)l目

為了將條目增加到列表中,創(chuàng)建條目,并指定一個(gè)索引,并在這個(gè)索引上插入每個(gè)條目到ListField 對(duì)象中。然后每個(gè) ListField 對(duì)象到 ListFieldCallback 中。

代碼實(shí)例

例: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ā)者指南 選項(xiàng)API

 

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

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

選項(xiàng)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對(duì)象的改變BlackBerry

2011-04-15 14:22:20

圖片操作UIBlackBerry

2011-04-18 11:00:34

使用音頻BlackBerry

2011-07-19 09:51:32

性能優(yōu)化Designing FAndroid

2009-03-24 08:51:30

YUIJavaJavascript

2020-07-15 07:00:00

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

2011-02-16 16:45:23

MWCRIMBlackBerry

2022-01-02 06:59:43

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

2024-05-07 08:45:16

OpenAILlamaIndex大語言模型

2023-11-26 00:17:21

2024-02-01 09:37:42

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

2011-04-26 10:19:46

BlackBerry

2018-03-27 23:25:40

Paddle
點(diǎn)贊
收藏

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