这篇文章是我发表在eoeandroid论坛上的帖子,今天也来这里和园友们分享一下,希望对大家有所帮助~  原帖子地址:

http://www.eoeandroid.com/thread-34700-1-1.html

  大家平时在开发的时候,应该经常会有这样的需求,向用户提示一些信息,比如程序的状态,或者完成某个操作,而不希望打搅用户当前正在进行的操作——不获取任何焦点。我们一般很容易想到的一个方法就是使用类似对话框的机制,但即使是非模态的对话框,也会打扰用户当前的操作,那么有没有更简单的方法呢?

答案当然是肯定的啦,android已经为我们提供了一个非常简便的方法,那就是Toast,直译为吐司~ 很可爱的名字吧~ 用起来像它的名字一样,非常方便。例如我们要想用户显示一些文本信息,可以使用下面的方法~

Toast.makeText(self, "Hello World!", Toast.LENGTH_SHORT).show();

非常简单的一句话,第一个参数self是当前上下文Context对象,接着是我们要显示的消息文字,最后一个参数是显示的时间,可以在这两个值里面取其一:

Toast.LENGTH_SHORT
       Toast.LENGTH_LONG

下面为运行效果:

大家看看是不是很熟悉呢,很多应用中都可以看到类似的提示信息,这条信息不会影响用户任何正在进行的操作,当时间到了之后,他会自动消失。

那么Toast是不是除了显示文本消息,就没有其他功能了呢?当然不是了,Toast远不只是显示文本这么简单,我们可以定制它的界面,只需使用它的setView传入任何符合View规范的对象,就可以演变出各种口味的吐司~~

例如,我们的手机上都有调节音量的按钮,其实这个功能的界面就是一个Toast,例如下面这幅图:

我们每点击Increase Volume 这个按钮一次,这个进度条就会浮现出来,并且增加一格,如果几秒内没有任何操作,这个进度条就会消失,直到我们再次点击Increase Volume按钮。这个操作就和我们平时调节音量的两个按钮非常像了,下面是主干代码:

我们首先需要定义一个Layout,用来显示Toast中的进度条和提示文字:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3   xmlns:android="http://schemas.android.com/apk/res/android"
 4   android:layout_width="280dp"
 5   android:layout_height="wrap_content"
 6   android:gravity="center_horizontal"
 7   android:orientation="vertical"
 8   
 9   >
10           <TextView           
11                   android:layout_width="fill_parent"
12                   android:layout_height="wrap_content"
13                   android:text="Volume"
14           />
15           <ProgressBar 
16                   android:id="@+id/progress"
17                   android:layout_width="280dp"
18                   android:layout_height="wrap_content"
19                   android:progress="50"
20                   android:max="100"
21                   style="?android:attr/progressBarStyleHorizontal"
22           />
23 </LinearLayout>

随后,我们就可以在按钮的点击事件里面添加下面的代码:

 1 ((ProgressBar)volumeView.findViewById(R.id.progress)).setProgress(
 2   ((ProgressBar)volumeView.findViewById(R.id.progress)).getProgress() + 5        
 3 );
 4                 
 5                 
 6 if(volumeToast == null ) {
 7    volumeToast = new Toast(self);
 8    volumeToast.setGravity(Gravity.TOP, 0, 150);
 9    volumeToast.setView(volumeView);
10    volumeToast.setDuration(Toast.LENGTH_LONG);
11 }
12                 
13 volumeToast.show();

上面这段代码也非常简单吧~虽然实现起来很容易,但却是很实用的功能,我们还可以利用Toast组合中各种新奇的好东西~ 下面就由大家来尽情的发挥想象吧~

源代码下载

转载于:https://www.cnblogs.com/springfield/archive/2010/11/06/1870774.html

android中可口的吐司,一种信息提示机制——Toast相关推荐

  1. Android中播放音乐的几种方式

    Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...

  2. android xpath解析xml,Android 中处理 XML 的四种方式-DOM

    Android 中处理 XML 的几种方式连载中,我们就不介绍合成 XML 了,因为合成 XML 可以直接拼接字符串,虽然看起很不高大上,但却很有效.我们主要介绍如何取 XML 中的值. 适用 DOM ...

  3. android中获取应用程序(包)的信息,Android中获取应用程序(包)的信息PackageManager的使用(一).doc...

    Android中获取应用程序(包)的信息PackageManager的使用(一) 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等 ...

  4. android获取颜色资源,Android中获取颜色的几种方法

    Android中获取颜色的几种方法: 通过android封装好的Color类中的常量 public static final int BLACK = 0xFF000000; public static ...

  5. Android中通过Exifinterface读取图片地理位置信息

    效果图: 一.了解Exif EXIF(Exchangeable Image File)是"可交换图像文件"的缩写,是一种图像文件格式,它的数据存储与JPEG格式是完全相同的,当中包 ...

  6. Android中添加背景音乐的两种方法

    前些天在尝试自己写一个Android小游戏--flybird 基本功能实现了,就想添加声音,然后上网查了查,大多是一样,可是用到我这,有些却不可以用,所以我还用了两种方法. 下面谈谈这两种方法. 方法 ...

  7. Android中获取网络图片的三种方法

    android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Application Not Responding)对话框的情况.对于这种情况,一般的方法就是耗时操作用 ...

  8. Android中获取应用程序(包)的信息-----PackageManager的使用(一)

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...

  9. Android中夜间模式的三种实现方式

    参考:https://www.jianshu.com/p/f3aaed57fa15 在本篇文章中给出了三种实现日间/夜间模式切换的方案: 使用 setTheme 的方法让 Activity 重新设置主 ...

最新文章

  1. 基于OpenCV的人员剔除
  2. 通过邮箱验证注册——.net代码
  3. C语言 | 编写一个使用指针的c函数,交换数组a和数组b中的对应元素
  4. TensorFlow实现Unet遥感图像分割
  5. flink的print()函数输出的都是对象地址而非对象内容
  6. mysql 同一帐号多次登录_freeradius2.1.3 防止用户帐号重复登录
  7. repeater的嵌套(转+总结)[http://www.cnblogs.com/esshs/archive/2005/04/07/132825.html]
  8. Java 替换字符串中的回车换行符的方法
  9. PHP 如何给常量赋值变量
  10. 微软行星云计算Planetary Computer——行星计算机数据资源管理器介绍!和GEE有啥不同?
  11. 企业工商信息数据API接口
  12. python打开sql,Python打开Microsoft SQL Server MDF文件
  13. 2018icpc ecfinal 西安游记
  14. 【天光学术】文学理论论文:符号学理论下文本互文性探究(节选)
  15. 英语题目作业——OJ_2392:Clear Cold Water
  16. 秃鹫:我吃东西也是分国家的
  17. Linux文件系统及文件储存方式
  18. 空间分析建模目的_房产测绘与二三维一体化建模研究——以连云港市为例
  19. java添加窗体中_java中利用JFrame创建窗体 【转】
  20. 【100条企业网站推广方法】

热门文章

  1. 神经网络 | 网络优化-线性神经网络-delta学习规则-梯度下降法(单层感知器-异或问题Python源代码)
  2. 用vmware安装win7虚拟机(windows10系统)
  3. java string isempty,java – String.isEmpty()和String.equals(“”)之间的区别
  4. 衡阳市2017计算机考试,2017湖南衡阳中考各科目满分及分值公告
  5. 国防科大计算机专业分数线,2018国防科技大学各省录取分数线_2017年国防科大录取线...
  6. 文本分析:吉利不裁员不降薪背后的真相是什么
  7. rust(10)-函数指针
  8. 【深度学习】用于小目标检测的一个简单高效的网络
  9. 【图网络】如何用Python实现算法:规划图技术(GraphPlanner)
  10. 【Python基础】Python字典详解-超级完整版