说起Toast,大家一定很熟悉了,常常在网络连接不可用或者完成某个操作后,就会看到在手机屏幕的下方,显示出来一段提示文字,过一会儿又会自动消失。它就是Toast,跟Notification一样,也是一种android的消息提醒机制。经常看到的显示形态如下图:
代码的实现也很简单,如下:
Toast.makeText(this, "大家好,我是Toast", Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.custom_text, Toast.LENGTH_SHORT).show();主要是用到了 makeText这个方法,这个方法传递参数的含义是:
第一个参数,要求引用一个上下文环境,也就是常常用到的Context
第二个参数,是toast将要显示的文字内容,就可以直接在代码内书写具体的字符串,也可以引用字符串文件内的id索引(如同上面代码的两种方式)
第三个参数,是指定Toast在屏幕上显示的时间,数值越大,显示时间越长,一般情况下,会使用Toast自带的两种常量:Toast.LENGTH_SHORT 和 Toast.LENGTH_LONG
最后,不要忘了,要调用show()这个方法啊,否则Toast就显示不出来了。
这是Toast最基本的用法,当然,我们今天要讲的重点肯定不是这些,否则我该被口水给淹死了。我们今天主要讲一下,关于Toast的自定义设置。
就像博客一开头提到的那样,Toast常常显示在屏幕的正下方,但是实际情况是,Toast给我提供了方法,可以自由设置它在屏幕具体显示的位置,比如下面这段代码:
Toast toast = Toast.makeText(this, R.string.custom_text, Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 100); toast.show();首先我们调用 makeText这个方法,初始化了一个Toast实例,然后调用 setGravity这个方法设置toast将要显示的屏幕位置,这个方法传参的含义是:
第一个参数,设定Toast显示位置的锚点,就是Toast这个视图的初始位置。
第二个参数,设定Toast从锚点开始,在屏幕坐标X轴上的偏移量,向右是正数,向左是负数。
第三个参数,设定Toast从锚点开始,在屏幕坐标Y轴上的偏移量,向下时正数,向上市负数。
代码内,我们设置它的锚点是屏幕的左上角,X轴方向偏移为0,Y轴方向,向下偏移100。我们来看看具体的效果图:
是不是跟我们代码的设置是一致的。当然了,我们也可以将Toast设置到屏幕的中心位置显示:
toast.setGravity(Gravity.CENTER, 0, 0);
再接下来,我们来看一下,如何自定义Toast视图。
我们知道,Toast一般的显示样式就是一段提示文字,其实,我们可以自定义Toast的显示样式,它既可以显示文字,也可以显示我们设置的图片,以及各种各样复杂的布局。我们通过代码来看看这些事如何实现的:
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom_toast,null); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show();
除了调用setView 方法来自定义Toast的布局外,我们刚刚讲到的设置Toast的显示位置,依然在这种情况下适用,我们在这里,就将Toast的显示位置设置在了垂直方向的中心点,我再把自定义的xml布局文件贴出来,然后再把自定义的Toast显示效果图贴出来,看看效果如何:
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/toast" android:scaleType="center"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/custom_text" android:textSize="13sp" android:gravity="center" android:paddingTop="15dp"/> </LinearLayout>
这些就是关于自定义Toast的一些介绍,内容很少,也很简单,实际在平时的开发中,也很少用到这些自定义的效果,毕竟把界面弄得花里胡哨的,也不美观啊。不过对于一些特定的应用场景,需要丰富一下画面内容的话,自定义的Toast还是能够派上用场的,比如在情人节的时候,在app的主界面,突然显示出来一大束玫瑰,是不是很浪漫哈~
好了,不多扯了,今天的内容就这么一点点,想必大家一两眼就能够看完了,后面我们继续多分享一些大家常用的功能点,再结合我平时的工作经验,尽可能的细化每篇博客的内容,希望能够帮助到大家。
示例代码的下载地址:http://download.csdn.net/detail/pringlee2011/6975973