Android开发Toast Notifications 
关键类 
Toast 
toast通知是一种在窗口表面弹出的消息。它只占用信息显示所需的空间,用户当前的activity仍保持可见并可交互。该通知自动实现淡入淡出,且不接受人机交互事件。 
以下截图展示了闹钟程序的toast通知示例。一旦闹钟被打开,就会显示一条toast作为对设置的确认。 
toast能被Activity 或Service创建并显示。如果由Service创建,则toast会显示在当前已获得焦点的Activity前面。 
如果需要用户对通知进行响应,可以考虑使用Status Bar Notification。 
基础知识 
首先,用某个makeText()方法来实例化一个Toast对象。该方法有三个参数:应用程序上下文Context、文本信息和toast的持续显示时间。它将返回一个已正确初始化的Toast对象。可以用show()方法来显示该toast通知,示例如下: 
1. Context context = getApplicationContext();

2. CharSequence text = "Hello toast!";

3. int duration = Toast.LENGTH_SHORT; 
4. Toast toast = Toast.makeText(context, text, duration);

5. toast.show();

复制代码 
上例演示了大部分toast通知需要的所有内容,应该不大会需要用到其他内容了。不过,你也许想在其他位置显示toast或是要用自己的布局替换默认相对简单的文本消息,下一节将描述如何完成。 
还可以将多个方法链接起来写,以避免持久化Toast对象,就像这样: 
1. Toast.makeText(context, text, duration).show(); 
复制代码 
定位Toast 
标准的toast通知左右居中地显示在屏幕底部附近。可以通过setGravity(int, int, int)方法来改变显示位置。它接受三个参数:重力常量常数Gravity,X方向偏移和Y方向偏移。 
例如,如果决定把toast置于左上角,可以这样设置重力常数: 
1. toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0); 
复制代码 
如果想让位置向右移,就增加第二个参数的值;要向下移,就增加最后一个参数的值。 
如果不满足于简单的文本消息,还可以为toast通知创建一个自定义布局。要创建自定义布局,需要用XML或程序代码定义一个View布局,然后把根View对象传给setView(View)方法。 
例如,可以用以下的XML(保存为toast_layout.xml)创建出右边截图中所示的布局: 
1. <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"

2.               android:id="@+id/toast_layout_root"

3.               android:orientation="horizontal"

4.               android:layout_width="fill_parent"

5.               android:layout_height="fill_parent"

6.               android:padding="10dp"

7.               android:background="#DAAA"

8.               >

9.     <imageview android:id="@+id/image" 
10.                android:layout_width="wrap_content"

11.                android:layout_height="fill_parent"

12.                android:layout_marginRight="10dp"

13.                /> 
14.     <textview android:id="@+id/text" 
15.               android:layout_width="wrap_content"

16.               android:layout_height="fill_parent"

17.               android:textColor="#FFF"

18.               /> 
复制代码 
注意,LinearLayout元素的ID是“toast_layout”。必须用这个ID从XML中解析出布局,如下: 
1. LayoutInflater inflater = getLayoutInflater();

2. View layout = inflater.inflate(R.layout.toast_layout, 
3.                                (ViewGroup) findViewById(R.id.toast_layout_root));

4.   
5. ImageView image = (ImageView) layout.findViewById(R.id.image);

6. image.setImageResource(R.drawable.android); 
7. TextView text = (TextView) layout.findViewById(R.id.text);

8. text.setText("Hello! This is a custom toast!");

9.   
10. Toast toast = new Toast(getApplicationContext());

11. toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

12. toast.setDuration(Toast.LENGTH_LONG);

13. toast.setView(layout);

14. toast.show() 
复制代码 
首先,用getLayoutInflater()(或getSystemService())来读取LayoutInflater,然后用inflate(int, ViewGroup)将布局(layout)从XML中解析出来。第一个参数是layout资源ID,第二个参数是根View。

可以用解析出来的layout获取其他View对象,之后获取并定义ImageView和TextView元素的内容。最后,用Toast(Context)创建一个新的toast,设置一些属性如gravity和duration等。然后调用setView(View)并将解析出的layout传入。现在就可以调用show()来显示自定义布局的toast了。 
注意:除非想用setView(View)来定义布局,否则不要用公共构造方法来构造Toast。如果没有可用的自定义布局,则必须使用makeText(Context, int, int)来创建Toast。

Android开发Toast Notifications的更多相关文章

  1. android 开发-Toast控件的实现

    Toast吐司: Toast内容简单,不做过多介绍,Toast支持自带简单吐司,自定义吐司.内容简单可见代码,详见API.A toast provides simple feedback about ...

  2. Android开发——Toast知识

    Toast.makeText(this, "内容", Toast.LENGTH_SHORT).show(); 直接显示一个Toast,第三个参数是时间的长短,还有一个Toast.L ...

  3. Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)

    前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...

  4. Android开发之自定义Toast(带详细注释)

    因为工作需求,所以自己研究了自定义Toast,这里做出总结: 在此之前有一点需要提前说明:Toast与其他组件一样,都属于UI界面中的内容,因此在子线程中无法使用Toast弹出提示内容,如果强行在子线 ...

  5. Android开发UI之Toast的使用

    Toast,A toast provides simple feedback about an operation in a small popup. 对于操作提供一个简单反馈信息. 官网链接:htt ...

  6. Android开发系列(二十三):实现带图片提示的Toast提示信息框

    Android中的Toast是非经常见的一个消息提示框.可是默认的消息提示框就是一行纯文本.所以我们能够为它设置一些其它的诸如是带上图片的消息提示. 实现这个非常easy: 就是定义一个Layout视 ...

  7. Android开发实例 Unity显示Toast

    Android中的Toast是一种简易的消息提示框. 当视图显示给用户,在应用程序中显示为浮动.和Dialog不一样的是,它永远不会获得焦点,无法被点击.用户将可能是在中间键入别的东西.Toast类的 ...

  8. 源码下载:74个Android开发开源项目汇总

    1. ActionBarSherlock ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所 ...

  9. Android开发文档翻译之-Services

    Service是一种能长期在后台运行同一时候不须要与用户进行交互的应用组件.其它组件能够开启service,开启后service能够自行运行及时用户已经切换到其它的应用.此外,组件能够与service ...

随机推荐

  1. [JLOI2011]基因补全

    1973: [JLOI2011]基因补全 Time Limit: 1 Sec  Memory Limit: 256 MB Description 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸), ...

  2. 交换两个变量的值,不借助第三个变量的 三种方法(JS实现)

    第一种:算术运算法 var a = 10; var b = 12; a = b - a; b = b - a; a = b + a; 它的原理是:把a.b看做数轴上的点,围绕两点间的距离来进行计算.具 ...

  3. SpringMVC解决跨域问题

    有个朋友在写扇贝插件的时候遇到了跨域问题. 于是我对解决跨域问题的方式进行了一番探讨. 问题 API:查询单词 URL: https://api.shanbay.com/bdc/search/?wor ...

  4. 20_Python字典总结

    字典: python内置了字典:dic全称dictionary.其他语言中成为map,使用key-value的存储,键-值.具有极快的查找速度类似与我们查字典,我们要查一个字1.从第一页往后翻,知道翻 ...

  5. 分享我自己的一个最小化安装CentOS6的初始化脚本

    在自己的虚拟机上使用的基于CentOS6的系统初始化脚本 #!/bin/bash # #Filename:system_init.sh #Description:系统安装完成后,对系统进行一些配置,以 ...

  6. 给php加速安装APC

    说明:APC-3.1.13 适应于 php-5.4.27 下载: wget http://blog.xinfilm.com/softdir/APC-3.1.13.tgz tar -zxvf APC-3 ...

  7. dubbo调用负载均衡

    dubbo负载均衡的地址:http://dubbo.io/books/dubbo-user-book/demos/loadbalance.html 随机策略: public class RandomL ...

  8. 51Nod 1225 余数之和 [整除分块]

    1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ... ...

  9. 基于Citus和ASP.NET Core开发多租户应用

    Citus是基于PsotgreSQL的扩展,用于切分PsotgreSQL的数据,非常简单地实现数据“切片(sharp)”.如果不使用Citus,则需要开发者自己实现分布式数据访问层(DDAL),实现路 ...

  10. C++数据个数未知情况下的输入方法

    我们经常需要输入一串数,而数据个数未知.这时候就不能以数据个数作为输入是否结束的判断标准了. 这种情况下,我们可以用以下两种方法输入数据. 方法一:判断回车键(用getchar()=='\n'即可判断 ...