Toast实现方法及装置与流程

文档序号:11230134阅读:750来源:国知局
Toast实现方法及装置与流程

本发明涉及计算机技术领域,具体涉及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属性包括:导入布局文件,以及,设置文字颜色和/或内容。

优选的,所述导入布局文件的具体过程为:获取系统的布局管理类;调用布局管理类中的inflat方法加载布局文件到内存中,其中,布局文件包括图形控件和文本控件;通过视图查找函数,确定图形控件和文本控件所对应的toast图标和文本。

优选的,还包括:通过是否展示背景图片参数判断是否需要进行背景图片展示,如果需要,调用背景设置函数设置toast的背景信息。

根据本发明另一个方面,提供一种toast实现装置,包括:toast构造函数创建单元,用于创建toast构造函数;toast信息输出单元,用于根据预置的toast重要性级别,确定toast重要性级别对应的展示函数,通过所述展示函数调用toast构造函数,得到构造函数中的toast信息;其中,预先为不同重要性级别的toast信息设置不同的展示函数,使得不同重要性级别的toast信息展示效果不同。

优选的,toast构造函数创建单元具体包括:toast对象生成子单元,用于初始化toast构造函数,得到当前toast对象;toast属性设置子单元:用于设置toast属性;关联子单元,用于将toast属性关联到当前toast对象,完成toast构造函数的创建。

优选的,所述toast属性设置子单元4012具体用于:导入布局文件,以及,设置文字颜色和内容等。

优选的,所述toast属性设置子单元4012具体用于:获取系统的布局管理类;调用布局管理类中的inflat方法加载布局文件到内存中,其中,布局文件包括图形控件和文本控件;通过视图查找函数,确定图形控件和文本控件所对应的toast图标和文本。

优选的,还包括:背景图片展示控制单元,通过是否展示背景图片参数判断是否需要进行背景图片展示,如果需要,调用背景设置函数设置toast的背景信息。

可见,本发明提供的toast实现方案中,根据预置的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)来实现根据本发明实施例的用户变身控制的系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1