本發明涉及計算機技術領域,具體涉及toast顯示方法及裝置。
背景技術:
toast是android中的一種簡易的消息提示框。當視圖顯示給用戶,在應用程序中顯示為浮動。toast永遠不會獲得焦點,無法被點擊。toast類的思想就是盡可能不引人注意,同時還向用戶顯示信息,希望他們看到。而且toast顯示的時間有限,toast會根據用戶設置的顯示時間后自動消失。
在android開發過程中,經常會使用到toast來給出提示信息,但是在android中的默認toast的顏值和樣式完全一樣,這樣用戶就只能夠通過toast中的具體內容來區分toast的相關信息了。但是由于toast提示一定時間后就會消失了,此時用戶在線觀察時就無法繼續對該信息進行觀察,這樣就容易錯過一些重要信息。
技術實現要素:
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的toast顯示方法及裝置。
依據本發明的一個方面,提供一種toast顯示方法,包括:獲取并分析當前待顯示toast信息的內容;根據所述toast信息的內容,確定當前待顯示toast信息的重要性級別;針對當前待顯示toast信息的重要性級別,調用該重要性級別對應的展示函數,從而顯示toast信息,其中,預先為不同重要性級別的toast信息設置不同的展示函數,使得不同重要性級別的toast信息展示效果不同。
優選的,所述根據所述toast信息的內容,確定當前待顯示toast信息的重要性級別,包括:根據所述toast信息,解析出所述toast信息的內容為一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容;根據一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容,確定toast信息對應的重要性級別;其中,設置一般顯示內容、日志內容、警告內容、成功提示內容和失敗提示內容所對應的toast信息的重要性級別由低到高。
優選的,所述預先為不同重要性級別的toast信息設置不同的展示函數包括:基于toast類,分別為不同重要性級別的toast信息設置展示函數,其中,展示函數中包括表示toast信息的重要性級別參數、系統上下文參數、顯示內容文本參數、顯示時間長度參數,和/或,是否展示圖標信息參數。
優選的,還包括:在顯示toast信息之前,根據所述是否展示圖標信息參數,判斷是否需要展示圖標信息;如果需要,通過預先設置的展示圖標接口調用圖標文件,從而在顯示toast信息時,一并對圖標信息進行展示。
優選的,通過以下方式,使得所述不同重要性級別的toast信息展示效果不同:針對不同重要性級別的toast信息,采用不同的背景顏色和/或富文本信息進行區別性展示。
根據本發明的另一個方面,提供一種toast顯示裝置,包括:內容獲取單元,用于獲取并分析當前待顯示toast信息的內容;級別確定單元,用于根據所述toast信息的內容,確定當前待顯示toast信息的重要性級別;預先設置單元,用于預先為不同重要性級別的toast信息設置不同的展示函數,使得不同重要性級別的toast信息展示效果不同;顯示單元,用于針對當前待顯示toast信息的重要性級別,調用該重要性級別對應的展示函數,從而顯示toast信息。
優選的,所述級別確定單元具體用于:根據所述toast信息,解析出所述toast信息的內容為一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容;根據一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容,確定toast信息對應的重要性級別;其中,設置一般顯示內容、日志內容、警告內容、成功提示內容和失敗提示內容所對應的toast信息的重要性級別由低到高。
優選的,所述預先設置單元具體用于:基于toast類,分別為不同重要性級別的toast信息設置展示函數,其中,展示函數中包括表示toast信息的重要性級別參數、系統上下文參數、顯示內容文本參數、顯示時間長度參數,和/或,是否展示圖標信息參數。
優選的,還包括:圖標顯示控制單元,用于在顯示toast信息之前,根據所述是否展示圖標信息參數,判斷是否需要展示圖標信息;如果需要,通過預先設置的展示圖標接口調用圖標文件,從而在顯示toast信息時,一并對圖標信息進行展示。
優選的,所述顯示單元具體用于,針對不同重要性級別的toast信息,采用不同的背景顏色和/或富文本信息進行區別性展示,使得所述不同重要性級別的toast信息展示效果不同。
可見,本發明提供的toast顯示方法中,將toast信息進行重要性級別劃分(例如info、normal、warning、success、error),這樣就能夠針對不同級別的toast調用不同級別的展示函數用于展示相關toast信息了。不同級別的toast的展示效果是不一樣的,這樣能夠方便區分不同重要性的信息。
在一個優選方式中,針對toast信息的不同級別使用了不同的顏色作為背景,這樣能方便用戶更加醒目的定位toast信息。
在一個優選方式中,本發明在構建的展示函數中增加了一個是否展示圖標的接口,這樣在展示toast信息時能夠選擇性的展示或者不展示圖標信息。由此極大的豐富了toast的展示內容的豐富性,比系統toast具有更豐富的展示效果。
上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。
附圖說明
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據本發明的一個實施例提供的toast顯示方法流程圖;
圖2示出了根據本發明一個實施例提供的toast實現方法流程圖;
圖3示出了根據本發明的一個實施例提供的toast顯示裝置結構示意圖;
圖4示出了根據本發明一個實施例提供的toast實現裝置結構示意圖;
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
本發明針對原生toast提示不友好的問題進行了改進,針對toast信息的級別進行了劃分,并對不同重要性級別的toast信息進行區別展示,例如使用不同的顏色作為背景,這樣能夠對不同等級的消息使用不同的方式來進行展示,也方便更加醒目的定位toast信息。為了提升toast功能,原生的toast僅僅支持文本數據的展示,本發明實現的toast顯示方法的一種優選方式中,相比系統功能的toast更為強大的是支持富文本,也就是文字圖片等信息的展示。
參見圖1,為本發明實施例提供的一種toast顯示方法,該方法包括步驟s101-s103。下面對各個步驟進行詳細介紹。
s101:獲取并分析當前待顯示toast信息的內容。
首先介紹系統原生的toast的調用情況如下:
toast.maketext(getapplicationcontext(),"原生toast",toast.length_short).show();
該函數的解釋如下:
toast是android系統提供的一個專門用來顯示toast的工具類,該工具類主要是用于展示toast使用。maketext表示創建一個toast需要顯示的text(文本元素),getapplicationcontext()表示的是系統的上下文,創建文本元素(maketext)必要的一個參數,"原生toast"表示需要展示的具體文本信息內容。toast.length_short表示顯示的時間長度,toast.length_short是一個常量此處表示的是2秒鐘。最后觸發show()這個函數,用來將toast的內容展示在屏幕上。
可見,步驟s101中“獲取并分析當前待顯示toast信息的內容”,即是對上述調用函數進行解析并得到其中的"原生toast"(表示需要展示的具體文本信息內容),從而確定toast信息的內容。
s102:根據toast信息的內容,確定當前待顯示toast信息的重要性級別。
經過分析發現,toast信息的內容主要包括五大類,分別是一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容;因此,本發明中,可根據一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容,確定toast信息對應的重要性級別;其中,設置一般顯示內容、日志內容、警告內容、成功提示內容和失敗提示內容所對應的toast信息的重要性級別由低到高。
對于上述五類內容,本發明表示如下:
info:一般顯示的最低級的內容,也就是可有可無的內容。
normal:常見的日志內容,最常用的一種類型。
warning:顯示警告內容,通常是需要引起關注,但是有不至于導致系統掛掉的內容。
success:表示成功信息輸出。
error:表示錯誤信息輸出。
為了針對不同的重要性等級對toast信息進行劃分,本發明例如采取如下的等級關系:
info<normal<warning<success<error
根據不同的等級關系,后續會采用不同的背景顏色來進行區分,以便達到不同的警示效果的目的。
s103:針對當前待顯示toast信息的重要性級別,調用該重要性級別對應的展示函數,從而顯示toast信息,其中,預先為不同重要性級別的toast信息設置不同的展示函數,使得不同重要性級別的toast信息展示效果不同。
具體的,預先為不同重要性級別的toast信息設置不同的展示函數的過程包括:基于toast類,分別為不同重要性級別的toast信息設置展示函數,其中,展示函數中包括表示toast信息的重要性級別參數、系統上下文參數、顯示內容文本參數、顯示時間長度參數,和/或,是否展示圖標信息參數。
在具體實現中,可通過下述方式,使得不同重要性級別的toast信息展示效果不同:針對不同重要性級別的toast信息,采用不同的背景顏色和/或富文本信息進行區別性展示。
進一步,可根據“是否展示圖標信息參數”,還執行如下步驟:在顯示toast信息之前,根據是否展示圖標信息參數,判斷是否需要展示圖標信息;如果需要,通過預先設置的展示圖標接口調用圖標文件,從而在顯示toast信息時,一并對圖標信息進行展示。
例如,以上述info、normal、warning、success、error五個類型的toast信息,分別構建的toast展示函數如下:
mytoast.info(getapplicationcontext(),"infotoast.",toast.length_short,true).show();
mytoast.normal(getapplicationcontext(),"normaltoast.",toast.length_short,true).show();
mytoast.warning(getapplicationcontext(),"warningtoast.",toast.length_short,true).show();
mytoast.success(getapplicationcontext(),"successtoast.",toast.length_short,true).show();
mytoast.error(getapplicationcontext(),"errortoast.",toast.length_short,true).show();
由于針對不同級別的toast展示函數的分類大體相同,接下來以info類型的toast展示函數來舉例說明該函數的參數的含義(其他函數于此函數的設計類似):
mytoast.info(getapplicationcontext(),"infotoast.",toast.length_short,true).show();
這個函數中,mytoast表示本發明構建的toast類,其中info表示的是info級別的toast級別輸出信息。不同級別的輸出信息使用的是不同級別的輸出函數。getapplicationcontext()表示的是系統的上下文,構建界面元素必要的一個參數,"infotoast."表示需要展示的具體文本信息內容。toast.length_short表示顯示的時間長度,toast.length_short是一個常量(例如此處表示的是2秒鐘)。true表示是否需要展示圖標文件,true表示需要展示,false表示不需要展示圖標。最后觸發show()這個函數,用來將info級別的toast的內容展示在屏幕上。
其他級別的展示函數的參數含義于此相同,此處不再對其他函數中的參數的含義進一步贅述。
可見,本發明提供的toast顯示方法中,將toast信息進行重要性級別劃分(例如info、normal、warning、success、error),這樣就能夠針對不同級別的toast調用不同級別的展示函數用于展示相關toast信息了。不同級別的toast的展示效果是不一樣的,這樣能夠方便區分不同重要性的信息。
在一個優選方式中,針對toast信息的不同級別使用了不同的顏色作為背景,這樣能方便用戶更加醒目的定位toast信息。
在一個優選方式中,本發明在構建的展示函數(例如上述mytoast系列函數)中增加了一個是否展示圖標的接口,這樣在展示toast信息時能夠選擇性的展示或者不展示圖標信息。由此極大的豐富了toast的展示內容的豐富性,比系統toast具有更豐富的展示效果。
此外,本發明還提供一種toast的實現方法,從底層如何實現toast角度進行描述。
參見圖2,為toast的實現方法的流程圖,包括:
s201:創建toast構造函數;
s202:根據預置的toast重要性級別,確定toast重要性級別對應的展示函數,通過展示函數調用toast構造函數,得到構造函數中的toast信息;
其中,預先為不同重要性級別的toast信息設置不同的展示函數,使得不同重要性級別的toast信息展示效果不同。
在一個優選方式中,創建toast構造函數的過程包括:
步驟a:初始化toast構造函數,得到當前toast對象;
步驟b:設置toast屬性;
步驟c:將toast屬性關聯到當前toast對象,完成toast構造函數的創建。
在一個優選方式中,設置toast屬性主要是指導入布局文件以及設置文字顏色或內容等。因此,設置toast屬性可進一步包括:導入布局文件,以及,設置文字顏色和內容等。
其中,導入布局文件的具體過程可以為:獲取系統的布局管理類;調用布局管理類中的inflat方法加載布局文件到內存中,其中,布局文件包括圖形控件和文本控件;通過視圖查找函數,確定圖形控件和文本控件所對應的toast圖標和文本。
在一個優選方式中,toast構造函數中包含是否展示背景圖片參數,通過該參數可確定是否需要進行背景圖片展示。可見,此時還包括步驟:通過是否展示背景圖片參數判斷是否需要進行背景圖片展示,如果需要,調用背景設置函數設置toast的背景信息。
下面以一個具體例子對toast的實現方法進行示例性說明。
由于mytoast系列展示函數的實現流程是大體類似的,所以本發明具體針對info展示函數來進行詳細的描述,其他函數的實現手段與info實現的手段類似。
首先介紹info展示函數的內部實現邏輯如下:
通過上述函數可以發現,info級別toast展示函數的真正實現是調用一個構造函數(例如custom函數)來構造需要的toast的,然后將構造好的toast進行返回。
接下來重點描述自定義custom是如何實現的,描述custom函數是如何實現之前,先描述custom函數的定義如下:
publicstatictoastcustom(contexcontext,stringmessage,drawableicon,inttextcolor,intbgcolor,intduration,booleanwithicon);
其中:
context:表示上下文對象,構建界面元素時需要使用到的對象。
message:表示info需要展示的具體的內容信息。
icon:表示展示需要顯示的圖片信息。
textcolor:表示info中文字的顏色信息。
bgcolor:表示的是info中的背景顏色信息。
withicon:是否展示圖標信息。
publicstatictoast:表示custom函數返回的是一個toast類。
通過上述描述可以了解custom函數的定義,接下來就來詳細描述一下custom函數內部的具體實現邏輯。
與現有通過custom函數實現toast展示組件不同的是,現有的方式只能簡單使用而不能實現定制化,而本發明方案使用的是經過定制化并且分級別的toast。
1、通過toast的構造函數(例如finaltoastcurrenttoast=newtoast(context))來構建需要最終生成的currenttoast對象。
2、由于本發明toast的ui是自定義的,所以需要通過java代碼導入布局文件信息并將布局文件和java代碼建立引用關系。
2.1、通過contex獲得系統的布局器管理類,具體是調用context.getsystemservice(context.layout_inflater_service))這個系統函數來獲取到布局管理類layoutinflater。
2.2、調用布局管理類layoutinflater中的inflat方法來加載布局文件到內存中,具體是通過inflate(r.layout.toast_layout),其中r.layout.toast_layout是自定義好的toast的布局展示文件。該文件中僅僅包含一個imageview(圖形控件)和一個textview(文本控件)。
2.3、通過findviewbyid函數找到r.layout.toast_layout其中對應的imageview和對應的textview控件,具體是調用finalimageviewtoasticon=(imageview)toastlayout.findviewbyid(r.id.toast_icon)和finaltextviewtoasttextview=(textview)toastlayout.findviewbyid(r.id.toast_text)來獲取的。通過findviewbyid,就獲取到了r.layout.toast_layout中的imageview和textview所對應的引用toasticon和toasttextview。
3、判斷是否需要展示圖片,具體是通過if語句來進行判斷的。if(withicon)如果需要展示圖片,就需要加載背景圖片。如果不需要展示圖片,就進入下一步操作。
3.1、針對需要展示背景信息的情況:需要調用setbackground函數來設置toast對應的背景信息。具體的實現是setbackground(getdrawable(r.color.bgcolor)),這樣我們就將預設的bgcolor設置上去了。
3.2、針對不需要展示背景信息的情況:直接進入下一步的操作,此處就不用調用setbackground函數來設置背景相關信息了。
4、設置文字顏色和文字內容。通過步驟2中獲取到的toasttextview調用toasttextview中的settextcolor(textcolor);方法來設置toasttextview對應的文字顏色。通過調用toasttextview中的settext(message);來設置toasttextview對應的文字信息。
5、接下來將構件好的相關toast屬性設置到第一步中創建的currenttoast對象中。具體步驟是調用currenttoast中的setview(toastlayout)將構建好的自定義toast的視圖toastlayout設置到currenttoast中。通過調用currenttoast調用其中的setduration(duration)來設置toastlayout的展示時間。
6、最后將構建好的currenttoast視圖返回出去,這樣就完成了整個自定義toast的構建過程并返回了。
其他級別的toast函數與此類似,僅僅不同的地方就是背景顏色和文字顏色和突變等細微的差異,實現流程大體相同,此處就不再贅述。
與上述圖1方法相對應,本發明實施例還提供一種toast顯示裝置,參見圖3,該toast顯示裝置包括:
內容獲取單元301,用于獲取并分析當前待顯示toast信息的內容;
級別確定單元302,用于根據所述toast信息的內容,確定當前待顯示toast信息的重要性級別;
預先設置單元303,用于預先為不同重要性級別的toast信息設置不同的展示函數,使得不同重要性級別的toast信息展示效果不同;
顯示控制單元304,用于針對當前待顯示toast信息的重要性級別,調用該重要性級別對應的展示函數,從而顯示toast信息。
在一種優選方式中,所述級別確定單元302具體用于:根據所述toast信息,解析出所述toast信息的內容為一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容;根據一般顯示內容、日志內容、警告內容、成功提示內容或失敗提示內容,確定toast信息對應的重要性級別;其中,設置一般顯示內容、日志內容、警告內容、成功提示內容和失敗提示內容所對應的toast信息的重要性級別由低到高。
在一種優選方式中,所述預先設置單元303具體用于:基于toast類,分別為不同重要性級別的toast信息設置展示函數,其中,展示函數中包括表示toast信息的重要性級別參數、系統上下文參數、顯示內容文本參數、顯示時間長度參數,和/或,是否展示圖標信息參數。
在一種優選方式中,還包括:圖標顯示控制單元305,用于在顯示toast信息之前,根據所述是否展示圖標信息參數,判斷是否需要展示圖標信息;如果需要,通過預先設置的展示圖標接口調用圖標文件,從而在顯示toast信息時,一并對圖標信息進行展示。
在一種優選方式中,所述顯示控制單元304具體用于,針對不同重要性級別的toast信息,采用不同的背景顏色和/或富文本信息進行區別性展示,使得所述不同重要性級別的toast信息展示效果不同。
與上述圖2方法相對應,本發明實施例還提供一種toast實現裝置,參見圖4,該toast實現裝置包括:
toast構造函數創建單元401,用于創建toast構造函數;
toast信息輸出單元402,用于根據預置的toast重要性級別,確定toast重要性級別對應的展示函數,通過所述展示函數調用toast構造函數,得到構造函數中的toast信息;
其中,預先為不同重要性級別的toast信息設置不同的展示函數,使得不同重要性級別的toast信息展示效果不同。
在一個優選方式中,toast構造函數創建單元401具體包括:
toast對象生成子單元4011,用于初始化toast構造函數,得到當前toast對象;
toast屬性設置子單元4012:用于設置toast屬性;
關聯子單元4013,用于將toast屬性關聯到當前toast對象,完成toast構造函數的創建。
在一個優選方式中,設置toast屬性主要是指導入布局文件以及設置文字顏色或內容等。因此,toast屬性設置子單元4012可具體用于:導入布局文件,以及,設置文字顏色和內容等。
其中,toast屬性設置子單元4012可通過以下方式導入布局文件:獲取系統的布局管理類;調用布局管理類中的inflat方法加載布局文件到內存中,其中,布局文件包括圖形控件和文本控件;通過視圖查找函數,確定圖形控件和文本控件所對應的toast圖標和文本。
在一個優選方式中,toast構造函數中包含是否展示背景圖片參數,通過該參數可確定是否需要進行背景圖片展示。可見,此時裝置還可包括:背景圖片展示控制單元403,用于通過是否展示背景圖片參數判斷是否需要進行背景圖片展示,如果需要,調用背景設置函數設置toast的背景信息。
在此提供的算法和顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本發明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發明的內容,并且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。
本發明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(dsp)來實現根據本發明實施例的用戶變身控制的系統中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。