Snackbar使用详解

来源:互联网 发布:tinyumbrella for mac 编辑:程序博客网 时间:2024/06/08 05:24

Snackbar

Snackbar是Android Support Design Library库中的一个控件,可以在屏幕底部快速弹出消息,比Toast更加好用。

开发出一个好的产品,友好的交互是不可缺少的,通常给用户提示信息的方式有三种:Dialog、Toast、Snackbar

本文主要讲解Snackbar

Snackbar 是一种针对操作的轻量级反馈机制,常以一个小的弹出框的形式,出现在手机屏幕下方或者桌面左下方。它们出现在屏幕所有层的最上方,包括浮动操作按钮。
它们会在超时或者用户在屏幕其他地方触摸之后自动消失。Snackbar 可以在屏幕上滑动关闭。当它们出现时,不会阻碍用户在屏幕上的输入,并且也不支持输入。屏幕上同时最多只能现实一个 Snackbar。

官方推荐结合CoordinatorLayout使用,有俩个好处:

1.用户可以滑动(右滑)消除掉snackbar。
2.当snackbar出现的时候,布局会移动一些UI元素,比如右下角的悬浮按钮会自动上移。

通常使用的Toast,如果每次弹出的对象都使用其make方法的话,那么多次点击弹出会造成接连弹出(上一个消失后弹出)toast的现象,持续到所有的toast对象弹出。如果使用toast的单例模式,多次点击只会在弹出的Toast消失后有效,继而弹出下一个Toast。对于Snackbar而言,每次使用make方法多次点击弹出的话,会让正在显示的Snackbar对象马上消失,显示新的对象。

基本使用

Snackbar.make(view, message_text, duration).show();//显示时间duration有三种类型LENGTH_SHORT、LENGTH_LONG和LENGTH_INDEFINITE。 时间短是2S,长是3.5S,设置为不确定时,就需要结合setDuration(int)方法一起使用,设定显示时间, 否则不会消失//设置可单击Snackbar.make(v, "test", Snackbar.LENGTH_SHORT)        .setAction("这是Action", new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(SnackbarActivity.this, "点击了Action", Toast.LENGTH_SHORT).show();            }        }).show();

修改背景及文字颜色

先看下内部加载布局

    Snackbar snackbar = Snackbar.make(v, "test", Snackbar.LENGTH_SHORT);    snackbar.getView().setBackgroundColor(Color.MAGENTA);    ((TextView) snackbar.getView().findViewById(R.id.snackbar_text)).setTextColor(Color.CYAN);    snackbar.show();    //修改button的颜色可直接调用setActionTextColor方法

添加图片

    Snackbar snackbar = Snackbar.make(v, "test", Snackbar.LENGTH_SHORT);    Drawable img = getResources().getDrawable(R.mipmap.ic_launcher);    img.setBounds(0, 0, img.getMinimumWidth() - 20, img.getMinimumHeight() - 80);    ((TextView) snackbar.getView().findViewById(R.id.snackbar_text)).setCompoundDrawables(img, null, null, null);    ((TextView) snackbar.getView().findViewById(R.id.snackbar_text)).setGravity(Gravity.CENTER_VERTICAL);    snackbar.show();    //添加图片的方式还有其他的方式,谷歌官方也不建议往其中加入图片,如果按照以上方式添加图片展示,要想正常展示图片又不撑开布局的高度,需要注意图片的原始大小

总体效果图:

现在你有三种方式可以给用户提示信息,Dialog、Toast和Snackbar,下面我们对这三种方式的使用时机做个总结

Dialog:当提示信息是至关重要的,并且必须要由用户做出决定才能继续的时候,使用Dialog。Toast:当提示信息只是告知用户某个事情发生了,用户不需要对这个事情做出响应的时候,使用Toast。Snackbar:以上两者之外的任何其他场景,Snackbar可能会是你最好的选择。

Demo地址:https://github.com/Kriy/AndroidMaterialDesignUI 不断完善中。。。如果觉得还行给个Star!