Swift51.com
麦子学院 头像
麦子学院  2017-01-14 13:57

安卓通知控件SnackBar详解

回复:0  查看:2407  

安卓开发常用的控件包括ToastDilalog,本文和大家分享则是通知控件SnackBar相关使用,一起来看看吧。

  Dilalog

  Dialog的作用是给用户一个提示信息,并让用户根据提示做出判断。而Dialog的特征就是,它会阻止你原本正在进行的操作,必须停止下来对Dialog进行处理。但是,大多数的人可能并不喜欢这样被打断,也许用户正在处理一项重要的操作,突然弹出一个Dialog遮挡住了他原本的操作,这个时候用户会变得很恼火。

  因此,使用Dialog的时候还是谨慎一点比较好,尽量不要给用户带来糟糕的体验感。

  Toast

  Toast的作用是告诉用户现在发生了什么事情,不会阻挡用户的操作,但同时用户只能被动接收这个事情,因为没有什么办法来让用户是选择同意还是拒绝。

  虽说Toast在用户体验方面要比Dialog好一些,但是也要慎用,尤其是涉及到一些敏感操作的时候。比如说删除数据,只给用户一个提示:你的数据已被删除,而不给用户选择是否要删除的机会,这个时候用户可能就要暴走了。

  为什么要用SnackBar

  如果说DialogToast是两个极端的话,那么Snackbar就是处于中间的位置了。SnackbarToast比较相似,但是用途更加广泛,并且它是可以和用户进行交互的。Snackbar使用一个动画效果从屏幕的底部弹出来,过一段时间后也会自动消失。

  总之

  Dialog:当提示信息是至关重要的,并且必须要由用户做出决定才能继续的时候,使用Dialog

  Toast:当提示信息只是告知用户某个事情发生了,用户不需要对这个事情做出响应的时候,使用Toast

  Snackbar:以上两者之外的任何其他场景,Snackbar可能会是你最好的选择。

  Snackbar用法

  在使用Snackbar之前,首先需要在app/build.gradle中添加相应的依赖:

  dependencies {

  compile 'com.android.support:design:23.4.0'}

  Snackbar.make(view, "data deleted",Snackbar.LENGTH_LONG)

  .setAction("Undo", new

  View.OnClickListener(){

  @Override

  public void onClick(View v) {

  }

  })

  .show();

  这里调用Snackbarmake()方法来创建一个Snackbar对象,make()方法的第一个参数需要传入一个view,只要是当前界面布局的任意一个view都可以,Snackbar会使用这个view来自动查找最外层的布局,用于展示Snackbar。第二个参数就是Snackbar中显示的内容,第三个参数是Snackbar显示的时长。这些和Toast都是类似的。

  接着这里又调用了一个setAction()方法来设置一个动作,从而让Snackbar不仅仅是一个提示,而是可以和用户进行交互的。最后调用show()方法让Snackbar显示出来。

  效果如下图所示:

安卓通知控件SnackBar详解

Snackbar的效果有点类似于Toast,不过它是从屏幕底部弹出来的。另外Snackbar上面可以加入和用户交互的按钮,比如删除数据的时候给用户一个Undo的选项,从这些小的细节方面都可以提升很多的用户体验。

 

  Snackbar注意事项

  短文本

  通常 Snackbar 的高度应该仅仅用于容纳所有的文本,而文本应该与执行的操作相关。Snackbar 中不能包含图标,操作只能以文本的形式存在。

  最多0-1个操作,不包含取消按钮

  当一个动作发生的时候,应当符合提示框和可用性规则。当有2个或者2个以上的操作出现时,应该使用提示框而不是 Snackbar,即使其中的一个是取消操作。如果 Snackbar 中提示的操作重要到需要打断屏幕上正在进行的操作,那么理当使用提示框而非 Snackbar

  以上是引用自google官方文档

  另外还有一个特点:

  暂时性

  为了保证可用性,Snackbar 不应该成为通往核心操作的唯一方式。作为在所有层的上方,Snackbar 不应该持续存在或相互堆叠。

  总结

  SnackBar提供了很好的交互体验,希望后面大家可以引用它。