Android Material design之Snackbars

一、什么是Snackbar

1、谷歌原话:Snackbar通过在屏幕底部显示一条简短的信息并提供一个轻量级操作反馈。Snackbar可以包含一个动作。跟Toast相似的是都可以在屏幕上显示信息提示,不同的是Snackbar可以包含一个动作(点击事件)。

2、屏幕上一次只能显示一个Snackbar,并且Snackbar只能包含0或1个动作,更像是轻量化的对话框。

3、谷歌推荐Snackbar和CoordinatorLayout结合使用,Snackbar能够响应CoordinatorLayout向右滑动的清除事件。

二、Snackbar的使用

布局的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.xiaohu.app.snackbardemo.MainActivity">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/cl"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_margin="@dimen/activity_horizontal_margin"
            android:src="@drawable/ic_plus" />
    </android.support.design.widget.CoordinatorLayout>
</RelativeLayout>

这里选取CoordinatorLayout作为Snackbar的容器。

生成Snackbar的具体代码如下:

Snackbar.make(cl, "这是一个Snackbar", Snackbar.LENGTH_INDEFINITE)
                        .setActionTextColor(getResources().getColor(R.color.colorAccent))
                        .setAction("确定", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Toast.makeText(MainActivity.this, "响应了Snackbar的点击事件", Toast.LENGTH_LONG).show();
                            }
                        })
                        .setCallback(new Snackbar.Callback() {
                            @Override
                            public void onDismissed(Snackbar snackbar, int event) {
                                fab.setClickable(true);
                                Toast.makeText(MainActivity.this, "Snackbar--onDismissed", Toast.LENGTH_LONG).show();
                            }

                            @Override
                            public void onShown(Snackbar snackbar) {
                                fab.setClickable(false);
                                Toast.makeText(MainActivity.this, "Snackbar--onShown", Toast.LENGTH_LONG).show();
                            }
                        })
                        .show();

Snackbar的生成方式与Toast类似,通过make静态方法来生成,该方法包含三个参数:

第一个参数:设置Snackbar的容器,即Snackbar在哪个View上显示;

第二个参数:设置显示的消息内容;

第三个参数:设置显示的时长,包含LENGTH_INDEFINITE(不会主动消失), LENGTH_SHORT, LENGTH_LONG。

setActionTextColor:设置动作文字的颜色;

setAction:设置动作,包含两个参数:一个是动作名称,一个是View.OnClickListener;

setCallback:设置Snackbar的回调,包含Snackbar显示时的回调和Snackbar消失时的回调;

show:显示Snackbar;

其它方法这里不再叙述了。

对Snackbar而言,除了make方法和show方法是必须的,其它的都是可选的;

以下是真机运行效果,注意观察FloatingActionButton的位置。

点击FloatingActionButton时,Snackbar从底部弹出并且FloatingActionButton自动往上移动了,不会造成按键遮挡,提供了很好的交互,这是Snackbar和CoordinatorLayout结合使用的优点之一。

Snackbar和CoordinatorLayout结合使用的优点之二:Snackbar可以向右滑动清除。

点击确定按钮或者向右滑动清除Snackbar,此时FloatingActionButton又回到了原来的位置

Snackbar的使用就介绍到这里了,Snackbar确实让人眼前一亮。

以下是本文的AndroidStudio源码:SnackbarDemo

时间: 2024-08-28 11:33:18

Android Material design之Snackbars的相关文章

Android Material Design学习之RecyclerView代替 ListView

前言 # Android Material Design越来越流行,以前很常用的 ListView 现在也用RecyclerView代替了,实现原理还是相似的.笔者实现一下 RecyclerView,代码比较简单,适合初学者,如有错误,欢迎指出. 源码地址(欢迎star) https://github.com/studychen/SeeNewsV2 本文链接 http://blog.csdn.net/never_cxb/article/details/50495505,转载请注明出处. 复习 L

Android Material Design带来的UI变革

谷歌Matias Duarte称,"Material Design是美丽和大胆的,因为干净的排版和布局简单且容易理解.内容才是焦点. 谷歌I/O 014开发者大会上宣布全新的设计语言"Material Design",适用于旗下所有平台,包括 Android.Chrome OS 和网页. 谷歌Matias Duarte称,"Material Design是美丽和大胆的,因为干净的排版和布局简单且容易理解.内容才是焦点." Material Design 初

Android Material Design : Ripple Effect水波波纹荡漾的视觉交互设计

?? Android Material Design : Ripple Effect水波波纹荡漾的视觉交互设计 Android Ripple Effect波纹荡漾效果,是Android Material Design视觉设计引入的一种交互设计效果简言之:当点击某个view时候,view会出现像水波波纹一样的荡漾传播效果.在最新版的Android如Android 5.0或以上版本中默认具有该效果,但在低版本Android中没有,如果需要向下兼容低版本设备,则需要自己写代码实现,实现步骤: 第1步:

Android Material Design新UI控件使用大全 一

序言 自从谷歌在2014年的IO大会上推出了Material Design新的设计规范后,安卓应用的整体美观程度提升了很大的一个层次, 安卓再也不是又黑又丑的界面,取而代之的是拥有丰富的颜色,美观的按钮,好的用户体验;但是刚开始的话这种设计规范只能在Android 5.0以上的手机上运行,导致开发者也只是自己去体验,在国内并没有大范围的推广,App的质量并不能大幅度的提升,但是作为改变世界的Google公司不久就推出了兼容库Android Material Design,这绝对是业界良心了,我们

Android Material Design 兼容库的使用

Android Material Design 兼容库的使用 mecury 前言:近来学习了Android Material Design 兼容库,为了把这个弄懂,才有了这篇博客,这里先推荐两篇博客:1.Android Material Design 兼容库的使用详解2.Android应用Design Support Library完全使用实例第一篇博客是这个兼容库的详细解析,我参考了里面的许多内容,第二篇是兼容库的大致介绍,如果你能把这两篇全部弄懂,我这篇也没有必要看了.说了这么多,开始正文吧

MaterialEditText——Android Material Design EditText控件

MaterialEditText是Android Material Design EditText控件.可以定制浮动标签.主要颜色.默认的错误颜色等. 随着 Material Design 的到来, AppCompat v21 中也提供了 Material Design 的控件外观支持,其中包括 EditText .但 AppCompat 中的 EditText 实在有点难用,因为它是通过 colorAccent 来自动为控件着色的,并没有提供设置颜色的api,因此需要通过为控件定制theme的

android Material design是什么

Material design概述: Material design是一套UI样式标准,应该会提供一些新的API这写API包含了以下五大模块内容,分别是: Material Theme New Widgets View Shadows Animations New Capabilities for Drawables 1.material新的主题样式. 主题的颜色.动画.反馈效果都可以自定义: 2.控件阴影. 在原来的X,Y的基础之上增加了Z轴的阴影控制,Z值大的控件将显示在上面. 3.Recy

Android Material Design之在RecyclerView中嵌套CardView实现

前言: 第一眼就爱上了Android的Material Design风格.以前倒对Android的界面风格不那么喜欢,扁平化的界面设计真是好看. 其实,这个嵌套操作在实现上并没有什么难点.可是,我还在Eclipse上没有试验成功.后来换到Android Studio上就OK了.以下是实现过程. 笔者开发环境: 系统:Windows 7 旗舰版 IDE:Android Studio v1.0 工具包:cardview-v7-21.0.0.aar recyclerview-v7-21.0.0.aar

Android Material Design(一)史上最全的材料设计控件大全

主要内容: 本文将要介绍Material design和Support library控件,主要包括TextInputLayout.SwitchCompat.SnackBar.FloatingActionButton.Shadows.Ripples.TabLayout.RecyclerView.Card.NavigationView.BottomSheet.Palette控件. 转载请注明出处,谢谢!! http://blog.csdn.net/johnny901114/article/deta