Android 弹无虚发之第五弹:来点儿不一样的Toast(自定义Toast,设置Toast显示位置,自定义Toast的复杂布局)

来源:互联网 发布:成都黑帽seo方案 编辑:程序博客网 时间:2024/05/18 15:27

说起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一般的显示样式就是一段提示文字,其实,我们可以自定义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();

我们可以看到,首先我们解析了一个自定义的xml布局文件,然后通过 setView 这个方法设置给了Toast,但是,在这段代码里,我们需要注意一点,我们在初始化Toast实例的时候,没有使用 makeText 这个方法,而是调用Toast的构造方法,new了一个Toast实例,在这里,我们一定要注意:一般情况下,我们千万不要使用Toast的构造方法去实例化一个Toast,除非我们后续会调用setView这个方法,去自定义Toast的布局,否则,我们还是按照常规的makeText方法来实例化Toast。

除了调用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



0 0
原创粉丝点击