Android开发Toast Notifications
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的更多相关文章
- android 开发-Toast控件的实现
Toast吐司: Toast内容简单,不做过多介绍,Toast支持自带简单吐司,自定义吐司.内容简单可见代码,详见API.A toast provides simple feedback about ...
- Android开发——Toast知识
Toast.makeText(this, "内容", Toast.LENGTH_SHORT).show(); 直接显示一个Toast,第三个参数是时间的长短,还有一个Toast.L ...
- Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)
前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...
- Android开发之自定义Toast(带详细注释)
因为工作需求,所以自己研究了自定义Toast,这里做出总结: 在此之前有一点需要提前说明:Toast与其他组件一样,都属于UI界面中的内容,因此在子线程中无法使用Toast弹出提示内容,如果强行在子线 ...
- Android开发UI之Toast的使用
Toast,A toast provides simple feedback about an operation in a small popup. 对于操作提供一个简单反馈信息. 官网链接:htt ...
- Android开发系列(二十三):实现带图片提示的Toast提示信息框
Android中的Toast是非经常见的一个消息提示框.可是默认的消息提示框就是一行纯文本.所以我们能够为它设置一些其它的诸如是带上图片的消息提示. 实现这个非常easy: 就是定义一个Layout视 ...
- Android开发实例 Unity显示Toast
Android中的Toast是一种简易的消息提示框. 当视图显示给用户,在应用程序中显示为浮动.和Dialog不一样的是,它永远不会获得焦点,无法被点击.用户将可能是在中间键入别的东西.Toast类的 ...
- 源码下载:74个Android开发开源项目汇总
1. ActionBarSherlock ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所 ...
- Android开发文档翻译之-Services
Service是一种能长期在后台运行同一时候不须要与用户进行交互的应用组件.其它组件能够开启service,开启后service能够自行运行及时用户已经切换到其它的应用.此外,组件能够与service ...
随机推荐
- ios MVVM实践 刷新网络请求+tableView展示数据
[实现效果] [目录结构相关] 此示例展示用的是MVVM结构形式,表述如下 M:数据Model的存储,可以用来对属性进行处理.(即胖model概念,上图中xx万人订阅这个处理方法写在Model内) V ...
- Spring 4.x (三)
1 Spring中加入DataSource并引入jdbc.properties 步骤: ①加入c3p0的jar包和mysql的驱动包 ②在src下新建jdbc.propertes文件 jdbc.dri ...
- 学会用git真的很重要
一.首先,作为一名开发人员,目前个人菜鸟一个,觉得有个仓库来管理好自己的项目是真的很重要,而目前个人认为在git上面管理自己的项目是真的很不错的推荐,接下来给大家介绍一下如何使用git上传.管理自己的 ...
- gb_tree平衡树源码
1.平衡树简称AVL,出名的有红黑树,这里介绍一下gb_tree的实现 gb_tree的原理比红黑树简单,没有过多的旋转跳跃闭着眼,是一种叫AA树的结构(Arne Andersson's Genera ...
- 6 个 Linux 运维典型问题
作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...
- jQuery&Ajax应用
jQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第二层是load(),$.get()和$.post()方法,第三层是$.getScript(),$.getJ ...
- git指令总结
在学习flask之前,先汇总一下Git的指令. mkdir filedir 创建文件夹filedir cd filedir 进入文件夹 pwd 显示当前工作目录 git init 初始化git仓库 g ...
- bzoj 3033: 太鼓达人 [欧拉回路]
3033: 太鼓达人 题意:长m的01环,每个长k的子串都是不同的01串.给出k,求最大的M以及字典序最小的方案. \(M=2^k\) 可以把k-1位01串看成点,k位01串就是边,满足欧拉回路的条件 ...
- 整理一点与排列组合有关的问题[组合数 Stirling数 Catalan数]
都是数学题 思维最重要,什么什么数都没用,DP直接乱搞(雾.. 参考LH课件,以及资料:http://daybreakcx.is-programmer.com/posts/17315.html 做到有 ...