使用效果更好的Snackbar替代过时的Toast

对于Toast大家应该都不陌生,虽然Toast可以自定义布局,但我还是觉得太老套了,在很多app上达不到想要的效果。

因此,我们需要一款效果更好的工具来替代Toast。

Snackbar是design support library中另一个组件,它和Toast非常相似,但效果比Toast好很多。

使用Snackbar:

首先在gradle文件中添加:compile 'com.android.support:design:23.4.0'

Snackbar最原始的用法比较简单,和Toast类似:

Snackbar.make(mParent,"this is snackbar",Snackbar.LENGTH_SHORT)

.setAction("button", new View.OnClickListener() {

@Override

public void onClick(View v) {

//do something

}

}).show();

但是一般项目中使用的地方比较多,所以附上我自己对此写了一个工具类,有需要的朋友,可以直接使用。

public class SnackbarUtil {

//snackbar type

public static final int I = 1;

public static final int D = 2;

public static final int W = 3;

public static final int E = 4;

//color

private static int BLUE = 0xff2195f3;

private static int GREEN = 0xff4caf50;

private static int ORANGE = 0xffffc107;

private static int RED = 0xfff44336;

/**

* short duration

*

* @param view

* @param text

* @return

*/

public static Snackbar shortSnackbar(View view, CharSequence text) {

return shortSnackbar(view, text, 0);

}

/**

* short duration

*

* @param view

* @param text

* @param type

* @return

*/

public static Snackbar shortSnackbar(View view, CharSequence text, int type) {

return getSnackbar(view, text, type, Snackbar.LENGTH_SHORT);

}

/**

* long duration

*

* @param view

* @param text

* @return

*/

public static Snackbar longSnackbar(View view, CharSequence text) {

return shortSnackbar(view, text, 0);

}

/**

* long duration

*

* @param view

* @param text

* @param type

* @return

*/

public static Snackbar longSnackbar(View view, CharSequence text, int type) {

return getSnackbar(view, text, type, Snackbar.LENGTH_LONG);

}

/**

* get snackbar

*

* @param view

* @param text

* @param type

* @param duration

* @return

*/

private static Snackbar getSnackbar(View view, CharSequence text, int type, int duration) {

Snackbar snackbar = Snackbar.make(view, text, Snackbar.LENGTH_SHORT);

if (type > 0)

switchType(snackbar, type);

return snackbar;

}

/**

* set color by snackbar type

*

* @param snackbar

* @param type

*/

private static void switchType(Snackbar snackbar, int type) {

switch (type) {

case I:

setSnackbarBgColor(snackbar, BLUE);

break;

case D:

setSnackbarBgColor(snackbar, GREEN);

break;

case W:

setSnackbarBgColor(snackbar, ORANGE);

break;

case E:

setSnackbarBgColor(snackbar, RED);

break;

}

}

/**

* set snackbar background color

*

* @param snackbar

* @param color

*/

private static void setSnackbarBgColor(Snackbar snackbar, int color) {

if (snackbar == null)

return;

View view = snackbar.getView();

if (view == null)

return;

view.setBackgroundColor(color);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容