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的显示样式,它既可以显示文字,也可以显示我们设置的图片,以及各种各样复杂的布局。我们通过代码来看看这些事如何实现的:
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
- Android 弹无虚发之第五弹:来点儿不一样的Toast(自定义Toast,设置Toast显示位置,自定义Toast的复杂布局)
- Android自定义Toast,指定Toast信息显示的位置并使用Toast显示其他View
- 自定义toast的布局
- 自定义显示的Toast
- Android 更改 Toast 的默认位置及自定义Toast
- Android:自定义的Toast
- Android自定义Toast取代系统的Toast
- Toast自定义自己的布局
- Android 设置 Toast 的显示位置
- Android 设置 Toast 的显示位置
- Toast显示时间的自定义
- 自定义Toast的显示效果
- Android 设置Toast的位置
- Android之自定义Toast
- Android中Toast显示时间的自定义
- Android中Toast显示时间的自定义
- Android中Toast显示时间的自定义
- Android中Toast显示时间的自定义
- Linux压缩总结
- 树+栈+队列(表达式树)uva11234
- Android Binder -什么是binder
- 安家喽。
- [031] 微信公众帐号开发教程第7篇-文本消息中换行符的使用
- Android 弹无虚发之第五弹:来点儿不一样的Toast(自定义Toast,设置Toast显示位置,自定义Toast的复杂布局)
- [032] 微信公众帐号开发教程第8篇-文本消息中使用网页超链接
- Linux头文件 C/C++头文件
- 铺货率调查执行步骤
- SRM 594 D2L3:PolygonTraversal2,backtrack
- 智能家居刚起步 距物联网概念相去甚远
- Android之android:gravity和android:layout_gravity属性
- android handler
- 充分必要条件