第8章 Toast通知

Toast通知是在窗口前面弹出的信息。它只占有信息所需要的空间量,并且用户当前的activity仍然是可见的、可互动的。这种通知自动地淡入和淡出,它不接受交互事件。他相当于一种临时的界面,用来反馈信息给用户,比如当你把某条信息保存为草稿的时候,会弹出如图8-1所示

下面的截图是闹铃应用程序的一个Toast通知示例。一旦开启闹铃,就会显示一个Toast,它提示你闹铃已经设定成功,如图1-9-1所示;。

图8-1 保存为草稿的toast效果

你可以通过Activity或Service来创建和显示toast。如果你通过service创建了一个toast通知,那么toast通知就会出现在当前处于焦点的activity前面。

8.1 基础知识

首先,用一个makeText()方法可以实例化一个toast对象。这种方法需要三个参数:应用程序Context、文本消息和toast的持续时间。它会返回一个适当的被初始化的Toast对象。你可以用show()方法来显示Toast通知,如代码清单8-1所示:

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration);
toast.show();

代码清单8-1

这个例子演示了对于大多数toast通知。你应该极少用到其他东西。然而,你可能想要把toast放置在不同的位置或者甚至用你自己的布局而不是一个简单的文本信息。接下来的部分将告诉你如何做到这些事。你还可以直接使用一行代码显示toast对象,如代码清单8-2所示:

Toast.makeText(context, text, duration).show();

代码清单8-2

8.2 放置你的Toast

一个标准的toast通知是出现在屏幕底部附近,并且水平居中。你可以用setGravity(int,int,int)方法来改变位置。它需要三个参数:一个Gravity常量、一个x-位置偏移、一个y-位置偏移。

例如,如果你认为Toast应该出现在左上角,那么你可以这样设定gravity,如代码清单8-3所示:

toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);

代码清单8-3

如果你想把位置稍微右移,那么增加第二个参数的值。向下移,就增加最后一个参数的值。

8.3 创建一个自定义的Toast View

如果一个简单的文本信息不能够很好地显示信息,那么你可以为你的toast通知创建一个自定义布局。要创建一个自定义布局,你需要在XML文件或你的应用程序编码中定义一个View布局,并传递根View对象给setView(View)方法。

例如你可以用下面代码清单8-4所示的XML布局文件(保存为toast_layout.xml)来创建图8-2所示的toast布局:

图8-2 toast布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:background="#DAAA"
>
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
/>
</LinearLayout>

代码清单8-4

实现代码如代码清单8-5所示:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout,
(ViewGroup) findViewById(R.id.toast_layout_root)); ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Hello! This is a custom toast!"); Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

代码清单8-5

首先,用getLayoutInflater()(或者getSystemService())方法来获取LayoutInflater,然后用inflate(int,ViewGroup)方法把XML布局文件转换成代码。第一个参数是布局资源ID,第二个参数是根View。你可以用这个转换过的布局来找到更多的View对象,所以现在可以捕获和定义ImageView和TextView元素的content。最后,用Toast(Context)创建一个新的Toast,并给它设定一些属性,比如方位和持续时间。然后调用setView(View)并给它传递转换过的布局。现在你可以调用show()方法来显示自定义的布局了。注意: 不要为一个toast使用公有构造函数,除非你打算用setView(View)来定义布局。如果你没有一个自定义的布局,那么你可以用makeText(Context,int,int)来创建Toast。

本文来自jy02432443,是本人辛辛苦苦一个个字码出来的,转载请保留出处,并保留追究法律责任的权利 QQ78117253 

第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知的更多相关文章

  1. 第三部分:Android 应用程序接口指南---第二节:UI---第七章 通知

    第7章 通知 一个通知是一条消息他是显示于你应用程序之外的一个界面中.当你告诉系统要发布一个通知时,它首先作为一个icon出现在通知区域.为了看见通知的细节,用户可以点击通知区域展开一个新的界面.下面 ...

  2. 第三部分:Android 应用程序接口指南---第二节:UI---第一章 用户界面和布局

    第1章 用户界面和布局 应用程序的用户界面就是用户能看到并可以与它交互的任何东西.Android提供多种预置的UI组件,如结构化布局对象和允许你为应用程序创建图形用户界面的UI控件.Android也会 ...

  3. 第三部分:Android 应用程序接口指南---第二节:UI---第二章 输入控件

    第2章 输入控件 输入控件是应用程序中用户接口的一种交互式组件.Android提供了大量的可供人们在UI中使用的控件,比如按钮.文本区域.(带滑块的)进度条.复选框.缩放按钮以及切换按钮等等. 在UI ...

  4. 第三部分:Android 应用程序接口指南---第二节:UI---第三章 菜单

    第3章 菜单 在许多不同类型的应用中,菜单通常是一种用户界面组件.为了提供给用户提供熟悉且一致的体验,你需要使用菜单API来展示用户动作和你Activity中的其他选项. 从安卓3.0系统(API l ...

  5. 第三部分:Android 应用程序接口指南---第二节:UI---第四章 Action Bar

    第4章 Action Bar Action Bar是一个能用于确定应用程序和用户的位置,并提供给用户操作和导航模式的窗口功能.如果需要显著地展示当前用户的操作或导航,应该使用Action Bar,因为 ...

  6. 第三部分:Android 应用程序接口指南---第二节:UI---第五章 设置(Settings)

    第5章 设置(Settings) 应用程序通常包括允许用户修改应用程序的特性和行为的设置功能.例如,一些应用程序允许用户指定通知是否启用或指定多久使用云同步数据.如果你想要为你的应用程序提供设置,你应 ...

  7. 第三部分:Android 应用程序接口指南---第二节:UI---第六章 对话框

    第6章 对话框 一个对话框是一个小窗口,提示用户做出决定或输入额外的信息,一个对话框不填充屏幕并且通常用于在程序运行时中断,然后弹出通知提示用户,从而直接影响到正在运行的程序.图6-1就是对话框的外观 ...

  8. 第三部分:Android 应用程序接口指南---第二节:UI---第九章 搜索

    第9章 搜索 在android平台上搜索是一个核心的用户功能.无论内容位于设备或网络上,用户应该能够搜索任何对它们可用的数据.为了创建一个一致的用户搜索体验,Android平台提供了一个搜索框架帮助你 ...

  9. 第三部分:Android 应用程序接口指南---第二节:UI---第十章 拖放

    第10章 拖放 使用Android的拖放框架,允许用户通过一个图形化的拖放动作,把数据从当前布局中的一个视图上转移到另一个视图上.这个框架包含了一个拖动事件类,拖动监听器和一些辅助的方法和类. 虽然这 ...

随机推荐

  1. VS Code 配置 C/C++ 环境(转)

      写作原因 微软的 VSCode 一直以来为人诟病的一个问题就是对于 C/C++ 工程的编译以及调试支持度有限,配置起来比较复杂,但是 vscode-cpptools 团队经过一段时间的 bug 修 ...

  2. hdu1003 Max Sum【最大连续子序列之和】

    题目链接:https://vjudge.net/problem/HDU-1003 题目大意:给出一段序列,求出最大连续子序列之和,以及给出这段子序列的起点和终点. 解题思路:最长连续子序列之和问题其实 ...

  3. Manjaro 初始配置----anaconda-pycharm-opencv-tensorflow

    1.安装蟒蛇 1)安装 yaourt anaconda source /opt/anaconda/bin/active root 2)添加环境变量 在〜/ .bashrc中添加 export PATH ...

  4. 不一样的go语言-构建系统与构件系统

    前言   代码的最后一步是构建成计算机可识别的二进制数据,然后才得以在计算机上运行.如果你曾经写过有点规模(至少数十个以上独立的源文件,且需要依赖第三方包)C语言项目,必定对C语言项目的构建过程印象深 ...

  5. vimtutor学习笔记

    简介 vimtutor是vim这款知名的文本编辑器的学习工具/指南.语法如下. vimtutor [-g] [language] gvimtutor -g选项和gvimtutor是启动GUI版本的指南 ...

  6. Spring 注解@Transactional readOnly=true

    引子 今天下班后,以前同事小胖问我Spring  Service类中的注解@Transactional readOnly=true的作用.做为他眼中的高人,我自然要装下A-C.居然想都没有想就说是注解 ...

  7. C++学习笔记43:STL

    STL简介(standard Template Library) STL的基本组件:容器(container),迭代器(iterator),函数对象(function object) 算法(algor ...

  8. redis 在 php 中的应用(Server[ 服务器] 篇)

    本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: Server(服务器) BGREWRITEAOF BGSA ...

  9. window + php + memcached 安装

    第一步:安装windows版memcached 下载地址:http://download.csdn.net/detail/zhaotengfei36520/8182503#comment 下载之后将文 ...

  10. 喵哈哈村的魔法考试 Round #13 (Div.2) 题解

    喵哈哈村的木星传说(一) 旋转90°,找找规律就知道(x,y)->(n-1-y,x) 然后输出就好了. #include<bits/stdc++.h> using namespace ...