BlackBerry應(yīng)用開(kāi)發(fā)指南 UI設(shè)計(jì)之圖片操作
本文為BlackBerry應(yīng)用開(kāi)發(fā)專題UI設(shè)計(jì)的文章,我們將介紹《BlackBerry應(yīng)用開(kāi)發(fā)指南》——UI設(shè)計(jì)篇:圖片操作,包括:使用未處理(raw)的圖像數(shù)據(jù)和使用編碼的圖像。
使用未處理(raw)的圖像數(shù)據(jù)
為了從圖像的特定區(qū)域獲取未處理的圖像數(shù)據(jù),并存儲(chǔ)在一個(gè)整數(shù)數(shù)組中,調(diào)用Bitmap.getARGB().應(yīng)用程序然后可以直接對(duì)未處理的圖像數(shù)據(jù)進(jìn)行操作。
(注:getARGB()方法只在彩屏的 BlackBerry 設(shè)備適用。)
設(shè)備模擬器顯示圖像數(shù)據(jù)時(shí)每一個(gè)象素作為一個(gè)整數(shù),每個(gè)象素中,每個(gè)字符(不透明)有8 個(gè)位,紅,綠以及藍(lán)的值。顏色由 8 個(gè)整數(shù)以 0xAARRGGBB 的形式組成。
獲取圖像數(shù)據(jù)
初始化一個(gè)整型數(shù)組,然后調(diào)用 Bitmap.getARGB()將新的或預(yù)定義的位圖的未處理的圖像數(shù)據(jù)存儲(chǔ)到整型數(shù)組中。
比較 2個(gè)圖像
調(diào)用 Bitmap.equals()決定 2 個(gè)位圖是否相同。
#p#
使用編碼的圖像
net.rim.device.api.system.EncodedImage 類封裝了各種格式的編碼圖像。BlackBerry 設(shè)備支持下面的圖像格式:.gif,.png,.wbmp,以及.jpeg.只有彩屏的 BlackBerry 設(shè)備才支持.jpeg 圖像。
(注:JPEGEncodedImage 類需要一個(gè)不可用的簽名。
使用 EncodedImage 的子類,PNGEncodedImage 和 WBMPEncodedImage,來(lái)分別訪問(wèn).png和.wbmp 圖像的特定屬性。例如,PNGEncodedImage 提供方法來(lái)獲得圖像的色彩深度(BitDepth), alpha 通道(alpha channel① ),以及顏色類型。
在 BlackBerry IDE 中,一個(gè)應(yīng)用程序能夠直接訪問(wèn)加到工程或者依賴的類庫(kù)工程中的圖像。
訪問(wèn)一個(gè)圖像
在 BlackBerry IDE 中,保存一個(gè)圖像到你的項(xiàng)目文件夾或者子文件夾,然后增加圖像到工程中。調(diào)用 Class.getResourceAsStream()獲取圖像作為一個(gè)字節(jié)的輸入流。
解碼一個(gè)圖像
為了編碼一個(gè)圖像,調(diào)用 EncodedImage.createEncodedImage()。這個(gè)方法使用字節(jié)數(shù)組里的未處理的圖像數(shù)據(jù)來(lái)創(chuàng)建了一個(gè) EncodedImage 的實(shí)例。如果作為參數(shù)的字節(jié)數(shù)組布包漢一個(gè)可以識(shí)別的圖像格式,它將拋出一個(gè) IllegalArgumentException 異常。
注:缺省地,BlackBerry 設(shè)備軟件監(jiān)測(cè)基于圖像格式的 MIME 類型的圖像。如果正確的 MIME 類型未能自動(dòng)的監(jiān)測(cè)到,使用下面EncodedImage.createEncodedImage()的形式指定一個(gè)特定的 MIME 類型:
- createEncodedImage(byte [] data, createEncodedImage(byte [] data, int offset, int
- length, String mimeType)
如果圖像格式預(yù)指定的 MIME 類型不匹配,這個(gè)方法拋出一個(gè) IllegalArgumentException異常。支持的 MIME 類型包括:image/gif, image/png, image/vnd.wap.wbmp, 以及 image/jpeg.
顯示一個(gè)編碼的圖像
調(diào)用 BitmapField.setImage()指定一個(gè)編碼的圖像到一個(gè) BitmapField,然后調(diào)用 add()將BitmaoField 加入到屏幕中。
設(shè)置解碼模式
調(diào)用 EncodedImage.setDecodeMode()來(lái)設(shè)置圖像的解碼模式。提供下面模式之一作為方法的一個(gè)參數(shù):
設(shè)置縮放因子(scaling factor )
當(dāng)解碼時(shí),為了設(shè)置用在縮減一個(gè)圖像的整數(shù)因子,調(diào)用 EncodedImage.setScale()。圖像通過(guò)作為 scale 參數(shù)的整型來(lái)縮放。例如,如果你設(shè)置縮放因子為 2,圖像將縮小到原大小的 50%。
代碼實(shí)例
ImageDemo.java 實(shí)例從一個(gè)包含在項(xiàng)目中的圖像獲得未處理的數(shù)據(jù),然后使用這個(gè)未處理的數(shù)據(jù)來(lái)重新創(chuàng)建一個(gè) EncodedImage。
【編輯推薦】