Android(安卓)弹无虚发之第五弹:来点儿不一样的Toast(自定义Toast,设置Toast显示位置,自定义Toast的复杂布局)
说起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();
我们可以看到,首先我们解析了一个自定义的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"?>
这些就是关于自定义Toast的一些介绍,内容很少,也很简单,实际在平时的开发中,也很少用到这些自定义的效果,毕竟把界面弄得花里胡哨的,也不美观啊。不过对于一些特定的应用场景,需要丰富一下画面内容的话,自定义的Toast还是能够派上用场的,比如在情人节的时候,在app的主界面,突然显示出来一大束玫瑰,是不是很浪漫哈~
好了,不多扯了,今天的内容就这么一点点,想必大家一两眼就能够看完了,后面我们继续多分享一些大家常用的功能点,再结合我平时的工作经验,尽可能的细化每篇博客的内容,希望能够帮助到大家。
示例代码的下载地址:http://download.csdn.net/detail/pringlee2011/6975973
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Google很快将发布Android(安卓)4.0(冰激凌三明治)源代码
- Intent介绍及Intent在Activity中的使用方法
- Android高手秘笈之View的绘制你应该知道的一切
- Android(安卓)adt v22.6.2 自动创建 appcompat_v7 解决方法,最低
- 关于Android的面试题目汇总
- 在非NDK编译条件下使用Android(安卓)Log函数
- Android前台画面和后台service之间通信的方法之Broadcast(转)
- APK解剖方法