安卓Android Support Design Library——Snackbar

介绍:

  SnackbarAndroid Support Design Library库支持的一个控件,用于在界面下面提示一些关键信息,跟Toast不同的地方是SnackBar允许用户向右滑动消除它,同时,也允许在SnackBar中设定一个Action,当用户点击了SnackBar里面的按钮的时候,可以进行一些操作,所以,功能绝对是很强大的。

  官方推荐使用CoordinatorLayout(另一个Android Support Design Library库支持的控件)容纳。因为使用这个控件,可以保证Snackbar可以让用户通过向右滑动退出。

由浅入深:

1、基础功能:从底部弹出snackbar

在xml文件中定义snackBar的容器:Coordinator容器:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:onClick="createSnackbar"
        android:text="Snackbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"/>
</RelativeLayout>

activity中显示 Snackbar(它的用法与Toast很像,它出现后三秒之后从底部弹出,或者用户 向右滑动,它被滑出)

public class SnackbarTest extends AppCompatActivity {
    CoordinatorLayout container;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_snackbar_test);
        container = (CoordinatorLayout) findViewById(R.id.container);

    }
    public void createSnackbar(View v){
         Snackbar.make(container,"Snackbar maker", Snackbar.LENGTH_LONG).show();
    }
}

Snackbar的第一个容器参数也可以是 LinearLayout或其他容器,当Snackbar弹出时,没有向右滑出效果。

2、添加按钮,并定义点击事件

Snackbar.make(container,"Snackbar with button",Snackbar.LENGTH_LONG).setAction("action", new View.OnClickListener() {    @Override    public void onClick(View v) {        //    }}).setActionTextColor(Color.RED).show();

3、设置Snackbar回调 onshow 和 onDismissed

自定义 Snackbar.Callback 类

public class MyCallback extends Snackbar.Callback{
    @Override
    public void onDismissed(Snackbar transientBottomBar, int event) {
        super.onDismissed(transientBottomBar, event);
        if(event == DISMISS_EVENT_SWIPE || event == DISMISS_EVENT_TIMEOUT
                || event == DISMISS_EVENT_CONSECUTIVE){

        }
    }
    @Override
    public void onShown(Snackbar sb) {
        super.onShown(sb);
        //
    }
}

Snackbar设置callBack()

Snackbar.make(container,"Snackbar maker", Snackbar.LENGTH_LONG)
        .setCallback(new MyCallback())
        .show();

补充Snackbar消失的类型:

/** Indicates that the Snackbar was dismissed via a swipe.*/
public static final int DISMISS_EVENT_SWIPE = 0;
/** Indicates that the Snackbar was dismissed via an action click.*/
public static final int DISMISS_EVENT_ACTION = 1;
/** Indicates that the Snackbar was dismissed via a timeout.*/
public static final int DISMISS_EVENT_TIMEOUT = 2;
/** Indicates that the Snackbar was dismissed via a call to {@link #dismiss()}.*/
public static final int DISMISS_EVENT_MANUAL = 3;
/** Indicates that the Snackbar was dismissed from a new Snackbar being shown.*/
public static final int DISMISS_EVENT_CONSECUTIVE = 4;

后续查看补充:

http://www.jianshu.com/p/cd1e80e64311

Coordinator 容器:

http://www.jianshu.com/p/488283f74e69

http://www.cnblogs.com/itgungnir/p/6210803.html

时间: 2024-10-14 12:25:02

安卓Android Support Design Library——Snackbar的相关文章

Android Support Design Library之CoordinatorLayout

Android Support Design Library是5.0的安卓支持库,最低兼容版本是Android 2.2,可以说是一个良心的产品,以前编写Android程序总需要考虑到版本的问题,现在使用这个Android支持库开发可以不需要考虑这类问题,这可以说是另一种开发语言,下面我们将一一介绍里面的每个控件的使用方式以及其扩展特效. 1.什么是CoordinatorLayout 从其英文名字可知道其为"协调者",组织"协调"子View的父View,其继承自Fra

Android Support Design Library之TextInputLayout

相信普通的用户在使用手机的时候经常遇到一个输入框没输入的时候会有灰色的提示,可一旦输入些许字符后,用户很快忘记了这个输入框要输入什么,但是退回去却又要重新输入,对于用户的这个要求,谷歌看在眼里,在2015推出了TextInputLayout来满足这个需求.那么对于怎么使用这个控件,我将用模仿网易邮箱大师的登录界面来一一告诉大家怎么畅快的玩起来. 下面来看看,我们将要实现的界面. 1.TextInputLayout在布局里面的那些事 对于TextInputLayout并不能单独的使用,必须配合Ed

Android Support Design Library 之 TabLayout

在 Android 3.0 的时候 ,我们知道可以通过 ActionBar 来创建 tab 实现导航,但是呢,不容易自定义 ,而且现在 ActionBar 被 Toolbar 取代的话,这让很多应用都抛弃了这个 ActionBar 的 tab,选择自己来写一个 tab.不过在 support v4 包中,有个PagerTitleStrip   和 PagerTabStrip,我觉得很丢脸,为何有这么丑的控件出现 ?于是在应用中我们还是选择了自己写一个 tab.今天,在 Android Desig

Android Support Design Library之NavigationView

此安卓支持库中需要讲解的第二个View就是NavigationView,相信大家在开发中经常会用到抽屉,那么谷歌也为大家提供了这个功能,并不需要去Github去下载使用开源的软件.NavigationView基本满足日常开发抽屉的所有要求,且效率也高.下面我们看下效果图后,将详细介绍其使用方式. 1.NavigationView与DrawerLayout的天作之合 NavigationView完整包名+类名如下:android.support.design.widget.NavigationVi

Android Support Design Library之FloatingActionButton

为了文章的精彩,前三个标题实现FloatingActionButton的特效,最后一节讲解其属性详情. 1.自定义Behavior实现掌阅底部菜单与按钮联动效果. 我们来看看掌阅的菜单效果: 以前没有这个支持库的时候,需要写两个动画,一个按钮的动画一个菜单的动画,现在因为有了Behavior,那么一个在另一个的相对位置就可以实现其效果. 另外标记一下这个库最重要的知识点就是Behavior,其他的与基本控件无异.下面我们来实现其效果. 自定义Behavior代码: public class LY

安卓android.support.design使用中的问题

这几天更新sdk,看到support更新到23.1.1了,加入新的design库,于是下载来看看怎么用,按照以前的方法我是把v7包中的类都复制到当前workspace,然后在使用过程中发现了不少问题,特此做下记录: 1.android.support.design库依赖android.support.v7.appcompat库 2.android.support.design使用时包含了android.support.v7.appcompat库,所以在项目中进行引用时不能同时引用,否则报错(一步

Android Support Design 库 之 Snackbar使用及源码分析

在谷歌提出 material design 之后,终于推出了 android.support.design 这个官方的material design库,这几天我也简单浏览了下这个库,基本上我们常用的组件都有了,从今天开始,就可以一步步替换掉 以前使用的github上的那些开源控件了,毕竟谷歌出品 才属精品~~另外分析这个design库的源码我认为是非常有意义的,android上的app 在以前各家都有各家的风格,但是在谷歌出了material design这门新的 设计语言以及官方的库以后,相信

Android Support Design练手[DrawerLayout、CoordinatorLayout、CollapsingToolbarLayout...]

先po一张效果图 PS:原谅题主的懒惰吧.. 看着是不是很酷炫,那是因为5.0的动画做得好,代码其实没有多少,搞清楚这个布局的层次关系很重要. 废话不多说了,先来看布局文件 最外层是一个DrawerLayout,它里面可以嵌套(一个?)container和多个drawer 在这个demo中DrawerLayout包含了一个CoordinatorLayout , ListView , NavigationView CoordinatorLayout  作为 container的根布局 listVi

高逼格UI-ASD(Android Support Design)

绪 今年的Google IO给我们android开发着带来了三样很屌很屌的library: ASD(Android Support Design) APL(Android Percent Layout) DBL(Data Binding Library) 这三个库都是很屌很屌的库,第一个可以让我们在低版本的Android上使用Material Design,第二个是为了更好的适配,提供了基于百分比的Layout;至于第三个,能让Activity更好负责MVC中C的职责,让我们开发者更少的去fin