專利名稱:一種界面發(fā)布方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種界面發(fā)布方法和裝置。
背景技術(shù):
隨著計算機和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,各種計算機應(yīng)用工具已經(jīng)成為人們 日常生活和工作中不可或缺的幫手。人們對各種應(yīng)用工具的性能和界面的美 觀也提出了越來越高的要求。
人們在安裝和使用計算機應(yīng)用工具時,例如即時通信工具(Instant Messenger, IM)等,賞心悅目的客戶端界面能夠給客戶端良好的使用體驗, 同時,界面的創(chuàng)建速度也直接影響著人們的使用感受。
目前,計算機應(yīng)用工具在發(fā)布時,主要將描述其客戶端界面的界面描述 文件提供給客戶端。為了靈活地描述界面,通常采用一些腳本語言來描述界 面,例如可擴展標(biāo)記語言(Extensible Markup Language, XML)腳本等,界 面的各種屬性信息都編寫在腳本文件中,腳本文件中通常采用統(tǒng)一的形式描 述各種類型的數(shù)據(jù),如采用字符串的形式來描述整型、浮點型的數(shù)據(jù),界面 的各種屬性,包括各種界面組件、以及各界面組件的屬性(名稱、長、寬、 位置、顏色等)也均用字符串來描述??蛻舳嗽趧?chuàng)建界面時需要從腳本語言 描述的界面描述文件中解析出各個界面組件的數(shù)據(jù),由于界面數(shù)據(jù)的類型 多、數(shù)量大,界面創(chuàng)建過程比較復(fù)雜,使得界面的整體創(chuàng)建速度較慢,并且 對客戶端的設(shè)備性能要求較高。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例提供了一種界面發(fā)布方法,包括
獲取至少 一個界面組件的屬性信息,將所述屬性信息轉(zhuǎn)化為所述屬性對應(yīng)類型的數(shù)據(jù)提供給至少 一個客戶端以供客戶端生成所述界面。
本發(fā)明實施例還提供了一種界面發(fā)布裝置,包括 屬性獲取模塊,用于獲取一個界面的至少一個屬性信息; 數(shù)據(jù)轉(zhuǎn)化模塊,用于將所述屬性獲取模塊獲取的所述屬性信息轉(zhuǎn)化為所
述屬性對應(yīng)類型的數(shù)據(jù);和
客戶端接口模塊,用于將所述數(shù)據(jù)轉(zhuǎn)化模塊轉(zhuǎn)化得到的數(shù)據(jù)提供給至少
一個客戶端。
由上述的技術(shù)方案可見,本發(fā)明實施例提供的一種界面發(fā)布方法通過將 界面數(shù)據(jù)以相應(yīng)的數(shù)據(jù)類型進行保存,客戶端無需再對界面描述文件中的信 息進行數(shù)據(jù)類型的轉(zhuǎn)化,加快了界面的創(chuàng)建速度。本發(fā)明實施例提供的一種界面發(fā)布裝置通過將界面數(shù)據(jù)以相應(yīng)的數(shù)據(jù) 類型進行保存,客戶端無需再對界面描述文件中的信息進行數(shù)據(jù)類型的轉(zhuǎn) 化,加快了界面的創(chuàng)建速度。
圖1示出本發(fā)明實施例的界面發(fā)布裝置結(jié)構(gòu)示意圖。 圖2為本發(fā)明實施例中界面發(fā)布方法的流程圖。
具體實施例方式
為l吏本發(fā)明的實施例的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照 附圖并舉實施例,對本發(fā)明實施例進一步詳細說明。
各種計算機應(yīng)用工具,尤其是發(fā)展迅速的即時通信工具(IM)已經(jīng)成 為網(wǎng)民客戶端中日常生活中不可缺少的工具之一,由于客戶端越來越注重個 性的表達,對于界面的要求也越來越高,希望能夠獲得各種類型豐富的界面 資源,界面的設(shè)計和發(fā)布工作以及界面的性能越來越得到重視。
因此,本發(fā)明實施例提供了一種界面發(fā)布方法,將界面描述文件中的各 屬性信息轉(zhuǎn)化為該屬性對應(yīng)類型的數(shù)據(jù)后再提供給客戶端,客戶端的客戶端裝置可以直接讀取這些數(shù)據(jù)來創(chuàng)建界面,使得界面的創(chuàng)建速度大大提高。
將界面描述文件轉(zhuǎn)化為界面數(shù)據(jù)時,需要獲取界面描述文件中包含的各 屬性信息,將這些屬性信息轉(zhuǎn)化為其這些屬性對應(yīng)類型的數(shù)據(jù)。
這里的界面屬性信息包括各種界面組件信息及組件的屬性信息,界面組 件信息為組件的類型或名稱,例如窗體、文本、按鈕、圖片等,組件的屬性 包括組件的大小、形狀、位置、顏色等。在轉(zhuǎn)化和保存界面組件的數(shù)據(jù)時, 可以將各界面組件按樹形結(jié)構(gòu)組織成樹的結(jié)構(gòu),例如將窗體作為樹根節(jié)點, 其它界面組件作為根節(jié)點的子節(jié)點,如果界面組件中還包含其他組件,則以 這些組件作為該界面組件的子節(jié)點,各組件的屬性數(shù)據(jù)保存在相應(yīng)的節(jié)點數(shù) 據(jù)中。這樣可以使得整個界面的結(jié)構(gòu)更加清晰、有組織。客戶端獲取界面的 屬性信息時,則可以根據(jù)各種現(xiàn)有的樹遍歷算法依次獲取所述界面樹各個節(jié) 點以獲取節(jié)點數(shù)據(jù),例如深度優(yōu)先遍歷算法、廣度優(yōu)先遍歷算法等,這里不 再贅述。如果界面描述文件中已經(jīng)按照樹形結(jié)構(gòu)對各界面組件進行描述,在 數(shù)據(jù)轉(zhuǎn)化和保存時,就可以直接根據(jù)界面描述文件中各界面組件的關(guān)系將其 數(shù)據(jù)組織成樹形結(jié)構(gòu)。
將各屬性信息轉(zhuǎn)化為相應(yīng)類型的數(shù)據(jù)后,可以通過一個事先定義的數(shù)據(jù)
接口將數(shù)據(jù)提供給客戶端。只要客戶端也支持相同的數(shù)據(jù)接口,就可以通過 這個數(shù)據(jù)接口讀取各種組件的屬性數(shù)據(jù)用于創(chuàng)建界面了 。使用這種數(shù)據(jù)接口 可以將界面數(shù)據(jù)有序地組織起來,便于讀取。
這里需要說明的是,由于界面描述文件中,對界面各屬性信息的描述通 常都采用一種統(tǒng)一的形式來描述,例如都采用字符串型的數(shù)據(jù)來描述,但是 各界面組件的屬性則對應(yīng)各種類型,例如,組件的長和寬應(yīng)該對應(yīng)整型的數(shù)
據(jù)、組件的顏色對應(yīng)RGB顏色型(COLOREF)數(shù)據(jù),創(chuàng)建界面時,必須將 用字符串描述的各種大小、顏色、位置等屬性信息轉(zhuǎn)化為這些屬性對應(yīng)類型 的數(shù)據(jù)才能使用。
本發(fā)明的實施例還提供了一種界面發(fā)布裝置,可以將界面描述文件轉(zhuǎn)化 為界面數(shù)據(jù)提供給客戶端。圖1為本發(fā)明實施例的界面發(fā)布裝置結(jié)構(gòu)示意圖。如圖1所示,該裝置
包括屬性獲取模塊、數(shù)據(jù)轉(zhuǎn)化模塊和用戶接口模塊。其中屬性獲取模塊用 于獲取至少一個界面組件的屬性信息;數(shù)據(jù)轉(zhuǎn)化模塊用于將所述屬性獲取模 塊獲取的所述屬性信息轉(zhuǎn)化為所述屬性對應(yīng)的類型的數(shù)據(jù);用戶接口模塊, 用于將所述數(shù)據(jù)轉(zhuǎn)化模塊轉(zhuǎn)化得到的數(shù)據(jù)提供給客戶端。
數(shù)據(jù)轉(zhuǎn)化模塊的組成如圖l所示,包括類型識別單元和多個類型轉(zhuǎn)換單 元,其中,每個類型轉(zhuǎn)換單元對應(yīng)一種簡單類型的數(shù)據(jù),例如整型、顏色型、 布爾型(BOOL)、區(qū)域型(RECT)等。類型識別單元用于識別所述屬性 獲取模塊獲取的屬性信息對應(yīng)的數(shù)據(jù)類型,并將所述屬性信息發(fā)送到該數(shù)據(jù) 類型對應(yīng)的類型轉(zhuǎn)換單元,再將各類型轉(zhuǎn)換單元轉(zhuǎn)換成的數(shù)據(jù)輸出到用戶接 口模塊;類型轉(zhuǎn)換單元,用于將所述類型識別單元發(fā)送的所述屬性信息轉(zhuǎn)化 為本類型轉(zhuǎn)換單元對應(yīng)的類型的數(shù)據(jù),返回給類型識別單元。
本發(fā)明另 一實施例的界面發(fā)布裝置中,用戶接口模塊將數(shù)據(jù)轉(zhuǎn)化模塊轉(zhuǎn) 化得到的數(shù)據(jù)通過數(shù)據(jù)接口提供給所述至少一個客戶端。通過定義和使用統(tǒng) 一的數(shù)據(jù)接口 ,使客戶端可以更加方便快捷地獲取創(chuàng)建界面所需的各界面組 件的屬性數(shù)據(jù)。
下面舉一個具體的例子來對本發(fā)明實施例進行說明。
圖2為本發(fā)明實施例中界面發(fā)布方法的流程圖。下面結(jié)合圖2對本實施 例的界面發(fā)布方法進行說明。
201,.定義類型表。為了將界面描述文件中描述的各界面組件及其屬性 識別并轉(zhuǎn)化為各自對應(yīng)的類型的數(shù)據(jù),需要確定界面描述文件中對屬性類型 的描述對應(yīng)于哪種屬性類型。
數(shù)據(jù)轉(zhuǎn)換模塊首先需要定義一個數(shù)據(jù)類型表,從而建立界面描述文件中 對數(shù)據(jù)類型的描述與該數(shù)據(jù)的類型的對應(yīng)關(guān)系。
數(shù)據(jù)類型可以分為簡單的數(shù)據(jù)類型與復(fù)雜的數(shù)據(jù)類型。筒單的數(shù)據(jù)類型 主要有整型(INT),布爾型(BOOL),無符號整型(DWORD) , RGB 顏色型(COLOREF ),大小型(SIZE ),區(qū)域型(RECT ),數(shù)組型(ARRAY)等等。復(fù)雜的數(shù)據(jù)類型主要有枚舉型(Enum),復(fù)雜數(shù)組型(ComplexArray), 結(jié)構(gòu)型(Stract),接口型(Interface),控件型等。凄t據(jù)類型表的每一項對應(yīng)一 種具體的數(shù)據(jù)類型,每一項的標(biāo)簽說明了該類型所屬的大類,例如下面例子 中的simpleType、 Interface 。
簡單數(shù)據(jù)類型的每一項至少包括兩個字段, 一個表示界面描述文件中使 用的類型描述,另一個表示該屬性對應(yīng)的類型名稱。
如下面的簡單類型定義的例子中,id就是界面描述文件中使用的類型名 稱,mdtype是用于客戶端讀取的該屬性對應(yīng)的數(shù)據(jù)類型名稱。simpleType 表示這些筒單類型所屬的大類。 <XtmlDescription〉
<simpleType id="BSTR" mdtype="BSTR7>
<simpleType id="value" mdtype="value"/〉
<simpleType id="int" mdtype="int"/〉
<simpleType id="INT" mdtype="int"/>
<simpleType id="BOOL" mdtype="bool7〉
<simpleType id="bool" mdtype="bool7>
<simpleType id="COLORREF" mdtype="COLORREF7>
<simpleType id="LONG" mdtype="long"/>
<simpleType id="UINT" mdtype="DW0RD7>
〈simpleType id="double" mdtype="double'V>
〈simpleType id="DOUBLE" mdtype="double'V>
<simpleType id="RECT" mdtype="RECT7〉
<simpleType id="POINT" mdtype="P0INT7>
<simpleType id="SIZE" mdtype="SIZE7>
<simpleType id="ITXArray" mdtype="ITXArray"/〉
<simpleType id="ITXData" mdtype="ITXData'V>
<simpleType id="BYTE" mdtype="BYTE"/〉
<simpleType id="DWORD" mdtype="DW0RD7〉 </XtmlDescription>復(fù)雜數(shù)據(jù)類型的每項一般包括多個子項,各個子項可以是標(biāo)識名稱、數(shù) 據(jù)類型等。每一類界面組件,例如窗口、按鈕、圖片等,都對應(yīng)一種復(fù)雜數(shù) 據(jù)類型,每類界面組件包括至少一個屬性,例如組件名稱、類型、大小、位 置、顏色等,每個子項可以是簡單數(shù)據(jù)類型,也可以是復(fù)雜數(shù)據(jù)類型。由于 同一種類型的界面組件具有的屬性基本相同,因此可以在界面組件類型的定 義中定義該類型的界面組件的各個屬性的類型,也就是建立復(fù)雜類型的屬性 與其子屬性之間的關(guān)聯(lián)關(guān)系。下面的例子中定義的IGFFont是一個具體的屬性類型字體類型,屬于 復(fù)雜數(shù)據(jù)類型。<XtmlDescription〉<array id="configprop" itemname="prop"〉<field value="field" type="BSTR" /><field value="value" type="value" /〉 </array〉〈interface id="208308FE-CD22-4420-BF71-80396E326181"label="Font" id="IGFFont"〉<prop field="height" type="int" /〉 <prop field="width" type="int" /> <prop field= "orientation" type="int" /〉 <prop field="weight" type="int" /〉 <prop field="italic" type="BOOL" /〉 <prop field="underline" type="BOOL" /〉 <prop field="charSet" type="BYTE" /> <prop field="facename" type="BSTR" /> </interface> <XtmlDescription>其中的,interface id="208308FE-CD22-4420-BF71-80396E326181" label="Font" id="IGFFont" >這一段中,interface表示IGFFont所屬的大類,即接口型,label表示界面描述文件中使用的屬性類型,即界面描述文件中 對字體類型的描述是"Font" , id是該屬性對應(yīng)的數(shù)據(jù)類型。之后的內(nèi)容是 對該屬性的子屬性的定義,例如,height是字體類型的一個子項(字體類型 的一個屬性),int是height這個屬性的數(shù)據(jù)類型。通過上面數(shù)據(jù)類型表的定義,數(shù)據(jù)轉(zhuǎn)換模塊就可以根據(jù)該數(shù)據(jù)類型表對 各屬性進行數(shù)據(jù)類型轉(zhuǎn)換了 。202,將各屬性信息轉(zhuǎn)換為各屬性對應(yīng)的類型的數(shù)據(jù)??梢栽跀?shù)據(jù)轉(zhuǎn)換模塊中為各種類型的數(shù)據(jù)分別設(shè)置 一 個數(shù)據(jù)轉(zhuǎn)換單元。 可以針對上面定義的數(shù)據(jù)類型表中的各個類型與該類型對應(yīng)的數(shù)據(jù)轉(zhuǎn)換單 元建立關(guān)聯(lián)關(guān)系,例如建立一個關(guān)聯(lián)關(guān)系表等。所有的數(shù)據(jù)轉(zhuǎn)換單元都可以 將界面描述文件中的一部分描述,例如一個字符串,轉(zhuǎn)換成該凄t據(jù)轉(zhuǎn)換單元 對應(yīng)的類型的數(shù)據(jù)。例如,當(dāng)界面描述文件為XML腳本文件時,界面組件及其屬性的描述 一般為字符串類型。讀取到一串描述一個界面組件及其屬性的字符串時,因 為每類界面組件都對應(yīng)一個數(shù)據(jù)類型,而描述該界面組件的字符串中也包含 對這個界面組件的類型及其屬性類型的描述,因而可以根據(jù)類型表調(diào)用該數(shù) 據(jù)類型相關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)換單元對該界面組件信息進行數(shù)據(jù)轉(zhuǎn)化。轉(zhuǎn)化時,如 果該數(shù)據(jù)轉(zhuǎn)換單元發(fā)現(xiàn)該數(shù)據(jù)類型不是簡單的數(shù)據(jù)類型時,則進一步調(diào)用該 復(fù)雜數(shù)據(jù)類型中各子屬性的類型對應(yīng)的數(shù)據(jù)轉(zhuǎn)換單元對該界面組件的各屬 性信息進行轉(zhuǎn)化,即對該復(fù)雜數(shù)據(jù)類型的各個子項進行轉(zhuǎn)化。例如當(dāng)數(shù)據(jù)轉(zhuǎn) 換模塊從一 串字符串中提取的屬性類型信息是上面的IGFFont類型的界面組 件時,則根據(jù)復(fù)雜數(shù)據(jù)類型表中IGFFont類型的定義來根據(jù)IGFFont類型的 定義將該字符串中的屬性內(nèi)容信息轉(zhuǎn)化為IGFFont各子屬性類型的數(shù)據(jù),例 如對height這個屬性,數(shù)據(jù)類型表中其數(shù)據(jù)類型是int型,因此調(diào)用int型的 數(shù)據(jù)轉(zhuǎn)換單元將界面描述文件中描述height這個屬性的內(nèi)容的字符串轉(zhuǎn)換 成int型數(shù)據(jù)。數(shù)據(jù)類型轉(zhuǎn)化完成后,就可以將轉(zhuǎn)化得到的數(shù)據(jù)包含在發(fā)布的界面信息中提供給客戶端。這些界面數(shù)據(jù)可以以普通的數(shù)據(jù)文件,或數(shù)據(jù)庫文件,或 二進制數(shù)據(jù)文件等的形式提供給客戶端,界面發(fā)布者可以根據(jù)具體需要來決 定界面數(shù)據(jù)的組織形式。其中,二進制數(shù)據(jù)文件是比較好的一種實現(xiàn)方式, 界面發(fā)布者可以將界面數(shù)據(jù)在計算機存儲器,例如內(nèi)存,當(dāng)中的二進制數(shù)據(jù) 保存為一個二進制數(shù)據(jù)文件提供給客戶端,客戶端只需要將該文件中的二進 制數(shù)據(jù)拷貝到本地的內(nèi)存當(dāng)中就可以得到所有的界面數(shù)據(jù)。
較佳地,為了方便客戶端獲取這些界面數(shù)據(jù),可以提供一個事先定義好 的數(shù)據(jù)接口 ,以供客戶端通過這個數(shù)據(jù)接口來獲取各種類型的界面數(shù)據(jù)。
舉一個數(shù)據(jù)接口的例子,該數(shù)據(jù)接口支持存取豐富類型的數(shù)據(jù),為了描
述簡單,將該數(shù)據(jù)接口稱作Metadata。
本實施例的Metadata支持設(shè)置及讀取各種類型的數(shù)據(jù),其中記錄了各 個數(shù)據(jù)的對應(yīng)的類型,可以采用如下所示的形式
Interface IMetadata
〃設(shè)置數(shù)據(jù)
HRESULT Setlnt(BSTR bsName, INT nValue); HRESULT SetStr(BSTR bsName, BSTR bsValue) HRESULT SetBool(BSTR bsName, Bool bValue); 〃……
〃讀取數(shù)據(jù)
HRESULT Setlnt(BSTR bsName, INT * pnValue);
HRESULT GetStr(BSTR bsName, BSTR* pbsValue); HRESULT SetBool(BSTR bsName, BOOL* pbValue); 〃……
利用該數(shù)據(jù)接口可以存儲簡單類型數(shù)據(jù),也可以讀取簡單類型的數(shù)據(jù)。 例如可以存4諸一個整凄史pMetadata-〉Setlnt( "id" ,100);也可以讀取一個整數(shù)pMetadata-〉Getlnt( "id" , &nld)。203,將轉(zhuǎn)換后的簡單數(shù)據(jù)類型的數(shù)據(jù)保存在數(shù)據(jù)接口中。 這些數(shù)據(jù)可以根據(jù)具體情況采用任意的組織方式,例如羅列各界面組件 的屬性數(shù)據(jù)。舉個具體的例子,可以依次排列各界面組件的屬性信息,如組 件名稱、長度、寬度、位置等。這種組織方式下,客戶端的界面生成裝置可 以通過數(shù)據(jù)接口依次讀取各界面組件的名稱,并調(diào)用該類型界面組件的生成 單元讀取該界面組件的其它屬性信息并生成該界面組件。較佳地,在保存各界面組件的數(shù)據(jù)時,可以將各界面組件按照某種順序 組織成樹形結(jié)構(gòu);根據(jù)類型表調(diào)用相應(yīng)的數(shù)據(jù)轉(zhuǎn)換單元將界面組件的屬性信 息轉(zhuǎn)換成相應(yīng)類型的數(shù)據(jù)并存儲為該樹形結(jié)構(gòu)中該界面組件對應(yīng)的節(jié)點的 數(shù)據(jù)。例如,以界面窗體組件為該樹形結(jié)構(gòu)中的一個節(jié)點,界面中的其它界 面組件作為該節(jié)點的子節(jié)點,如果一個界面組件又包括至少一個組件,則將 這些組件作為這個界面組件的子節(jié)點,各界面組件的屬性數(shù)據(jù)保存在對應(yīng)的 節(jié)點數(shù)據(jù)中,以供客戶端按照樹遍歷算法依次讀取各節(jié)點的數(shù)據(jù)生成所述界 面。舉個具體的例子,以界面窗體作為根節(jié)點,根節(jié)點數(shù)據(jù)為這個窗體的大 小、形狀、位置等數(shù)據(jù);如果界面窗體中包含一個按鈕,則可以以該按鈕為 該界面窗體的子節(jié)點,子節(jié)點的數(shù)據(jù)為該按鈕的組件類型、大小、形狀、顏 色、位置等,如果該按鈕上有一幅圖片,則可以將該圖片作為該按鈕的子節(jié) 點,如果該圖片中還有文字,可以將該文字作為該圖片的子節(jié)點。采用這種 數(shù)據(jù)組織方式,客戶端的界面生成裝置可以通過數(shù)據(jù)接口讀取這棵界面樹的 根節(jié)點的數(shù)據(jù),再通過數(shù)據(jù)接口依次獲取該根節(jié)點的各子節(jié)點,并分別讀取 各子節(jié)點的數(shù)據(jù),如果某個子節(jié)點還包含子節(jié)點,則重復(fù)上述過程,直到讀 取了該界面樹中所有節(jié)點的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)創(chuàng)建界面。這里,讀取界 面樹各節(jié)點的數(shù)據(jù)的順序可以根據(jù)任意的樹遍歷方法進行,例如現(xiàn)有的深度優(yōu)先遍歷方法、廣度優(yōu)先遍歷方法等。 204,將數(shù)據(jù)接口提供給客戶端。至此,界面數(shù)據(jù)的解析和類型轉(zhuǎn)換就完成了??蛻舳搜b置可以從數(shù)據(jù)接口讀取數(shù)據(jù).,生成各界面組件并最終完成整個界面的創(chuàng)建。
由于各界面組件的數(shù)據(jù)已經(jīng)以各界面組件的屬性對應(yīng)的數(shù)據(jù)類型保存,
客戶端無需再對數(shù)據(jù)類型進行轉(zhuǎn)化,只要從Metadata中讀取到數(shù)據(jù)就可以 完成界面創(chuàng)建過程了 所以步驟201至203均可以在界面發(fā)布前預(yù)先進行。 加快客戶端界面的創(chuàng)建速度,并使得界面描述更清晰,方便開發(fā)人員或者界 面設(shè)計者編寫界面。
較佳地,可以把生成的數(shù)據(jù)接口保存成二進制數(shù)據(jù)文件作為發(fā)布的界面 數(shù)據(jù),客戶端可以直接根據(jù)該文件中的二進制數(shù)據(jù)恢復(fù)出數(shù)據(jù),這樣可以進 一步加快界面的創(chuàng)建速度。另外,由于發(fā)布的界面數(shù)據(jù)文件由二進制數(shù)據(jù)組 成,所以對界面的形式也有一定的保密作用。
本發(fā)明實施例的界面發(fā)布方法和裝置利用類型定義優(yōu)化界面數(shù)據(jù)的方 案,可以去掉客戶端裝置對界面描述文件,例如各種腳本等的依賴,提高界 面的創(chuàng)建速度,同時可以在界面發(fā)布前通過將界面描述文件轉(zhuǎn)換成中間數(shù) 據(jù),對界面數(shù)據(jù)的組織形式也有一定的保護作用。
本發(fā)明實施例的界面發(fā)布方法和裝置可以應(yīng)用在各種計算機應(yīng)用工具 中,尤其是發(fā)展迅速的IM中。客戶端無論在生活還是工作都大量的使用IM 與朋友,同事以及同學(xué)交流與溝通,IM已經(jīng)成為網(wǎng)民客戶端中曰常生活中 不可缺少的工具之一,采用本發(fā)明提供的技術(shù)可以進一步增強IM工具的性 能。
應(yīng)用本發(fā)明實施例的界面發(fā)布方法和裝置,客戶端裝置只需要設(shè)置一個 簡單類型表及一個界面生成模塊就能方便地創(chuàng)建界面,進一步降低了對客戶 端性能和功能的要求。
綜上所述,以上僅為本發(fā)明的部分實施例而已,并非用于限定本發(fā)明的 保護范圍。凡在本發(fā)明的范圍之內(nèi)所作的任何修改、等同替換、改進等,均 應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1、一種界面發(fā)布方法,其特征在于,包括獲取一個界面的至少一個屬性的信息,將所述屬性信息轉(zhuǎn)化為所述屬性對應(yīng)類型的數(shù)據(jù)提供給至少一個客戶端以供客戶端創(chuàng)建所述界面。
2、 如權(quán)利要求l所述方法,其特征在于, 所述屬性信息為字符串類型;所述將所述屬性信息轉(zhuǎn)化為所述屬性對應(yīng)類型的數(shù)據(jù)包括將所述屬性 信息轉(zhuǎn)化為所述屬性對應(yīng)的簡單類型的數(shù)據(jù);所述簡單類型包括以下中的至 少一個整型、字符串型、布爾型、無符號整型、顏色型、大小型、區(qū)域型、 數(shù)組型。
3、 如權(quán)利要求2所述方法,其特征在于,將所述數(shù)據(jù)提供給至少一個 客戶端包括提供數(shù)據(jù)接口給所述至少一個客戶端,所述數(shù)據(jù)接口用于將所述屬性對 應(yīng)簡單類型的數(shù)據(jù)提供給所述客戶端。
4、 如權(quán)利要求2或3所述方法,其特征在于,所述屬性信息包括所述屬性的類型信息和所述屬性的內(nèi)容信息, 所述將所述屬性信息轉(zhuǎn)化為所述屬性對應(yīng)的類型的數(shù)據(jù)包括建立所述 屬性信息中的類型信息與所述屬性對應(yīng)類型的對應(yīng)關(guān)系表,將所述信息中的 屬性內(nèi)容的信息轉(zhuǎn)化為所述對應(yīng)關(guān)系表中所述信息中的屬性類型信息對應(yīng) 的所述類型的數(shù)據(jù)。
5、 如權(quán)利要求4所述方法,其特征在于,所述至少一個屬性中至少一個屬性對應(yīng)的類型為復(fù)雜類型,所述復(fù)雜類 型的屬性包括至少一個簡單類型或復(fù)雜類型的子屬性,所述復(fù)雜類型包括以 下中的至少一個結(jié)構(gòu)型、枚舉型、復(fù)雜數(shù)組型、接口型、控件型;所述將所述屬性值的信息轉(zhuǎn)化為所述屬性類型信息對應(yīng)的簡單類型的 數(shù)據(jù)包括建立所述復(fù)雜類型的屬性與其包含的各子屬性的關(guān)聯(lián)關(guān)系,如果根據(jù)所述對應(yīng)關(guān)系表判斷所述屬性對應(yīng)的類型是簡單類型,則將所述屬性內(nèi)容的信息轉(zhuǎn)化為所述簡單類型的數(shù)據(jù);如果根據(jù)所述對應(yīng)關(guān)系表判斷所述屬性對應(yīng)的類型是復(fù)雜類型,則根據(jù)所述復(fù)雜類型的屬性與其包含的各子屬性 的關(guān)聯(lián)關(guān)系和所述對應(yīng)關(guān)系表對所述屬性的子屬性分別進行類型轉(zhuǎn)化,如果 一個子屬性對應(yīng)的類型為復(fù)雜類型,則對該子屬性的子屬性進行類型轉(zhuǎn)化, 直到得到的所述屬性的數(shù)據(jù)全部是簡單類型的數(shù)據(jù)。
6、 如權(quán)利要求2或3所述方法,其特征在于,所述至少一個屬性包括至少一個界面組件及其屬性信息,將所述界面組 件的數(shù)據(jù)以樹形結(jié)構(gòu)保存,以所述至少 一個界面組件中的一個界面組件為根 節(jié)點,其它界面組件分別為所述根節(jié)點的子節(jié)點;如杲所述界面組件包括至 少一個子組件,則以所述子組件作為所述界面組件的子節(jié)點,各組件的屬性 數(shù)據(jù)保存在對應(yīng)的節(jié)點數(shù)據(jù)中,以供客戶端按照樹遍歷算法依次讀取各節(jié)點 的數(shù)據(jù)生成所述界面。
7、 如權(quán)利要求2或3所述方法,其特征在于, 所述數(shù)據(jù)為二進制數(shù)據(jù)文件或數(shù)據(jù)庫文件。
8、 一種界面發(fā)布裝置,其特征在于,包括 屬性獲取模塊,用于獲取一個界面的至少一個屬性的信息; 數(shù)據(jù)轉(zhuǎn)化模塊,用于將所述屬性獲取模塊獲取的所述屬性信息轉(zhuǎn)化為所述屬性對應(yīng)類型的數(shù)據(jù);和用戶接口模塊,用于將所述數(shù)據(jù)轉(zhuǎn)化模塊轉(zhuǎn)化得到的數(shù)據(jù)提供給至少一 個客戶端。
9、 如權(quán)利要求8所述裝置,其特征在于,所述客戶端接口模塊將所述數(shù)據(jù)轉(zhuǎn)化模塊轉(zhuǎn)化得到的數(shù)據(jù)通過數(shù)據(jù)接 口提供給所述至少一個客戶端。
10、 如權(quán)利要求8或9所述裝置,其特征在于,所述數(shù)據(jù)轉(zhuǎn)化模塊包括 類型識別單元和至少一個類型轉(zhuǎn)換單元,其中所述類型識別單元用于識別所述屬性獲取模塊獲取的屬性信息中的屬性類型信息,并將所述屬性信息中的屬性值信息發(fā)送到所述屬性類型信息對應(yīng)的類型轉(zhuǎn)換單元;所述類型轉(zhuǎn)換單元,用于將所述類型識別單元發(fā)送的所述屬性值信息轉(zhuǎn) 化為本類型轉(zhuǎn)換單元對應(yīng)的類型的數(shù)據(jù)。
全文摘要
本發(fā)明實施例提供了一種界面發(fā)布方法和裝置。該界面發(fā)布方法包括獲取一個界面的至少一個屬性的信息,將所述屬性信息轉(zhuǎn)化為所述屬性對應(yīng)類型的數(shù)據(jù)提供給至少一個客戶端以供客戶端創(chuàng)建所述界面。本發(fā)明實施例提供的一種界面發(fā)布方法和裝置通過將界面數(shù)據(jù)以相應(yīng)的數(shù)據(jù)類型進行保存,客戶端無需再對界面描述文件中的信息進行數(shù)據(jù)類型的轉(zhuǎn)化,加快了界面的創(chuàng)建速度。
文檔編號G06F9/44GK101295251SQ20081012713
公開日2008年10月29日 申請日期2008年6月19日 優(yōu)先權(quán)日2008年6月19日
發(fā)明者梁芝成, 謝昕虬 申請人:騰訊科技(深圳)有限公司