本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種確定視圖顯示位置的方法及設(shè)備。
背景技術(shù):
目前隨著Android(安卓)操作系統(tǒng)的普及,使用Android操作系統(tǒng)的產(chǎn)品已經(jīng)深入到了我們生活的方方面面,如Android手機、Android電視、Android平板電腦等。用戶使用輸入法輸入字符到Android設(shè)備屏幕顯示的場景更是司空見慣。如圖1為一個普通的輸入框;圖2中,用戶點擊輸入框輸入字符,彈出輸入法鍵盤,這時輸入框所在的界面,由于輸入法鍵盤的彈出,會重新計算輸入框應(yīng)該顯示在屏幕的位置。
現(xiàn)有技術(shù)在重新計算輸入框顯示在屏幕的位置時,如果用戶在輸入框中輸入的字符數(shù)大于該輸入框能夠顯示的最大字符數(shù)時,若由于種種原因?qū)е螺斎敕ㄦI盤隱藏,例如操作中斷、用戶按了返回鍵;當(dāng)用戶再度點擊輸入框調(diào)出輸入法鍵盤時,在重新計算輸入框位置時,可能會出現(xiàn)計算出錯,出現(xiàn)如圖3所示的現(xiàn)象,輸入框被輸入法鍵盤遮擋;在接下來的輸入字符的過程中,用戶將無法看到自己輸入的字符。并且唯一的解決辦法是退出當(dāng)前界面重新進入該界面,用戶需要重新輸入字符。在計算輸入框位置出現(xiàn)錯誤后,設(shè)備不能自動識別并重新確定正確的輸入框位置,需要用戶手動退出錯誤界面。
綜上所示,目前確定輸入框位置的方法在確定出錯誤的顯示位置時不能自動識別,確定輸入框位置的方法不夠靈活。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種確定視圖顯示位置的方法及設(shè)備,用以解決現(xiàn)有技術(shù)中確定輸入框位置的方法在確定出錯誤的顯示位置時不能自動識別,確定輸入框位置的方法不夠靈活的問題。
基于上述問題,本發(fā)明實施例提供一種確定視圖顯示位置的方法,包括:
若確定目標視圖位于可見區(qū)域之外,并且所述目標視圖中已輸入的字符個數(shù)大于所述目標視圖能夠顯示的最大字符數(shù),則根據(jù)已輸入的字符和所述參考視圖的位置,確定目標視圖的當(dāng)前位置,其中所述參考視圖的位置是根據(jù)已輸入的字符確定的,且所述參考視圖的面積大于所述目標視圖的面積;
根據(jù)所述目標視圖的當(dāng)前位置與所述可見區(qū)域的位置,確定所述目標視圖的顯示位置。
另一方面,本發(fā)明實施例提供一種確定視圖顯示位置的設(shè)備,包括:
確定模塊,用于若確定目標視圖位于可見區(qū)域之外,并且所述目標視圖中已輸入的字符個數(shù)大于所述目標視圖能夠顯示的最大字符數(shù),則根據(jù)已輸入的字符和所述參考視圖的位置,確定目標視圖的當(dāng)前位置,其中所述參考視圖的位置是根據(jù)已輸入的字符確定的,且所述參考視圖的面積大于所述目標視圖的面積;
處理模塊,用于根據(jù)所述目標視圖的當(dāng)前位置與所述可見區(qū)域的位置,確定所述目標視圖的顯示位置。
由于本發(fā)明實施例在確定目標視圖位于可見區(qū)域之外,并且所述目標視圖中已輸入的字符個數(shù)大于所述目標視圖能夠顯示的最大字符數(shù)時,重新確定目標視圖的當(dāng)前位置;并且本發(fā)明實施例在確定目標視圖的當(dāng)前位置時,是根據(jù)由已輸入的字符確定的參考視圖,確定出目標視圖的當(dāng)前位置的。并根據(jù)當(dāng)前視圖的當(dāng)前位置,以及可見區(qū)域的位置,對目標視圖進行平移,確定目標視圖的顯示位置。由于本發(fā)明實施例在確定目標視圖的顯示位置出現(xiàn)錯誤時,能夠自動識別到出現(xiàn)錯誤,并且重新確定出正確的目標視圖的顯示位置,從而不需要人工干預(yù),能夠靈活的確定出目標視圖正確的顯示位置,提高用戶體驗。
附圖說明
圖1為背景技術(shù)中的輸入框示意圖;
圖2為背景技術(shù)中的輸入框和輸入法鍵盤示意圖一;
圖3為背景技術(shù)中輸入框和輸入法鍵盤示意圖二;
圖4為本發(fā)明實施例確定視圖顯示位置的方法流程圖;
圖5為本發(fā)明實施例輸入框位置示意圖;
圖6為本發(fā)明實施例輸入的字符示意圖;
圖7A為本發(fā)明實施已輸入字符的輸入方式示意圖一;
圖7B為本發(fā)明實施已輸入字符的輸入方式示意圖二;
圖7C為本發(fā)明實施已輸入字符的輸入方式示意圖三;
圖7D為本發(fā)明實施已輸入字符的輸入方式示意圖四;
圖8為本發(fā)明實施例確定視圖顯示位置的方法整體流程圖;
圖9為本發(fā)明實施例確定視圖顯示位置的設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例若確定目標視圖位于可見區(qū)域之外,并且所述目標視圖中已輸入的字符個數(shù)大于所述目標視圖能夠顯示的最大字符數(shù),則根據(jù)已輸入的字符和所述參考視圖的位置,確定目標視圖的當(dāng)前位置,其中所述參考視圖的位置是根據(jù)已輸入的字符確定的,且所述參考視圖的面積大于所述目標視圖的面積;根據(jù)所述目標視圖的當(dāng)前位置與所述可見區(qū)域的位置,確定所述目標視圖的顯示位置。
由于本發(fā)明實施例在確定目標視圖位于可見區(qū)域之外,并且所述目標視圖中已輸入的字符個數(shù)大于所述目標視圖能夠顯示的最大字符數(shù)時,重新確定目標視圖的當(dāng)前位置;并且本發(fā)明實施例在確定目標視圖的當(dāng)前位置時,是根據(jù)由已輸入的字符確定的參考視圖,確定出目標視圖的當(dāng)前位置的。并根據(jù)當(dāng)前視圖的當(dāng)前位置,以及可見區(qū)域的位置,對目標視圖進行平移,確定目標視圖的顯示位置。由于本發(fā)明實施例在確定目標視圖的顯示位置出現(xiàn)錯誤時,能夠自動識別到出現(xiàn)錯誤,并且重新確定出正確的目標視圖的顯示位置,從而不需要人工干預(yù),能夠靈活的確定出目標視圖正確的顯示位置,提高用戶體驗。
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部份實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
如圖4所示,本發(fā)明實施例一種確定視圖顯示位置的方法包括:
步驟401、若確定目標視圖位于可見區(qū)域之外,并且所述目標視圖中已輸入的字符個數(shù)大于所述目標視圖能夠顯示的最大字符數(shù),則根據(jù)已輸入的字符和所述參考視圖的位置,確定目標視圖的當(dāng)前位置,其中所述參考視圖的位置是根據(jù)已輸入的字符確定的,且所述參考視圖的面積大于所述目標視圖的面積;
步驟402、根據(jù)所述目標視圖的當(dāng)前位置與所述可見區(qū)域的位置,確定所述目標視圖的顯示位置。
本發(fā)明實施例的目標視圖為文本視圖,用戶能夠通過點擊目標視圖,在目標視圖中進行字符的輸入;并且在用戶點擊目標視圖,在目標視圖中輸入字符時,會在屏幕上彈出輸入法鍵盤,以使用戶通過輸入法鍵盤,在目標視圖中輸入字符。
本發(fā)明實施例的可見區(qū)域為屏幕中除了輸入法鍵盤之外的區(qū)域。
例如,本發(fā)明實施例的目標視圖可以為輸入框。
其中,本發(fā)明實施例確定目標視圖位于可見區(qū)域之外,為目標視圖全部位于可見區(qū)域之外,即:在輸入法鍵盤彈出后,目標視圖全部位于輸入法鍵盤覆蓋的區(qū)域。
本發(fā)明實施例根據(jù)目標視圖的長度,以及目標視圖中每個字符的寬度,確定目標視圖中能夠顯示的最大字符數(shù)。
具體的,根據(jù)字符占用像素的個數(shù)確定每個字符的寬度;以及根據(jù)目標視圖占用的像素的個數(shù)確定目標視圖的寬度。
結(jié)合本發(fā)明實施例確定目標視圖顯示位置的方法的應(yīng)用場景,進行詳細說明。
本發(fā)明實施例在采用上述方法確定目標視圖的顯示位置之前,已經(jīng)確定過一次目標視圖的顯示位置,但是,第一次確定出的目標視圖的顯示位置位于可見區(qū)域之外。
可以理解為:本發(fā)明實施例包括兩個模塊,假設(shè)分別為繪制模塊和糾錯模塊。其中,繪制模塊主要執(zhí)行確定目標視圖顯示位置的任務(wù);糾錯模塊主要用于判斷繪制模塊確定出的目標視圖的顯示位置是否正確,在確定繪制模塊確定出的目標視圖的顯示位置錯誤時,糾錯模塊采用上述方法重新確定出正確的目標視圖的顯示位置。
本發(fā)明實施例確定目標視圖顯示位置的方法的應(yīng)用場景為,用戶通過輸入法鍵盤在目標視圖中輸入字符,在用戶輸入的字符個數(shù)大于該目標視圖能夠顯示的最大字符數(shù)時,假設(shè)由于用戶按了返回鍵,導(dǎo)致輸入法鍵盤隱藏。由于用戶還需要繼續(xù)輸入字符,需要調(diào)出輸入法鍵盤;在用戶調(diào)出輸入法鍵盤時,上述繪制模塊需要重新確定目標視圖的顯示位置。
本發(fā)明實施例的繪制模塊在確定目標視圖的顯示位置時,獲取目標視圖的rectangle(矩形)參數(shù)。
具體的,以目標視圖為輸入框為例,說明繪制模塊獲取輸入框rectangle參數(shù)的方法。
繪制模塊在確定輸入框顯示位置之前,會遍歷顯示系統(tǒng)中全部的View(視圖)并調(diào)用每個View的onLayout方法用于更新View的布局,計算坐標和偏移等。由于輸入框(EditText)繼承自TextView,在調(diào)用EditText的onLayout方法時,會調(diào)用到TextView的onLayout方法,在TextView的onLayout方法中,會調(diào)用到bringPointIntoView等一系列方法,最終會調(diào)用到ViewRootImpl中的scrollToRectOrFocus方法,該方法定義如下:
boolean scrollToRectOrFocus(Rect rectangle,boolean immediate)
其中,rectangle參數(shù)的類型為Rect(矩形),Rect的相關(guān)重要數(shù)據(jù)如下:
rectangle參數(shù)包括left(左)、right(右)、top(上)、bottom(下),規(guī)定了Rect的大小,也確定了該Rect相對于屏幕的位置。
如圖5所示的輸入框,在屏幕分辨率為1920*1080時,rectangle參數(shù)表示輸入框相對屏幕的位置。
由于用戶在目標視圖中輸入的字符的個數(shù)大于目標視圖能夠顯示的最大字符數(shù),該繪制模塊在獲取目標視圖的rectangle參數(shù)時,會獲取到錯誤的rectangle參數(shù);將繪制模塊獲取到的錯誤的rectangle參數(shù)對應(yīng)的視圖作為參考視圖;即繪制模塊根據(jù)參考視圖的rectangle參數(shù)與可見區(qū)域的mVisRect參數(shù),確定目標區(qū)域的顯示位置,導(dǎo)致目標區(qū)域的顯示位置確定錯誤。
需要說明的是,本發(fā)明實施例的參考視圖的位置是根據(jù)已輸入的字符確定的,且所述參考視圖的面積大于所述目標視圖的面積。
如圖6所示,假設(shè)目標區(qū)域中能夠顯示的最大字符數(shù)為5,此時用戶已輸入的字符數(shù)為8,用戶已輸入的字符為1、2、3、4、5、6、7、8。而字符4、5、6、7、8所在的區(qū)域為目標視圖的位置。繪制模塊在獲取目標視圖的rectangle參數(shù)時,錯誤地將字符1、2、3、4、5、6、7、8所在的區(qū)域作為目標視圖的位置;即本發(fā)明實施例將字符1、2、3、4、5、6、7、8所在的區(qū)域作為參考視圖所在的位置。
具體的,本發(fā)明實施例在確定目標區(qū)域位于可見區(qū)域之外時,可以采用下列方法。
1、獲取參考視圖的rectangle參數(shù),以及獲取可見區(qū)域的mVisRect參數(shù);
其中,rectangle參數(shù)包括left、right、top、bottom;
mVisRect參數(shù)也包括left、right、top、bottom。
2、采用intersect方法,判斷參考視圖的rectangle參數(shù)與可見區(qū)域的mVisRect參數(shù)是否存在交集。
由于參考視圖為文本視圖,參考視圖的rectangle參數(shù)與可見區(qū)域的mVisRect參數(shù)本應(yīng)該存在交集;
若通過intersect方法,確定參考視圖的rectangle參數(shù)與可見區(qū)域的mVisRect參數(shù)沒有交集,則確定目標區(qū)域位于可見區(qū)域之外。
需要說明的是,本發(fā)明實施例若通過intersect方法,確定參考視圖的rectangle參數(shù)與可見區(qū)域的mVisRect參數(shù)有交集,則需要根據(jù)參考視圖的rectangle參數(shù)與可見區(qū)域的mVisRect參數(shù)進行計算,對參考視圖進行平移,以使參考視圖移動到可見區(qū)域。但是,若通過intersect方法,確定參考視圖的rectangle參數(shù)與可見區(qū)域的mVisRect參數(shù)沒有交集,則不對參考視圖進行移動。
具體的,本發(fā)明實施例的intersect方法可以采用下列代碼實現(xiàn):
其中,上述代碼中的left,top,right,bottom表示可視區(qū)域的mVisRect參數(shù),this left,this top,this right,this bottom表示參考視圖的rectangle參數(shù)。
由于本發(fā)明實施例在根據(jù)參考視圖的位置確定目標視圖的顯示位置時。確定出的目標視圖的顯示位置位于可見區(qū)域之外。因此,本發(fā)明實施例在需要確定出目標視圖正確的顯示位置時,首先需要確定出目標視圖的當(dāng)前位置(即正確的目標視圖的位置,并非是參考視圖的位置)。
本發(fā)明實施例根據(jù)已輸入的字符和參考視圖的位置,確定目標視圖的當(dāng)前位置。
可選的,確定已輸入的字符占用的行數(shù);根據(jù)所述行數(shù)、已輸入的字符的個數(shù)、所述目標視圖能夠顯示的最大字符數(shù),以及所述參考視圖的位置,確定所述目標視圖的當(dāng)前位置。
需要說明的是,由于本發(fā)明實施例的目標視圖中能夠顯示的最大字符時確定的,在用戶輸入的字符個數(shù)大于目標視圖能夠顯示的最大字符數(shù)時,會將最先輸入的多于該最大字符數(shù)的字符隱藏。并且在隱藏字符的方式不同時,已輸入的字符占用的行數(shù)不同。下面根據(jù)已輸入的字符占用的行數(shù),分別說明確定目標視圖的當(dāng)前位置的方法。
一、已輸入的字符占用的行數(shù)為一行。
根據(jù)下列方式確定所述目標視圖的當(dāng)前位置:
根據(jù)已輸入的字符的個數(shù)與所述目標視圖能夠顯示的最大字符數(shù)的差值,以及每個字符的寬度,確定所述目標視圖的當(dāng)前位置與所述參考視圖的位置在水平方向上的偏移量;根據(jù)所述水平方向上的偏移量,以及所述參考視圖的位置,確定所述目標視圖的當(dāng)前位置。
本發(fā)明實施例參考視圖的位置是根據(jù)已輸入的所有字符確定的;而目標視圖的當(dāng)前位置為在目標視圖中顯示的字符所在的區(qū)域。并且在已輸入的字符占用的行數(shù)為一行時,表示隱藏字符的方式為將多出的字符在目標視圖的左右隱藏。
在已輸入的字符占用的行數(shù)為一行時,目標視圖的當(dāng)前位置相對于參考視圖的位置在垂直方向上沒有變化,目標視圖的當(dāng)前位置相對于參考視圖的位置只存在水平方向的偏移。
在確定水平方向上的偏移量時,將已輸入的字符的個數(shù)與所述目標視圖能夠顯示的最大字符數(shù)的差值,與每個字符寬度的乘積,作為目標視圖的當(dāng)前位置與參考視圖的位置在水平方向上的偏移量。
根據(jù)用戶在目標視圖中輸入字符后,字符顯示順序不同,目標視圖的位置相對于參考視圖的位置的水平方向的偏移方向也不同。
1、若所述已輸入的字符中第一個字符位于所有字符的最左側(cè),則將所述參考視圖的左側(cè)邊界向右平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置。
在已輸入的字符中第一個字符位于所有字符的最左側(cè)時,表示輸入的字符從左至右依次顯示;在輸入的字符數(shù)大于目標視圖能夠顯示的最大字符數(shù)時,將最先輸入的字符隱藏,即將靠近左側(cè)的字符進行隱藏。
具體的,如圖7A所示的已輸入字符。假設(shè)目標視圖能夠顯示的最大字符數(shù)為5,已輸入的字符數(shù)為8;用戶在目標視圖輸入的字符依次為1、2、3、4、5、6、7、8;則當(dāng)前在目標視圖中顯示的字符從左至右依次為4、5、6、7、8;字符1、2、3隱藏。
在確定目標視圖的當(dāng)前位置時,參考視圖的位置為字符1、2、3、4、5、6、7、8所在的位置。確定已輸入的字符的個數(shù)與所述目標視圖能夠顯示的最大字符數(shù)的差值為3,并且每個字符的寬度為a,則確定目標視圖的當(dāng)前位置與參考視圖的位置在水平方向上的偏移量3a。將參考視圖的左側(cè)邊界向右平移偏移量3a,得到目標視圖的當(dāng)前位置。
2、若所述已輸入的字符中第一個字符位于所有字符的最右側(cè),則將所述參考視圖的右側(cè)邊界向左平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置。
在已輸入的字符中第一個字符位于所有字符的最右側(cè)時,表示輸入的字符從右至左依次顯示;在輸入的字符數(shù)大于目標視圖能夠顯示的最大字符數(shù)時,將最先輸入的字符隱藏,即將靠近右側(cè)的字符進行隱藏。
具體的,如圖7B所示的已輸入字符。假設(shè)目標視圖能夠顯示的最大字符數(shù)為5,已輸入的字符數(shù)為8;用戶在目標視圖輸入的字符依次為1、2、3、4、5、6、7、8;則當(dāng)前在目標視圖中顯示的字符從右至左依次為4、5、6、7、8;字符1、2、3隱藏。
在確定目標視圖的當(dāng)前位置時,參考視圖的位置為字符1、2、3、4、5、6、7、8所在的位置。確定已輸入的字符的個數(shù)與所述目標視圖能夠顯示的最大字符數(shù)的差值為3,并且每個字符的寬度為a,則確定目標視圖的當(dāng)前位置與參考視圖的位置在水平方向上的偏移量3a。將參考視圖的右側(cè)邊界向左平移偏移量3a,得到目標視圖的當(dāng)前位置。
二、已輸入的字符占用的行數(shù)多于一行。
根據(jù)下列方式確定所述目標視圖的當(dāng)前位置:
根據(jù)所述行數(shù),以及每個字符的高度,確定所述目標視圖的當(dāng)前位置與所述參考視圖的位置在垂直方向上的偏移量;根據(jù)所述垂直方向上的偏移量,以及所述參考視圖的位置,確定所述目標視圖的當(dāng)前位置。
本發(fā)明實施例參考視圖的位置是根據(jù)已輸入的所有字符確定的;而目標視圖的當(dāng)前位置為在目標視圖中顯示的字符所在的區(qū)域。并且在已輸入的字符占用的行數(shù)多于一行時,表示隱藏字符的方式為將多出的字符在目標視圖的上下行進行隱藏。
在已輸入的字符占用的行數(shù)多于一行時,目標視圖的當(dāng)前位置相對于參考視圖的位置在水平方向上沒有變化,目標視圖的當(dāng)前位置相對于參考視圖的位置只存在垂直方向的偏移。
在確定垂直方向上的偏移量時,獲取輸入的字符占用的行數(shù),將該行數(shù)減1的值,與每個字符的高度的乘積,作為目標視圖的當(dāng)前位置與參考視圖的位置在垂直方向上的偏移量。
用戶在目標視圖中輸入的字符數(shù)大于目標視圖最大顯示字符數(shù)后,多出的字符在目標視圖的上下行進行隱藏。并且多出的字符的隱藏方式不同,目標視圖的位置相對于參考視圖的位置的垂直方向的偏移方向也不同。
具體的,本發(fā)明實施例在判斷多出的字符的隱藏方式時,是根據(jù)已輸入的字符中第一個字符的位置確定的。在已輸入的字符中第一個字符位于從上到下順序的第一行時,表示將多出的字符在目標視圖的上一行進行隱藏;在已輸入的字符中第一個字符位于從下到上順序的第一行時,表示將多出的字符在目標視圖的下一行進行隱藏。
1、若所述已輸入的字符中第一個字符位于從上到下順序的第一行,則將所述參考視圖的上方邊界向下平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置;
在已輸入的字符中第一個字符位于從上到下順序的第一行時,表示將多出的字符在目標視圖的上一行進行隱藏。并且在輸入的字符數(shù)大于目標視圖能夠顯示的最大字符數(shù)時,將最先輸入的字符在目標視圖的上一行進行隱藏。
具體的,如圖7C所示的已輸入字符。假設(shè)目標視圖能夠顯示的最大字符數(shù)為5,已輸入的字符數(shù)為8;用戶在目標視圖輸入的字符依次為1、2、3、4、5、6、7、8;則當(dāng)前在目標視圖中顯示的字符從右至左依次為4、5、6、7、8;字符1、2、3在目標視圖的上方隱藏。
在確定目標視圖的當(dāng)前位置時,參考視圖的位置為長度為字符4、5、6、7、8所在區(qū)域的長度,高度為兩行字符的高度。確定已輸入的字符所占的行數(shù)位兩行,并且每個字符的高度為b,則則確定目標視圖的當(dāng)前位置與參考視圖的位置在垂直方向上的偏移量b。將參考視圖的上方邊界向下平移偏移量b,得到目標視圖的當(dāng)前位置。
2、若所述已輸入的字符中第一個字符位于從下到上順序的第一行,則將所述參考視圖的下方邊界向上平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置。
在已輸入的字符中第一個字符位于從下到上順序的第一行時,表示將多出的字符在目標視圖的下一行進行隱藏。并且在輸入的字符數(shù)大于目標視圖能夠顯示的最大字符數(shù)時,將最先輸入的字符在目標視圖的下一行進行隱藏。
具體的,如圖7D所示的已輸入字符。假設(shè)目標視圖能夠顯示的最大字符數(shù)為5,已輸入的字符數(shù)為8;用戶在目標視圖輸入的字符依次為1、2、3、4、5、6、7、8;則當(dāng)前在目標視圖中顯示的字符從右至左依次為4、5、6、7、8;字符1、2、3在目標視圖的下方隱藏。
在確定目標視圖的當(dāng)前位置時,參考視圖的位置為長度為字符4、5、6、7、8所在區(qū)域的長度,高度為兩行字符的高度。確定已輸入的字符所占的行數(shù)位兩行,并且每個字符的高度為b,則則確定目標視圖的當(dāng)前位置與參考視圖的位置在垂直方向上的偏移量b。將參考視圖的下方邊界向上平移偏移量b,得到目標視圖的當(dāng)前位置。
本發(fā)明實施例在確定目標視圖的當(dāng)前位置時。具體可以采用下列代碼實現(xiàn):
本發(fā)明實施例在確定出目標視圖的當(dāng)前位置后,根據(jù)目標視圖的當(dāng)前位置與可見區(qū)域的位置,確定所述目標視圖的顯示位置。
其中,目標視圖的顯示位置完全位于可見區(qū)域之中。
需要說明的是,本發(fā)明實施例根據(jù)目標視圖的當(dāng)前位置與可見區(qū)域的位置,確定所述目標視圖的顯示位置的方法,采用的是現(xiàn)有技術(shù)的方法,在此不再詳細贅述。
下面以已輸入的字符占用的行數(shù)為一行,并且已輸入的字符中第一個字符位于所有字符的最左側(cè)為例,說明本發(fā)明實施例確定視圖顯示位置的方法整體流程。
如圖8所示,本發(fā)明實施例確定視圖顯示位置的方法包括:
步驟801、判斷目標視圖是否位于可見區(qū)域;若是,執(zhí)行步驟802,若否,執(zhí)行步驟803;
步驟802、判斷目標視圖中已輸入的字符個數(shù)是否大于所述目標視圖能夠顯示的最大字符數(shù);若是,執(zhí)行步驟804,若否,執(zhí)行步驟803;
步驟803、流程結(jié)束;
步驟804、根據(jù)已輸入的字符的個數(shù)與所述目標視圖能夠顯示的最大字符數(shù)的差值,以及每個字符的寬度,確定所述目標視圖的當(dāng)前位置與所述參考視圖的位置在水平方向上的偏移量;
步驟805、將參考視圖的左側(cè)邊界向右平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置;
步驟806、根據(jù)所述目標視圖的當(dāng)前位置與所述可見區(qū)域的位置,確定所述目標視圖的顯示位置。
基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種確定視圖顯示位置的設(shè)備,由于該設(shè)備解決問題的原理與本發(fā)明實施例確定視圖顯示位置的方法相似,因此該設(shè)備的實施可以參見方法的實施,重復(fù)之處不再贅述。
如圖9所示,本發(fā)明實施例確定視圖顯示位置的設(shè)備,包括:
確定模塊901,用于若確定目標視圖位于可見區(qū)域之外,并且所述目標視圖中已輸入的字符個數(shù)大于所述目標視圖能夠顯示的最大字符數(shù),則根據(jù)已輸入的字符和所述參考視圖的位置,確定目標視圖的當(dāng)前位置,其中所述參考視圖的位置是根據(jù)已輸入的字符確定的,且所述參考視圖的面積大于所述目標視圖的面積;
處理模塊902,用于根據(jù)所述目標視圖的當(dāng)前位置與所述可見區(qū)域的位置,確定所述目標視圖的顯示位置。
可選的,所述確定模塊901,具體用于:
確定已輸入的字符占用的行數(shù);根據(jù)所述行數(shù)、已輸入的字符的個數(shù)、所述目標視圖能夠顯示的最大字符數(shù),以及所述參考視圖的位置,確定所述目標視圖的當(dāng)前位置。
可選的,所述確定模塊901,具體用于:
若所述行數(shù)為一行,則根據(jù)下列方式確定所述目標視圖的當(dāng)前位置:
根據(jù)已輸入的字符的個數(shù)與所述目標視圖能夠顯示的最大字符數(shù)的差值,以及每個字符的寬度,確定所述目標視圖的當(dāng)前位置與所述參考視圖的位置在水平方向上的偏移量;根據(jù)所述水平方向上的偏移量,以及所述參考視圖的位置,確定所述目標視圖的當(dāng)前位置。
可選的,所述確定模塊901,具體用于::
若所述已輸入的字符中第一個字符位于所有字符的最左側(cè),則將所述參考視圖的左側(cè)邊界向右平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置;或
若所述已輸入的字符中第一個字符位于所有字符的最右側(cè),則將所述參考視圖的右側(cè)邊界向左平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置。
可選的,所述確定模塊901,具體用于:
若所述行數(shù)多于一行,則根據(jù)下列方式確定所述目標視圖的當(dāng)前位置:
根據(jù)所述行數(shù),以及每個字符的高度,確定所述目標視圖的當(dāng)前位置與所述參考視圖的位置在垂直方向上的偏移量;根據(jù)所述垂直方向上的偏移量,以及所述參考視圖的位置,確定所述目標視圖的當(dāng)前位置。
可選的,所述確定模塊901,具體用于:
若所述已輸入的字符中第一個字符位于從上到下順序的第一行,則將所述參考視圖的上方邊界向下平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置;或
若所述已輸入的字符中第一個字符位于從下到上順序的第一行,則將所述參考視圖的下方邊界向上平移所述偏移量,將平移后的參考視圖的位置作為所述目標視圖的當(dāng)前位置。
以上參照示出根據(jù)本申請實施例的方法、裝置(系統(tǒng))和/或計算機程序產(chǎn)品的框圖和/或流程圖描述本申請。應(yīng)理解,可以通過計算機程序指令來實現(xiàn)框圖和/或流程圖示圖的一個塊以及框圖和/或流程圖示圖的塊的組合??梢詫⑦@些計算機程序指令提供給通用計算機、專用計算機的處理器和/或其它可編程數(shù)據(jù)處理裝置,以產(chǎn)生機器,使得經(jīng)由計算機處理器和/或其它可編程數(shù)據(jù)處理裝置執(zhí)行的指令創(chuàng)建用于實現(xiàn)框圖和/或流程圖塊中所指定的功能/動作的方法。
相應(yīng)地,還可以用硬件和/或軟件(包括固件、駐留軟件、微碼等)來實施本申請。更進一步地,本申請可以采取計算機可使用或計算機可讀存儲介質(zhì)上的計算機程序產(chǎn)品的形式,其具有在介質(zhì)中實現(xiàn)的計算機可使用或計算機可讀程序代碼,以由指令執(zhí)行系統(tǒng)來使用或結(jié)合指令執(zhí)行系統(tǒng)而使用。在本申請上下文中,計算機可使用或計算機可讀介質(zhì)可以是任意介質(zhì),其可以包含、存儲、通信、傳輸、或傳送程序,以由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用,或結(jié)合指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。