本發(fā)明涉及通信的技術領域,特別是涉及一種移動設備的聯(lián)系人信息的查詢方法和一種移動設備的聯(lián)系人信息的查詢裝置。
背景技術:
隨著通信科技的發(fā)展,諸如手機、手表等移動設備在人們的工作、學習、日常交流等各方面的使用率也越來越高。
用戶通過移動設備與他人進行通話、短信聯(lián)系的頻率較高,使得移動設備累積了較多的聯(lián)系人信息。
在通訊錄中,如圖1所示,一般會添加“A”-“Z”等英文字母的定位控件,用戶點擊該控件可以定位到該英文字母作為首字母的聯(lián)系人信息。
但是,如果在某些不適用英文字母的國家,比如阿拉伯,在使用阿拉伯語存儲聯(lián)系人信息的情況下,由于阿拉伯語使用的不是英文字母,而是阿拉伯語字母,這樣就無法通過通訊錄中的定位控件實現(xiàn)首字母的聯(lián)系人信息定位,用戶需要從初始的聯(lián)系人信息開始,通過持續(xù)的滑動、翻頁等操作才找到所需的聯(lián)系人信息,操作繁瑣。
技術實現(xiàn)要素:
鑒于上述問題,為了解決上述多語言聯(lián)系人信息無法以首字母定位的問題,本發(fā)明實施例提出了一種移動設備的聯(lián)系人信息的查詢方法和相應的一種移動設備的聯(lián)系人信息的查詢裝置。
為了解決上述問題,本發(fā)明實施例公開了一種移動設備的聯(lián)系人信息的查詢方法,包括:
在通訊錄的界面中依據(jù)存儲的至少兩種語言的聯(lián)系人信息,顯示所述至少兩種語言的字母標簽;
當所述字母標簽中的第一目標字母被觸發(fā)時,在所述至少兩種語言的聯(lián)系人信息中查詢以所述第一目標字母作為首字母的目標聯(lián)系人信息;
在所述通訊錄的界面中顯示所述目標聯(lián)系人信息。
優(yōu)選地,所述在所述至少兩種語言的聯(lián)系人信息中查詢以所述第一目標字母作為首字母的目標聯(lián)系人信息的步驟包括:
查找所述至少兩種語言的聯(lián)系人信息對應的索引文檔;其中,所述索引文檔中記錄至少兩種語言的字母索引與聯(lián)系人信息的索引關系,所述字母索引為所述聯(lián)系人信息的首字母;
依據(jù)索引關系查詢首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
優(yōu)選地,所述在所述通訊錄的界面中顯示所述目標聯(lián)系人信息的步驟包括:
在所述通訊錄的界面中將所述至少兩種語言的聯(lián)系人信息定位至所述目標位置,以顯示所述目標聯(lián)系人信息;
其中,所述至少兩種語言的聯(lián)系人信息的排序與所述至少兩種語言的字母索引的排序相同。
優(yōu)選地,所述依據(jù)索引關系查詢首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置的步驟包括:
在所述至少兩種語言的字母索引中,查詢排序在所述第一目標字母之前的第二目標字母;
在所述索引文檔中統(tǒng)計以所述第二目標字母作為首字母的聯(lián)系人信息的數(shù)量;
將所述數(shù)量往后偏移一位,獲得首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
優(yōu)選地,還包括:
在通訊錄中更新聯(lián)系人信息時,識別所述聯(lián)系人信息的首字母;
查詢系統(tǒng)的語言類型;
根據(jù)所述語言類型確定所述首字母在所述通訊錄的索引文檔中的排序信息;
在所述索引文檔中建立所述排序信息對應的字母索引與所述聯(lián)系人信息之間的索引關系。
優(yōu)選地,所述查詢系統(tǒng)的語言類型的步驟包括:
將指定的查詢參數(shù)寫入查詢請求中;
將所述查詢請求發(fā)送至語言查詢接口中;
從所述語音查詢接口接收針對所述指定的查詢參數(shù)返回的、指定的語音類型。
優(yōu)選地,所述至少兩種語言包括英語、漢語、阿拉伯語;
在所述索引文檔中,所述英語的字母索引與所述漢語的字母索引相同;
當系統(tǒng)的語音類型為英語時,所述英語和所述漢語的字母索引排序在所述阿拉伯語的字母索引之前;
所述根據(jù)所述語言類型確定所述首字母在所述索引文檔中的排序信息的步驟包括:
當所述首字母為阿拉伯語指定的第一字母時,確定所述指定的第一字母的排序信息為指定的第二字母的排序信息。
本發(fā)明實施例還公開了一種移動設備的聯(lián)系人信息的查詢裝置,包括:
字母標簽顯示模塊,用于在通訊錄的界面中依據(jù)存儲的至少兩種語言的聯(lián)系人信息,顯示所述至少兩種語言的字母標簽;
目標聯(lián)系人信息查詢模塊,用于在所述字母標簽中的第一目標字母被觸發(fā)時,在所述至少兩種語言的聯(lián)系人信息中查詢以所述第一目標字母作為首字母的目標聯(lián)系人信息;
目標聯(lián)系人信息顯示模塊,用于在所述通訊錄的界面中顯示所述目標聯(lián)系人信息。
優(yōu)選地,所述目標聯(lián)系人信息查詢模塊包括:
索引文檔查找子模塊,用于查找所述至少兩種語言的聯(lián)系人信息對應的索引文檔;其中,所述索引文檔中記錄至少兩種語言的字母索引與聯(lián)系人信息的索引關系,所述字母索引為所述聯(lián)系人信息的首字母;
目標位置查詢子模塊,用于依據(jù)索引關系查詢首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
優(yōu)選地,所述目標聯(lián)系人信息顯示模塊包括:
目標位置定位子模塊,用于在所述通訊錄的界面中將所述至少兩種語言的聯(lián)系人信息定位至所述目標位置,以顯示所述目標聯(lián)系人信息;
其中,所述至少兩種語言的聯(lián)系人信息的排序與所述至少兩種語言的字母索引的排序相同。
優(yōu)選地,所述目標位置查詢子模塊包括:
第二目標字母查詢單元,用于在所述至少兩種語言的字母索引中,查詢排序在所述第一目標字母之前的第二目標字母;
數(shù)量統(tǒng)計單元,用于在所述索引文檔中統(tǒng)計以所述第二目標字母作為首字母的聯(lián)系人信息的數(shù)量;
偏移單元,用于將所述數(shù)量往后偏移一位,獲得首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
優(yōu)選地,還包括:
首字母識別模塊,用于在通訊錄中更新聯(lián)系人信息時,識別所述聯(lián)系人信息的首字母;
語言類型查詢模塊,用于查詢系統(tǒng)的語言類型;
排序信息確定模塊,用于根據(jù)所述語言類型確定所述首字母在所述通訊錄的索引文檔中的排序信息;
索引關系建立模塊,用于在所述索引文檔中建立所述排序信息對應的字母索引與所述聯(lián)系人信息之間的索引關系。
優(yōu)選地,所述語言類型查詢模塊包括:
查詢請求生成子模塊,用于將指定的查詢參數(shù)寫入查詢請求中;
查詢請求發(fā)送子模塊,用于將所述查詢請求發(fā)送至語言查詢接口中;
語音類型接收子模塊,用于從所述語音查詢接口接收針對所述指定的查詢參數(shù)返回的、指定的語音類型。
優(yōu)選地,所述至少兩種語言包括英語、漢語、阿拉伯語;
在所述索引文檔中,所述英語的字母索引與所述漢語的字母索引相同;
當系統(tǒng)的語音類型為英語時,所述英語和所述漢語的字母索引排序在所述阿拉伯語的字母索引之前;
所述排序信息確定模塊包括:
指定排序子模塊,用于在所述首字母為阿拉伯語指定的第一字母時,確定所述指定的第一字母的排序信息為指定的第二字母的排序信息。
本發(fā)明實施例包括以下優(yōu)點:
本發(fā)明實施例在通訊錄的界面中依據(jù)存儲的至少兩種語言的聯(lián)系人信息,顯示至少兩種語言的字母標簽,若字母標簽中的第一目標字母被觸發(fā),則在至少兩種語言的聯(lián)系人信息中查詢以該第一目標字母作為首字母的目標聯(lián)系人信息并進行顯示,通過在通訊錄的界面顯示多語音的字母標簽,通過簡單的點擊等操作,即可實現(xiàn)多語言的聯(lián)系人信息的快速定位,避免了用戶從初始的聯(lián)系人信息開始,通過持續(xù)的滑動、翻頁等操作找到所需的聯(lián)系人信息,大大提高了操作繁瑣。
附圖說明
圖1是目前的一種通訊錄的界面示例圖;
圖2是本發(fā)明的一種移動設備的聯(lián)系人信息的查詢方法實施例1的步驟流程圖;
圖3是本發(fā)明實施例的一種通訊錄的界面示例圖;
圖4是本發(fā)明的一種移動設備的聯(lián)系人信息的查詢方法實施例2的步驟流程圖;
圖5是本發(fā)明實施例的一種用于輸入阿拉伯語的輸入法鍵盤的示例圖;
圖6是本發(fā)明實施例的一種列表控件的示意圖;
圖7是本發(fā)明的一種移動設備的聯(lián)系人信息的查詢裝置實施例的結(jié)構(gòu)框圖。
具體實施方式
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。
參照圖2,示出了本發(fā)明的一種移動設備的聯(lián)系人信息的查詢方法實施例1的步驟流程圖,具體可以包括如下步驟:
步驟201,在通訊錄的界面中依據(jù)存儲的至少兩種語言的聯(lián)系人信息,顯示所述至少兩種語言的字母標簽。
在具體實現(xiàn)中,移動設備可以包括手機、平板電腦、個人數(shù)字助理、穿戴設備(如眼鏡、手表等)等等。
這些移動通信終端的操作系統(tǒng)可以包括Android(安卓)、IOS、Windows Phone、Windows等等。
為使本領域技術人員更好地理解本發(fā)明實施例,在本說明書中,將Android作為操作系統(tǒng)的一種示例進行說明。
這些移動設備可以通過蜂窩網(wǎng)絡等方式與其他用戶進行通話、發(fā)送或接收短信、發(fā)送或接收彩信等通信操作。
為與其他用戶進行通信操作,用戶一般會在移動設備中輸入其他用戶的聯(lián)系人信息,例如,聯(lián)系人的姓名、電話、家庭地址、電郵地址、公司等等,并存儲在通訊錄中。
該通訊錄可以為移動設備的系統(tǒng)通訊錄,也可以是第三方應用的通訊錄,本發(fā)明實施例對此不加以限制。
以Andord系統(tǒng)為例,系統(tǒng)一般攜帶的一個ContentProvider應用,通過該ContentProvider應用可以對通訊錄(如contacts2.db文件)進行訪問,對聯(lián)系人信息的操作。
一方面,對聯(lián)系人信息的操作可以包括增加聯(lián)系人信息、修改聯(lián)系人信息、刪除聯(lián)系人信息等寫操作。
另一方面,對聯(lián)系人信息的操作可以包括查詢聯(lián)系人信息的讀操作。
例如,若移動設備采用SQLite數(shù)據(jù)庫存儲聯(lián)系人信息,則可以使用標準SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)語句進行查詢。
ContactsContact是基于一個三層的數(shù)據(jù)模型進行存儲的,其包括三個主要的數(shù)據(jù)庫,分別為:
1、ContactsContact.Data;
Data表是存儲具體的聯(lián)系人信息,包括郵件、電話號碼等等。
2、ContactsContact.RawContacts;
RawContacts表是聯(lián)系人的數(shù)據(jù)集合,指定用戶賬號和類型。
3、ContactsContact.Contacts。
Contacts表包含了不同的聯(lián)系人的記錄。
在本發(fā)明實施例中,用戶可以采用至少兩種語言存儲聯(lián)系人信息,其中一種語言為可以應用英文字母的語音,例如,英語、漢語(又稱中文)等等,另一種語言為不可以應用英文字母的語音,例如,阿拉伯語、希伯來語、俄羅斯語等等。
為了進行定位,可以在通訊錄的UI(User Interface,用戶界面)中,通過TextView(文本視圖)控件等方式相應地顯示這些語言的字母標簽。
所謂相應,是指聯(lián)系人信息與字母標簽的語言類型相同,指聯(lián)系人信息與字母標簽的排序方式相同。
例如,若在聯(lián)系人信息中存儲了英語、漢語和阿拉伯語(英語、漢語排序在阿拉伯語之前),則如圖3所示,可以在通訊錄的界面中,相應地顯示“A”-“Z”共26個英文字母(復用于漢語的拼音字母)的字母標簽,之后,顯示共28個阿拉伯字母的字母標簽;當然,除了英文字母、阿拉伯字母之外,還可以顯示字符“#”,用以對首字母為符號、數(shù)字等非字母的聯(lián)系人信息進行定位。
步驟202,當所述字母標簽中的第一目標字母被觸發(fā)時,在所述至少兩種語言的聯(lián)系人信息中查詢以所述第一目標字母作為首字母的目標聯(lián)系人信息。
若用戶想進行聯(lián)系人信息的定位操作,則可以通過點擊等方式觸發(fā)某個字母標簽,該字母標簽可以稱之為第一目標字母。
當然,用戶所觸發(fā)的字母標簽可以為任一語音的字母標簽,例如,可以為英文字母,如“B”,又例如,可以為阿拉伯字母等等。
在通訊錄中,可以查詢以該第一目標字母作為首字母的目標聯(lián)系人信息。
需要說明的是,對于不用進行編碼轉(zhuǎn)換的語音而言,如英語、阿拉伯語等,首字母是指聯(lián)系人信息(如姓名)的第一個字母。
對于需要進行編碼(如拼音)轉(zhuǎn)換的語音而言,如漢語、日語等,首字母是指聯(lián)系人信息(如姓名)的編碼(如拼音)的第一個字母。
步驟203,在所述通訊錄的界面中顯示所述目標聯(lián)系人信息。
若查詢到以第一目標字母作為首字母的目標聯(lián)系人信息,則可以在聯(lián)系人信息的界面中進行顯示,讓用戶進行瀏覽。
本發(fā)明實施例在通訊錄的界面中依據(jù)存儲的至少兩種語言的聯(lián)系人信息,顯示至少兩種語言的字母標簽,若字母標簽中的第一目標字母被觸發(fā),則在至少兩種語言的聯(lián)系人信息中查詢以該第一目標字母作為首字母的目標聯(lián)系人信息并進行顯示,通過在通訊錄的界面顯示多語音的字母標簽,通過簡單的點擊等操作,即可實現(xiàn)多語言的聯(lián)系人信息的快速定位,避免了用戶從初始的聯(lián)系人信息開始,通過持續(xù)的滑動、翻頁等操作找到所需的聯(lián)系人信息,大大提高了操作繁瑣。
參照圖4,示出了本發(fā)明的一種移動設備的聯(lián)系人信息的查詢方法實施例2的步驟流程圖,具體可以包括如下步驟:
步驟401,在通訊錄中更新聯(lián)系人信息時,識別所述聯(lián)系人信息的首字母。
在具體實現(xiàn)中,若用戶在通訊錄中對聯(lián)系人信息(如姓名)進行增加、修改等更新操作,則可以對該聯(lián)系人信息生成相應的索引。
在本發(fā)明實施例中,可以識別聯(lián)系人信息(如姓名)的首字母,作為索引值。
對于不用進行編碼轉(zhuǎn)換的語音而言,如英語、阿拉伯語等,可以識別聯(lián)系人信息(如姓名)的第一個字母作為首字母。
例如,若聯(lián)系人信息的姓名為“Jack”,則首字母為“j”。
對于需要進行編碼(如拼音)轉(zhuǎn)換的語音而言,如漢語、日語等,可以識別聯(lián)系人信息(如姓名)的編碼(如拼音)的第一個字母作為首字母。
例如,若聯(lián)系人信息的姓名為“張三”,其拼音為“zhangsan”,則首字母為“z”。
步驟402,查詢系統(tǒng)的語言類型。
對于不同的操作系統(tǒng),如Android,在不同的語言下,聯(lián)系人信息和索引文檔的索引值的順序一般不是固定的。
假設,聯(lián)系人信息和索引文檔的索引值分別有2個記錄,一個記錄是英語的,另一個記錄是阿拉伯語的,若操作系統(tǒng)的語音為英語,英語的記錄會顯示在阿拉伯語的記錄之前,若操作系統(tǒng)的語音為阿拉伯語,阿拉伯語的記錄會顯示在英語的記錄之前。
一般為了便于用戶瀏覽,字母標簽與聯(lián)系人信息的排序方式是相同的,因此,兩者一般需要同步。
在一種情況中,可以查詢系統(tǒng)當前的語言類型,若語音類型發(fā)生變化,相應地改變聯(lián)系人信息、索引文檔的索引值和字母標簽的排序。
在另一種情況中,可以將指定的查詢參數(shù)寫入查詢請求中,將查詢請求發(fā)送至語言查詢接口中,從語音查詢接口接收針對指定的查詢參數(shù)返回的、指定的語音類型。
在這種情況中,可以通過定義查詢參數(shù),從而使得返回指定的語音類型,如英語,使得在語音類型發(fā)生變化時聯(lián)系人信息、索引文檔的索引值和字母標簽的排序方式也不會發(fā)生變化。
由于操作系統(tǒng)切換語言類型后排序方式改變可能會讓用戶覺得混亂,因此,排序方式不變的情況會更適合用戶的習慣。
步驟403,根據(jù)所述語言類型確定所述首字母在所述通訊錄的索引文檔中的排序信息。
在本發(fā)明實施例中,索引文檔記錄至少兩種語言的字母索引(即索引值)與聯(lián)系人信息的索引關系。
其中,字母索引可以為聯(lián)系人信息(如姓名)的首字母,聯(lián)系人信息可以以聯(lián)系人ID等聯(lián)系人標識表征。
以英語、漢語、阿拉伯語作為索引文檔記錄的至少兩種語言的示例。
在索引文檔中,英語的字母索引與漢語的字母索引相同,例如,字母“d”可以表示英文字母“d”,也可以表示拼音字母中的聲母“d”。
當系統(tǒng)的語音類型為英語時,英語和漢語的字母索引排序在阿拉伯語的字母索引之前。
在具體實現(xiàn)中,字母索引的排序通常以數(shù)字索引的形式表示。
在系統(tǒng)的語音類型為英語時,“A”-“Z”共26個英文字母(復用于漢語的拼音字母)的字母索引對應的數(shù)字索引為1至26,由于可能存在其他語言的字母索引,共28個阿拉伯語的字母索引對應的數(shù)字索引為112-139,并非從27開始。
如圖5所示,在阿拉伯語中存在幾個特殊的字母通常顯示在字母之下,通過在輸入法鍵盤中長按字母可以顯示字母
因此,當首字母為阿拉伯語指定的第一字母時,如則可以強制修改字母索引與指定的第二字母(如)的字母索引相同,確定指定的第一字母(如)的排序信息為指定的第二字母(如)的排序信息。
步驟404,在所述索引文檔中建立所述排序信息對應的字母索引與所述聯(lián)系人信息之間的索引關系。
在具體實現(xiàn)中,可以在索引文檔中建立排序信息對應的字母索引與聯(lián)系人信息之間的索引關系。
例如,若聯(lián)系人信息的姓名為“張三”,其首字母為“z”,假設系統(tǒng)的語音類型為英語,則查詢到的排序信息為26,在索引文檔中建立第26個字母與該聯(lián)系人信息的索引關系。
在存儲時,一般使用unicode碼,例如,的unicode碼為\u0627。
步驟405,在通訊錄的界面中依據(jù)存儲的至少兩種語言的聯(lián)系人信息,顯示所述至少兩種語言的字母標簽。
步驟406,當所述字母標簽中的第一目標字母被觸發(fā)時,查找所述至少兩種語言的聯(lián)系人信息對應的索引文檔。
若字母標簽中的第一目標字母被觸發(fā),一般為用戶查詢特定的聯(lián)系人信息,則可以查找至少兩種語言的聯(lián)系人信息對應的索引文檔,進行聯(lián)系人信息的定位操作。
步驟407,依據(jù)索引關系查詢首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
在通訊錄中,聯(lián)系人信息一般是基于索引字母進行排序的,同一個索引字母的聯(lián)系人信息一般是集中在一起顯示的,因此,在通訊錄中定位到首個以第一目標字母作為首字母的聯(lián)系人信息,則用戶可以通過簡單的滑動操作即可瀏覽全部的以第一目標字母作為首字母的聯(lián)系人信息。
在本發(fā)明的一個實施例中,步驟406可以包括如下子步驟:
子步驟S11,在所述至少兩種語言的字母索引中,查詢排序在所述第一目標字母之前的第二目標字母;
子步驟S12,在所述索引文檔中統(tǒng)計以所述第二目標字母作為首字母的聯(lián)系人信息的數(shù)量;
子步驟S13,將所述數(shù)量往后偏移一位,獲得首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
在本發(fā)明實施例中,在索引文檔的查詢結(jié)果中可以附件一些額外的信息,即索引有聯(lián)系人信息的第二目標字母及聯(lián)系人信息的數(shù)量,用于實現(xiàn)定位。
例如,通訊錄存了2個首字母為“a”的聯(lián)系人信息,4個首字母為“b”的聯(lián)系人信息,5個首字母為“d”的聯(lián)系人,10個首字母為“e”的聯(lián)系人,如果用戶點擊了字母標簽“e”,返回的額外信息有2個數(shù)組,一個數(shù)組中保存排序在“e”之前且索引有聯(lián)系人信息的首字母[a,b,d],一個數(shù)組中保存該首字母索引的聯(lián)系人信息的數(shù)量[2,4,5],首個以“e”作為首字母的聯(lián)系人信息的目標位置為2+4+1=7。
在Android系統(tǒng)中,可以直接調(diào)用adapter的getPositionForSection(int section)函數(shù),查詢首個以第一目標字母作為首字母的聯(lián)系人信息的目標位置。
步驟408,在所述通訊錄的界面中將所述至少兩種語言的聯(lián)系人信息定位至所述目標位置,以顯示所述目標聯(lián)系人信息。
為了保證定位的準確,至少兩種語言的聯(lián)系人信息的排序(如依據(jù)“#”、“A”-“Z”、的順序進行排序)與至少兩種語言的字母索引的排序(如依據(jù)“#”、“A”-“Z”、的順序進行排序)相同。
在實際應用中,聯(lián)系人信息可以通過列表控件進行顯示,在定位時,可以將列表控件滑動至目標位置。
列表控件,指以列表形式加載信息的控件,例如,在Android系統(tǒng)中,該列表控件為ListView。
ListView控件作為一個可以顯示圖標或者子項的列表控件,View屬性是其重要屬性之一,該屬性決定了以哪種視圖模式顯示控件的項,這四種視圖模式分別如下:
1、LartIcon:大圖標視圖模式,在項的文本旁顯示大的圖標,在控件寬度足夠的情況下,項是如圖一中的盤符一樣優(yōu)先以平行排列的,排列不完的則自動換行顯示在新行中。
2、SmallIcon:小圖標視圖模式,與大圖標模式一樣,但是顯示的是小的圖標。
3、List:列表視圖模式,顯示小圖標,項一般單列、垂直排列的。
4、Details:詳細資料視圖模式,是最豐富的選項,可以允許查看項,還允許查看為各項指定的任何子項。
各項在網(wǎng)格中顯示,它們垂直排列且其子項會顯示在列中(帶有列標頭)。
在定位時,可以在通訊錄中查找聯(lián)系人信息,如姓名、電話號碼等。
接著,在列表控件中加載聯(lián)系人信息,顯示位于顯示區(qū)域的數(shù)據(jù)對象。
其中,顯示區(qū)域可以指在顯示屏進行顯示的區(qū)域,該區(qū)域可以為與屏幕大小相等,也可以為小于屏幕大小。
由于顯示區(qū)域的面積有限,一般不能一次性顯示所有聯(lián)系人信息,因此,通常顯示一部分聯(lián)系人信息,另一部分聯(lián)系人信息可能已加載,在滑動時進行顯示。
例如,如圖6所示,在列表控件(如ListView)中加載了六個聯(lián)系人信息(Object,簡稱Obj),分別為Obj1、Obj2、Obj3、Obj4、Obj5和Obj6,黑色框部分為顯示區(qū)域,顯示Obj1、Obj2、Obj3和Obj4,未顯示Obj5和Obj6。
在Android系統(tǒng)中,ListView里面的每個子項Item可以是一個字符串,也可以是一個組合控件。
在實現(xiàn)時,使用一維或多維動態(tài)數(shù)組保存ListView要顯示的聯(lián)系人信息。
同時構(gòu)建適配器,簡單地來說,適配器就是Item數(shù)組,動態(tài)數(shù)組與Item數(shù)組是一一對應的關系,動態(tài)數(shù)組有多少元素就生成多少個Item。
把適配器添加到ListView,即可顯示出來。
對界面進行顯示的過程,以Android系統(tǒng)為例,實際上是從最外層的ViewGroup開始,針對每個View進行遍歷測量(measure)、布局(layout)、繪制(draw)的過程。
其中,測量(measure)主要用來決定控件View的大小,整個View樹計算實際的大小,即設置實際的高(對應屬性:mMeasuredHeight)和寬(對應屬性:mMeasureWidth),每個View的控件的實際寬高都是由父視圖和本身視圖決定的。
具體的調(diào)用鏈如下:
ViewRoot根對象地屬性mView(其類型一般為ViewGroup類型)調(diào)用measure()方法去計算View樹的大小,回調(diào)View/ViewGroup對象的onMeasure()方法,該方法實現(xiàn)的功能如下:
1、設置本View視圖的最終大小,該功能的實現(xiàn)通過調(diào)用setMeasuredDimension()方法去設置實際的高(對應屬性:mMeasuredHeight)和寬(對應屬性:mMeasureWidth);
2、如果該View對象是個ViewGroup類型,需要重寫該onMeasure()方法,對其子視圖進行遍歷的measure()過程。
2.1對每個子視圖的measure()過程,是通過調(diào)用父類ViewGroup.java類里的measureChildWithMargins()方法去實現(xiàn),由于measureChildWithMargins()方法只是一個過渡層更簡單的做法是直接調(diào)用View對象的measure()方法,因此,該方法內(nèi)部只是簡單地調(diào)用了View對象的measure()方法。
布局(layout)主要確定控件View的位置,將整個根據(jù)子視圖的大小以及布局參數(shù)將View樹放到合適的位置上。
具體的調(diào)用鏈如下:
host.layout()開始View樹的布局,繼而回調(diào)給View/ViewGroup類中的layout()方法。具體流程如下:
1、layout方法會設置該View視圖位于父視圖的坐標軸,即mLeft,mTop,mLeft,mBottom(調(diào)用setFrame()函數(shù)去實現(xiàn));
接下來回調(diào)onLayout()方法(如果該View是ViewGroup對象,需要實現(xiàn)該方法,對每個子視圖進行布局)。
2、如果該View是個ViewGroup類型,需要遍歷每個子視圖childView,調(diào)用該子視圖的layout()方法去設置它的坐標值。
繪制(draw)主要決定控件View的顯示。
由ViewRoot對象的performTraversals()方法調(diào)用draw()方法發(fā)起繪制該View樹,值得注意的是每次發(fā)起繪圖時,并不會重新繪制每個View樹的視圖,而重新繪制那些“需要重繪”的視圖,View類內(nèi)部變量包含了一個標志位DRAWN,當該視圖需要重繪時,就會為該View添加該標志位。
調(diào)用流程如下:
mView.draw()開始繪制,draw()方法實現(xiàn)的功能如下:
1、繪制該View的背景;
2、為顯示漸變框做一些準備操作;
3、調(diào)用onDraw()方法繪制視圖本身(每個View都需要重載該方法,ViewGroup不需要實現(xiàn)該方法);
4、調(diào)用dispatchDraw()方法繪制子視圖(如果該View類型不為ViewGroup,即不包含子視圖,不需要重載該方法);
需要說明的是,ViewGroup類已經(jīng)為重寫了dispatchDraw()的功能實現(xiàn),應用程序一般不需要重寫該方法,但可以重載父類函數(shù)實現(xiàn)具體的功能。
4.1dispatchDraw()方法內(nèi)部會遍歷每個子視圖,調(diào)用drawChild()去重新回調(diào)每個子視圖的draw()方法(注意,這個地方“需要重繪”的視圖才會調(diào)用draw()方法)。
需要說明的是,ViewGroup類已經(jīng)重寫了dispatchDraw()的功能實現(xiàn),應用程序一般不需要重寫該方法,但可以重載父類函數(shù)實現(xiàn)具體的功能。
5、繪制滾動條。
需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。
參照圖7,示出了本發(fā)明的一種移動設備的聯(lián)系人信息的查詢裝置實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
字母標簽顯示模塊701,用于在通訊錄的界面中依據(jù)存儲的至少兩種語言的聯(lián)系人信息,顯示所述至少兩種語言的字母標簽;
目標聯(lián)系人信息查詢模塊702,用于在所述字母標簽中的第一目標字母被觸發(fā)時,在所述至少兩種語言的聯(lián)系人信息中查詢以所述第一目標字母作為首字母的目標聯(lián)系人信息;
目標聯(lián)系人信息顯示模塊703,用于在所述通訊錄的界面中顯示所述目標聯(lián)系人信息。
在本發(fā)明的一個實施例中,所述目標聯(lián)系人信息查詢模塊702可以包括如下子模塊:
索引文檔查找子模塊,用于查找所述至少兩種語言的聯(lián)系人信息對應的索引文檔;其中,所述索引文檔中記錄至少兩種語言的字母索引與聯(lián)系人信息的索引關系,所述字母索引為所述聯(lián)系人信息的首字母;
目標位置查詢子模塊,用于依據(jù)索引關系查詢首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
在本發(fā)明的一個實施例中,所述目標聯(lián)系人信息顯示模塊703可以包括如下子模塊:
目標位置定位子模塊,用于在所述通訊錄的界面中將所述至少兩種語言的聯(lián)系人信息定位至所述目標位置,以顯示所述目標聯(lián)系人信息;
其中,所述至少兩種語言的聯(lián)系人信息的排序與所述至少兩種語言的字母索引的排序相同。
在本發(fā)明的一個實施例中,所述目標位置查詢子模塊可以包括如下單元:
第二目標字母查詢單元,用于在所述至少兩種語言的字母索引中,查詢排序在所述第一目標字母之前的第二目標字母;
數(shù)量統(tǒng)計單元,用于在所述索引文檔中統(tǒng)計以所述第二目標字母作為首字母的聯(lián)系人信息的數(shù)量;
偏移單元,用于將所述數(shù)量往后偏移一位,獲得首個以所述第一目標字母作為首字母的聯(lián)系人信息的目標位置。
在本發(fā)明的一個實施例中,還可以包括如下模塊:
首字母識別模塊,用于在通訊錄中更新聯(lián)系人信息時,識別所述聯(lián)系人信息的首字母;
語言類型查詢模塊,用于查詢系統(tǒng)的語言類型;
排序信息確定模塊,用于根據(jù)所述語言類型確定所述首字母在所述通訊錄的索引文檔中的排序信息;
索引關系建立模塊,用于在所述索引文檔中建立所述排序信息對應的字母索引與所述聯(lián)系人信息之間的索引關系。
在本發(fā)明的一個實施例中,所述語言類型查詢模塊可以包括如下子模塊:
查詢請求生成子模塊,用于將指定的查詢參數(shù)寫入查詢請求中;
查詢請求發(fā)送子模塊,用于將所述查詢請求發(fā)送至語言查詢接口中;
語音類型接收子模塊,用于從所述語音查詢接口接收針對所述指定的查詢參數(shù)返回的、指定的語音類型。
在本發(fā)明實施例的一個示例中,所述至少兩種語言包括英語、漢語、阿拉伯語;
在所述索引文檔中,所述英語的字母索引與所述漢語的字母索引相同;
當系統(tǒng)的語音類型為英語時,所述英語和所述漢語的字母索引排序在所述阿拉伯語的字母索引之前;
所述排序信息確定模塊可以包括如下子模塊:
指定排序子模塊,用于在所述首字母為阿拉伯語指定的第一字母時,確定所述指定的第一字母的排序信息為指定的第二字母的排序信息。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內(nèi)的技術人員應明白,本發(fā)明實施例的實施例可提供為方法、裝置、或計算機程序產(chǎn)品。因此,本發(fā)明實施例可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明實施例是參照根據(jù)本發(fā)明實施例的方法、終端設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理終端設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理終端設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理終端設備上,使得在計算機或其他可編程終端設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程終端設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明實施例的優(yōu)選實施例,但本領域內(nèi)的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明實施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本發(fā)明所提供的一種移動設備的聯(lián)系人信息的查詢方法和一種移動設備的聯(lián)系人信息的查詢裝置,進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。