Android-Snackbar VS Toast-使用和区别

到目前为止,我们只在应用程序中使用 Toast,而且我们计划采用来自 Support Design Library 的一些新特性,我想知道 Snackbar 和 Toast 的推荐用法是什么。

我一直在读 谷歌素材零食栏文档

点心提供轻量级的操作反馈 在手机屏幕底部和左下角弹出 它们首先出现在屏幕上的所有元素中,包括 FAB.

还有祝酒词。

Android 还提供了一个胶囊状的吐司,主要用于 祝酒词类似于快餐酒吧,但不包含 操作,并且不能从屏幕上滑出。

我知道他们做什么,但我有点困惑什么时候使用什么。这是否意味着:

  • 如果我不需要用户交互,我会用祝酒词吗?
  • 什么是“系统消息传递”?当我的应用程序和 Android 系统之间发生了重要的事情时,显示信息也是这样吗?
  • 我喜欢的是屏幕上的滑动功能——这会成为开始用零食棒代替祝酒词的一个理由吗?(这是一个基于观点的问题)
80744 次浏览

如果我不需要用户交互,我会用祝酒词吗?

您仍然可以使用 Snackbar。不一定要使用 Snackbar 进行操作。

什么是“系统消息传递”? 这是否适用于显示 当我的应用程序和 安卓系统?

我相信这意味着如果有一些与系统相关的信息,就要使用祝酒词。无论是作为一个整体的机器人,还是你可能正在运行的某种后台服务。例如 Text-To-Speech is not installed.No Email client found.

我喜欢的是屏幕上的滑动功能-这是一个原因吗 开始用 Snackbar 代替祝酒词? (这有点基于观点 问题)

这是一个原因。但还有其它几个加分点。例如: 即使在活动结束后,你的吐司仍然会出现在屏幕上,而“点心吧”则不会。在应用程序退出很长时间后,如果吐司没有弹出(或者在创建多个吐司的情况下继续弹出) ,那么混淆就会少一些。这种事不会发生在点心吧身上。

更重要的是: 我建议如果你在思考的话,你应该换一个。点心吧看起来比吐司好多了。

谷歌的 物质设计规格表示,有一个没有动作的 Snackbar 是可以的。他们提供了一些示例,说明如果 Snackbar 只显示一个 String,它应该是什么样子。我假设“系统消息”意味着设备事件,比如网络连接丢失——而归档电子邮件是 Gmail 特有的操作,例如。

为了保持一致性,选择 Toast 或 Snackbar,并将其应用到整个应用程序中是有意义的。

简短的回答是,这是两种方式来沟通的事情发生在后台的用户,你可以峰值其中之一,他们都罚款。只要确保你使用的是同一个,不要在它们之间来回切换。

长话短说:

  • 不,这意味着如果你需要一些行动,你必须使用 Snackbar。你仍然可以只对消息使用 Snackbar (比如“上传完成”)。
  • “系统”并不仅仅指 Android 系统。例如,如果在从服务器获取信息时遇到 json 解析问题,那么在与服务器通信时仍然可以使用吐司来让用户遇到问题。
  • 如果你真的需要把这个刷掉,那么这就是你选择 Snackbar 的一个无礼的理由

我想添加一个小比较吐司和小吃吧。在我看来,如果你的目的是提出一个警告或信息,需要用户交互/确认,你应该使用零食吧。如果它只是一个信息消息,不需要任何用户确认,你可以使用吐司。

# 干杯 点心吧
1 不能用滑动来解决 可以通过滑动解除
2 不需要活动(可以显示在 android 家庭或其他应用程序以上) 可以显示在您的应用程序的活动内
3 无法处理用户输入 可以处理用户输入
4 用于向用户显示信息消息 适用于向需要关注的用户显示警告/信息类型的消息

祝酒词:

  1. 吐司是在 API 级别1中添加的
  2. 基本上活动是不需要的(可以显示在 Android 家庭或甚至上面的其他应用程序)
  3. 它不能执行基于用户输入的操作
  4. 不能用滑动来解决
  5. 它不能处理用户输入,如滑动,点击等。
  6. 用于向用户显示信息消息

点心吧:

  1. SnackBar 是在 API 级别23中添加的
  2. 它可以显示在应用程序的活动中
  3. 它可以执行一个动作
  4. 它可以通过滑动来消除
  5. 它可以处理用户输入
  6. 适用于向需要关注的用户显示警告/信息类型的消息

SnackBar 和吐司的用法:

点心吧:

SnackBar 可用于需要显示简单的弹出消息以及执行操作的选项的区域。 例如: 在 GMail 应用程序中,当你删除邮件时,快速 SnackBar 显示在底部,消息“1删除”和一个操作按钮“撤销”。按下“撤销”按钮,删除的邮件将被恢复。

祝酒词:

吐司可用于需要显示系统消息的区域。

例如:

当您的应用程序试图从远程服务器下载 JSON,但由于服务器超时或未找到资源而失败时,您只需要显示错误消息说“错误发生”。但是请理解,吐司信息不能被刷屏解除。如果您仍然希望在您的应用程序中能够忽略它,那么可以选择 SnackBar。

我们的设计团队正在考虑使用烤面包或者零食。我们得出的结论是,考虑到应用程序的灵活性,它应该使用零食栏。

只有当我们需要一个 持久,短字符串,信息消息,仍然在不同的屏幕上使用有意义的祝酒词时,才应该使用。

根据 弹出消息概述的官方文件:

注: < em > 点心吧类取代 干杯。虽然目前仍然支持 干杯,但 点心吧现在是向用户显示短暂消息的首选方式。

和(材料设计) 点心的文档:

相关概念: < em > Android 还提供了一个具有类似 API 的 干杯类,可用于显示系统级通知。通常,快餐条是向用户显示反馈消息的首选机制,因为它们可以在发生操作的 UI 上下文中显示。保留 干杯的情况下,这是无法做到这一点。

Android 还提供了一个胶囊状的吐司,主要用于系统消息传递。

我认为“系统消息传递”也指这样一个事实,即祝酒词会在特定的时间显示,即使用户浏览了各种活动,即使应用程序被移动到后台,也不能被忽略。

我认为将其范围限制在某个活动并且能够忽略它是快餐吧的一个优点。

Toast 和 Snackbar Android 的区别

  • 吐司信息可以自定义并打印在屏幕上的任何地方,但 Snackbar 只能显示在屏幕的底部。
  • Toast 消息没有操作按钮,但 Snackbar 可以选择有操作按钮。
  • 吐司信息不能关闭,直到时间限制完成,但点心可以在时间限制前滑动关闭。
  • 您可以使用这三个不同的值来设置显示消息的时间长度。
    Snackbar.LENGTH_LONG
Snackbar.LENGTH_SHORT
Snackbar.LENGTH_INDEFINITE

用法

干杯

Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

点心吧

Snackbar snackbar = Snackbar.make(view,"This is Simple Snackbar",Snackbar.LENGTH_SHORT);
snackbar.show();