本發(fā)明涉及安卓系統(tǒng)上的應(yīng)用開發(fā)領(lǐng)域,具體是涉及一種安卓應(yīng)用程序顯示消息提示的方法及工具。
背景技術(shù):
:下面先簡單介紹一些與安卓系統(tǒng)的應(yīng)用程序有關(guān)的專業(yè)術(shù)語。窗口:安卓系統(tǒng)的應(yīng)用程序啟動后,安卓系統(tǒng)會為每一個應(yīng)用程序創(chuàng)建一個用來顯示各種頁面的窗口,參見圖1所示,在窗口中的頁面是疊加顯示的,后加入的頁面會覆蓋在先前頁面之上。應(yīng)用程序頁面(Activity):安卓系統(tǒng)的應(yīng)用程序在窗口上顯示出來的各種各樣的頁面。視圖:安卓系統(tǒng)的應(yīng)用程序頁面上排列顯示的各種元素,例如:圖片、文字、線條等。提示消息(Toast):一種在安卓應(yīng)用程序頁面上憑空出現(xiàn)的視圖,一般為一行文字,用以提示使用者某些消息,例如:“再點(diǎn)擊一次按鍵退出應(yīng)用”。安卓系統(tǒng)本身擁有一個提示消息的小工具Toast,使用諸如Toast.makeText(context,“HelloWorld!”,Toast.LENGTH_SHORT).show()這樣的代碼,即可快速在應(yīng)用程序頁面上顯示一個“HelloWorld!”字樣的提示消息,參見圖2所示。但是,這個工具存在以下缺陷:(1)不能自由設(shè)置顯示時間,只有長(3.5秒)和短(2秒)這兩個選項(xiàng);(2)不能自由設(shè)置顯示位置,只能固定在頁面底部;(3)不能與應(yīng)用程序聯(lián)動,如果應(yīng)用程序觸發(fā)了多個消息提示,那么這些消息提示會逐個顯示,不管應(yīng)用程序期間是否已經(jīng)退出。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是為了克服上述
背景技術(shù):
的不足,提供一種安卓應(yīng)用程序顯示消息提示的方法及工具,能夠自由設(shè)置顯示時間、顯示位置,能夠與應(yīng)用程序聯(lián)動,當(dāng)應(yīng)用程序退出時,不管該應(yīng)用程序觸發(fā)了多少個消息提示,都會立刻全部清除并隱藏,不會對用戶使用造成困擾。本發(fā)明提供一種安卓應(yīng)用程序顯示消息提示的方法,包括以下步驟:S1、在安卓系統(tǒng)中劃分存儲區(qū)域,在該存儲區(qū)域中新建用于存放消息提示視圖的內(nèi)部緩存,在該內(nèi)部緩存中創(chuàng)建與待顯示頁面對應(yīng)的消息提示視圖;使用安卓系統(tǒng)自身的窗口管理工具,將與待顯示頁面對應(yīng)的消息提示視圖插入安卓應(yīng)用程序的窗口最上層;S2、從內(nèi)部緩存中取出與待顯示頁面對應(yīng)的消息提示視圖,判斷當(dāng)前頁面上是否已經(jīng)顯示該消息提示視圖,如果已顯示,則調(diào)用該消息提示視圖自身的隱藏函數(shù),將該消息提示視圖隱藏,將消息提示視圖模擬為背景透明的頁面;如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器;S3、將消息提示視圖的內(nèi)容修改為開發(fā)者設(shè)置的待顯示內(nèi)容;S4、調(diào)用安卓系統(tǒng)自身的窗口管理工具,獲得應(yīng)用程序窗口的寬度和高度,然后根據(jù)開發(fā)者指定的方位,確定消息提示視圖的坐標(biāo);S5、調(diào)用消息提示視圖自身的顯示函數(shù),按照坐標(biāo)顯示消息提示視圖;S6、判斷開發(fā)者調(diào)用時指定的顯示時長為有限時長還是無限時長,如果是有限時長,則調(diào)用安卓系統(tǒng)自身的計(jì)時器,創(chuàng)建并啟動一個隱藏倒數(shù)計(jì)時器,倒數(shù)時間為開發(fā)者指定的顯示時長,若倒數(shù)結(jié)束,則轉(zhuǎn)到步驟S7,否則一直停留在本步驟;如果是無限時長,保持停留在本步驟,直到開發(fā)者主動執(zhí)行步驟S8;S7、如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器,轉(zhuǎn)到步驟S8;S8、調(diào)用消息提示視圖自身的隱藏函數(shù),隱藏該消息提示視圖。在上述技術(shù)方案的基礎(chǔ)上,步驟S8之后還包括以下步驟:S9、當(dāng)應(yīng)用程序的某個頁面退出時,跳轉(zhuǎn)并執(zhí)行步驟S7、S8,再清除內(nèi)部緩存中該頁面對應(yīng)的消息提示視圖,頁面退出后,清除消息提示。在上述技術(shù)方案的基礎(chǔ)上,步驟S9之后還包括以下步驟:S10、當(dāng)應(yīng)用程序退出時,清除并銷毀內(nèi)部緩存,應(yīng)用程序退出后,清除消息提示。在上述技術(shù)方案的基礎(chǔ)上,步驟S4中,所述方位包括x軸方位和y軸方位。本發(fā)明還提供一種安卓應(yīng)用程序顯示消息提示的工具,該工具包括初始化單元、第一隱藏單元、視圖內(nèi)容修改單元、視圖坐標(biāo)確定單元、視圖顯示單元、顯示時長判斷單元、第二隱藏單元、第三隱藏單元,其中:初始化單元用于:在安卓系統(tǒng)中劃分存儲區(qū)域,在該存儲區(qū)域中新建用于存放消息提示視圖的內(nèi)部緩存,在該內(nèi)部緩存中創(chuàng)建與待顯示頁面對應(yīng)的消息提示視圖;使用安卓系統(tǒng)自身的窗口管理工具,將與待顯示頁面對應(yīng)的消息提示視圖插入安卓應(yīng)用程序的窗口最上層;第一隱藏單元用于:從內(nèi)部緩存中取出與待顯示頁面對應(yīng)的消息提示視圖,判斷當(dāng)前頁面上是否已經(jīng)顯示該消息提示視圖,如果已顯示,則調(diào)用該消息提示視圖自身的隱藏函數(shù),將該消息提示視圖隱藏,將消息提示視圖模擬為背景透明的頁面;如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器;視圖內(nèi)容修改單元用于:將消息提示視圖的內(nèi)容修改為開發(fā)者設(shè)置的待顯示內(nèi)容;視圖坐標(biāo)確定單元用于:調(diào)用安卓系統(tǒng)自身的窗口管理工具,獲得應(yīng)用程序窗口的寬度和高度,然后根據(jù)開發(fā)者指定的方位,確定消息提示視圖的坐標(biāo);視圖顯示單元用于:調(diào)用消息提示視圖自身的顯示函數(shù),按照坐標(biāo)顯示消息提示視圖;顯示時長判斷單元用于:判斷開發(fā)者調(diào)用時指定的顯示時長為有限時長還是無限時長,如果是有限時長,則調(diào)用安卓系統(tǒng)自身的計(jì)時器,創(chuàng)建并啟動一個隱藏倒數(shù)計(jì)時器,倒數(shù)時間為開發(fā)者指定的顯示時長,若倒數(shù)結(jié)束,則觸發(fā)第二隱藏單元工作,否則一直停留在本步驟;如果是無限時長,保持停留在本步驟,直到開發(fā)者主動調(diào)用第三隱藏單元;第二隱藏單元用于:如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器,觸發(fā)第三隱藏單元工作;第三隱藏單元用于:調(diào)用消息提示視圖自身的隱藏函數(shù),隱藏該消息提示視圖。在上述技術(shù)方案的基礎(chǔ)上,該工具還包括頁面退出單元,所述頁面退出單元用于:當(dāng)應(yīng)用程序的某個頁面退出時,觸發(fā)第二隱藏單元工作、第三隱藏單元,并且清除內(nèi)部緩存中該頁面對應(yīng)的消息提示視圖,頁面退出后,清除消息提示。在上述技術(shù)方案的基礎(chǔ)上,該工具還包括應(yīng)用程序退出單元,所述應(yīng)用程序退出單元用于:當(dāng)應(yīng)用程序退出時,清除并銷毀內(nèi)部緩存,應(yīng)用程序退出后,清除消息提示。在上述技術(shù)方案的基礎(chǔ)上,所述方位包括x軸方位和y軸方位。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:(1)本發(fā)明可以自由設(shè)置消息提示在頁面上的顯示時間,從1秒到無限時間均可。(2)本發(fā)明可以設(shè)置顯示位置,不必固定在頁面底部。(3)本發(fā)明可以與應(yīng)用程序聯(lián)動,當(dāng)應(yīng)用程序退出時,不管該應(yīng)用程序觸發(fā)了多少個消息提示,都會立刻全部清除并隱藏,不會對用戶使用造成困擾。(4)本發(fā)明將消息提示視圖模擬為背景透明的頁面,通過調(diào)用安卓系統(tǒng)自身的窗口管理工具,將模擬頁面插入安卓應(yīng)用程序所有頁面之上,確保該消息內(nèi)容的可見和不可遮擋,可以獨(dú)立運(yùn)行于任何安卓應(yīng)用程序中。附圖說明圖1是安卓系統(tǒng)為應(yīng)用程序創(chuàng)建的用來顯示各種頁面的窗口。圖2是安卓系統(tǒng)在應(yīng)用程序頁面底部顯示提示信息的示意圖。圖3是本發(fā)明實(shí)施例中安卓應(yīng)用程序顯示消息提示的方法的流程圖。圖4是本發(fā)明實(shí)施例中安卓坐標(biāo)系的示意圖。具體實(shí)施方式下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。本發(fā)明實(shí)施例提供一種安卓應(yīng)用程序顯示消息提示的方法,包括以下步驟:S1、在安卓系統(tǒng)中劃分一塊存儲區(qū)域,在該存儲區(qū)域中新建一個用于存放消息提示視圖的內(nèi)部緩存,在該內(nèi)部緩存中創(chuàng)建一個與待顯示頁面對應(yīng)的消息提示視圖;使用安卓系統(tǒng)自身的窗口管理工具,將與待顯示頁面對應(yīng)的消息提示視圖插入安卓應(yīng)用程序的窗口最上層;S2、從內(nèi)部緩存中取出與待顯示頁面對應(yīng)的消息提示視圖,判斷當(dāng)前頁面上是否已經(jīng)顯示該消息提示視圖,如果已顯示,則調(diào)用該消息提示視圖自身的隱藏函數(shù),將該消息提示視圖隱藏,將消息提示視圖模擬為背景透明的頁面;如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器;S3、將消息提示視圖的內(nèi)容修改為開發(fā)者設(shè)置的待顯示內(nèi)容;S4、調(diào)用安卓系統(tǒng)自身的窗口管理工具,獲得應(yīng)用程序窗口的寬度和高度,然后根據(jù)開發(fā)者指定的x軸方位和y軸方位,確定消息提示視圖的坐標(biāo);S5、調(diào)用消息提示視圖自身的顯示函數(shù),按照坐標(biāo)顯示消息提示視圖;S6、判斷開發(fā)者調(diào)用時指定的顯示時長為有限時長還是無限時長,如果是有限時長,則調(diào)用安卓系統(tǒng)自身的計(jì)時器,創(chuàng)建并啟動一個隱藏倒數(shù)計(jì)時器,倒數(shù)時間為開發(fā)者指定的顯示時長,若倒數(shù)結(jié)束,則轉(zhuǎn)到步驟S7,否則一直停留在本步驟;如果是無限時長,保持停留在本步驟,直到開發(fā)者主動執(zhí)行步驟S8;S7、如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器,轉(zhuǎn)到步驟S8;S8、調(diào)用消息提示視圖自身的隱藏函數(shù),隱藏該消息提示視圖;S9、當(dāng)應(yīng)用程序的某個頁面退出時,跳轉(zhuǎn)并執(zhí)行步驟S7、S8,再清除內(nèi)部緩存中該頁面對應(yīng)的消息提示視圖,頁面退出后,清除消息提示;S10、當(dāng)應(yīng)用程序退出時,清除并銷毀內(nèi)部緩存,應(yīng)用程序退出后,清除消息提示。本發(fā)明實(shí)施例還提供一種安卓應(yīng)用程序顯示消息提示的工具,該工具包括包括初始化單元、第一隱藏單元、視圖內(nèi)容修改單元、視圖坐標(biāo)確定單元、視圖顯示單元、顯示時長判斷單元、第二隱藏單元、第三隱藏單元、頁面退出單元、應(yīng)用程序退出單元,其中:初始化單元用于:在安卓系統(tǒng)中劃分一塊存儲區(qū)域,在該存儲區(qū)域中新建一個用于存放消息提示視圖的內(nèi)部緩存,在該內(nèi)部緩存中創(chuàng)建一個與待顯示頁面對應(yīng)的消息提示視圖;使用安卓系統(tǒng)自身的窗口管理工具,將與待顯示頁面對應(yīng)的消息提示視圖插入安卓應(yīng)用程序的窗口最上層;第一隱藏單元用于:從內(nèi)部緩存中取出與待顯示頁面對應(yīng)的消息提示視圖,判斷當(dāng)前頁面上是否已經(jīng)顯示該消息提示視圖,如果已顯示,則調(diào)用該消息提示視圖自身的隱藏函數(shù),將該消息提示視圖隱藏,將消息提示視圖模擬為背景透明的頁面;如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器;視圖內(nèi)容修改單元用于:將消息提示視圖的內(nèi)容修改為開發(fā)者設(shè)置的待顯示內(nèi)容;視圖坐標(biāo)確定單元用于:調(diào)用安卓系統(tǒng)自身的窗口管理工具,獲得應(yīng)用程序窗口的寬度和高度,然后根據(jù)開發(fā)者指定的x軸方位和y軸方位,確定消息提示視圖的坐標(biāo);視圖顯示單元用于:調(diào)用消息提示視圖自身的顯示函數(shù),按照坐標(biāo)顯示消息提示視圖;顯示時長判斷單元用于:判斷開發(fā)者調(diào)用時指定的顯示時長為有限時長還是無限時長,如果是有限時長,則調(diào)用安卓系統(tǒng)自身的計(jì)時器,創(chuàng)建并啟動一個隱藏倒數(shù)計(jì)時器,倒數(shù)時間為開發(fā)者指定的顯示時長,若倒數(shù)結(jié)束,則觸發(fā)第二隱藏單元工作,否則一直停留在本步驟;如果是無限時長,保持停留在本步驟,直到開發(fā)者主動調(diào)用第三隱藏單元;第二隱藏單元用于:如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀隱藏倒數(shù)計(jì)時器,觸發(fā)第三隱藏單元工作;第三隱藏單元用于:調(diào)用消息提示視圖自身的隱藏函數(shù),隱藏該消息提示視圖;頁面退出單元用于:當(dāng)應(yīng)用程序的某個頁面退出時,觸發(fā)第二隱藏單元工作、第三隱藏單元,并且清除內(nèi)部緩存中該頁面對應(yīng)的消息提示視圖,頁面退出后,清除消息提示;應(yīng)用程序退出單元用于:當(dāng)應(yīng)用程序退出時,清除并銷毀內(nèi)部緩存,應(yīng)用程序退出后,清除消息提示。本發(fā)明實(shí)施例將消息提示視圖模擬為背景透明的頁面,通過調(diào)用安卓系統(tǒng)自身的窗口管理工具,將模擬頁面插入安卓應(yīng)用程序所有頁面之上,確保該消息內(nèi)容的可見和不可遮擋。下面通過一個具體開發(fā)案例來進(jìn)行詳細(xì)說明。當(dāng)開發(fā)者在一個頁面中調(diào)用本工具后,假設(shè)開發(fā)者指定了顯示位置(屏幕正中間)和消息內(nèi)容“HelloWorld!”,運(yùn)行流程如下,參見圖3所示:1.初始化工具:顯示在應(yīng)用程序頁面(Activity)上的消息提示,本質(zhì)上是一個視圖(View),里面存在文本(TextView)和圖片(ImageView),每一個頁面都有一個獨(dú)立的消息提示視圖,存放于緩存中(WeakHashMap)。判斷本工具內(nèi)部是否存在消息提示視圖的緩存,如果不存在,則新建一個緩存;緩存中是否存在該頁面的消息提示視圖,如果不存在,則創(chuàng)建一個與該頁面對應(yīng)的消息提示視圖;使用安卓系統(tǒng)自身的窗口管理工具(WindowManager),將該消息視圖插入該應(yīng)用程序的窗口最上層(WindowManager.addView()),同時存入本工具內(nèi)部的緩存。2.從緩存中取出與該頁面對應(yīng)的消息提示視圖,判斷這個消息提示視圖是否已經(jīng)顯示在頁面上,如果已顯示(View.getVisibility()==View.VISIBLE),則調(diào)用其自身的隱藏函數(shù)(View.setVisibility(View.GONE)),將其隱藏;如果隱藏倒數(shù)計(jì)時器存在(Runnable),則關(guān)閉并銷毀它(Handler.removeCallbacks(Runnable))。3.將該消息提示視圖的內(nèi)容(文字或圖片)修改為開發(fā)者設(shè)置的待顯示內(nèi)容。例如:“HelloWorld!”文字,對于文字內(nèi)容,使用TextView.setText()設(shè)置;對于圖片內(nèi)容,使用ImageView.setImageURI()設(shè)置。4.計(jì)算顯示位置,開發(fā)者可以指定具體坐標(biāo)或方位:a)具體坐標(biāo):本工具直接調(diào)用消息提示視圖自身的坐標(biāo)函數(shù)View.setX()和View.setY(),將開發(fā)者指定的坐標(biāo)x和y分別賦予該視圖b)方位:安卓系統(tǒng)使用笛卡爾坐標(biāo),屏幕左上角為原點(diǎn)(0,0),參見圖4所示,方位分為x軸方位和y軸方位,其中,x軸方位有3種描述:左、中、右,y軸方位有3種描述:上、中、下。本工具會調(diào)用系統(tǒng)自身的窗口管理工具,獲得該應(yīng)用程序窗口的寬度和高度(單位為像素),分別即為width和height,然后根據(jù)開發(fā)者指定的x軸方位和y軸方位,確定該消息提示視圖的坐標(biāo)。組合描述參見表1所示:表1、消息提示視圖的坐標(biāo)的組合描述x軸左x軸中x軸右y軸上(0,0)(width/2,0)(width,0)y軸中(0,height/2)(width/2,height/2)(width,height/2)y軸下(0,height)(width/2,height)(width,height)本工具根據(jù)表格中的組合設(shè)置該消息提示視圖的坐標(biāo),例如,開發(fā)者指定了方位(x軸左,y軸中),則根據(jù)表格,將x坐標(biāo)0、y坐標(biāo)height/2賦予該視圖。5.調(diào)用該消息提示視圖自身的顯示函數(shù),例如:View.setVisibility(View.VISIBLE),將其顯示出來。6.判斷開發(fā)者調(diào)用時指定的顯示時長:a)有限時長(正整數(shù)):調(diào)用系統(tǒng)自身的計(jì)時器功能,創(chuàng)建并啟動一個隱藏倒數(shù)計(jì)時器(Runable/Handler.postDelayed(Runnable,duration)),倒數(shù)時間為開發(fā)者指定的顯示時長,若倒數(shù)結(jié)束,則跳轉(zhuǎn)至步驟7,否則一直停留在本步驟;b)無限時長(負(fù)數(shù)):保持停留在本步驟,直到開發(fā)者主動調(diào)用步驟8;7.如果隱藏倒數(shù)計(jì)時器存在,則關(guān)閉并銷毀它,例如:Handler.removeCallbacks(Runnable)。8.調(diào)用該消息提示視圖自身的隱藏函數(shù),例如:View.setVisibility(View.GONE),隱藏該視圖。9.當(dāng)應(yīng)用程序某個頁面退出時,本工具會立刻執(zhí)行上述步驟的第7、8步驟,并且清除內(nèi)部緩存中該頁面對應(yīng)的消息提示視圖,例如:WeakHashMap.remove(View),達(dá)到頁面退出后立刻清除消息提示;10.當(dāng)應(yīng)用程序退出時,本工具會立刻清除并銷毀工具內(nèi)部緩存(WeakHashMap.clear()),達(dá)到應(yīng)用程序退出后立刻清除消息提示。本領(lǐng)域的技術(shù)人員可以對本發(fā)明實(shí)施例進(jìn)行各種修改和變型,倘若這些修改和變型在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。說明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。當(dāng)前第1頁1 2 3