使用效果更好的Snackbar替代過時的Toast

對于Toast大家應(yīng)該都不陌生,雖然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);

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容