2015年5月29日 星期五

Android 開發 (九十五) What's New in M support-design-widget Snackbar

What's SnackBar ? 讓我們看一下下面的圖片

SnackBar我們可以理解為進階版的toast
例如說當用戶刪除了某項商品,我們其實無法用比較不擾人的方式
去提示用戶是否要刪除該商品

如果用dialog 非常擾人
如果用toast 非常無感...而且無法做任何undo的動作

SnackBar應該是比較折衷的方式,利用show出一小段提示,讓用戶有機會可以反悔

講了那麼多我們要來介紹來如何實做了
要使用SnackBar我們只需要
    findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
        @Override public void onClick (View view){
            SpannableString s = new SpannableString("you just remove this product");
            s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            Snackbar.make(view, s, Snackbar.LENGTH_SHORT).setAction("undo", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d("Ted", "do click");
                }
            }).setActionTextColor(Color.parseColor("#FF2750")).show();
        }
    });

如上使用 Snackbar.make(...).show()就可以了,比較跟toast不同的地方在於,
snackbar需要view,而且文字可以換色,並且擁有click event,

在這邊還有一件事情要特別提到,Snackbar並沒有提供設定左邊文字顏色的api,
不過我們可以利用SpannableString來換色,如上面的sample code

我想之後很多app都會使用到這樣的特效吧. 個人真的認為還蠻實用的!!

沒有留言:

張貼留言