1.Dialog
dialog提醒用户时,会暂时终止用户当前的行为,用户必须点击确定或者取消才能进行下一步的操作,带有强制性的提醒.
基本的用法我写在下面。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("标题")
.setMessage("我是内容")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
})
.show();
因为Android版本太多了,显示在各个手机上的样式都不太一样,所以大部分情况下我们用的都是自定义的dialog
2.Toast
Toast,也就是大家常说的”吐司”, 给用户一个友好提示,不带有强制性,不会强制用户终止当前的行为,用户可以继续进行下一步的行为.基本的写法
Toast.makeText(this, "我是吐司", Toast.LENGTH_SHORT).show();
在平常的开发中,我们为了防止用户多次点击会做一些判断,下面写一个我平常的写法,先判断是在主线程还是子线程,再判断用户有没有”手抖”多次点击,然后再进行吐司。
/**
* Toast的工具类
*
* @author zhangbing
* @Description: (用一句话描述该类作用)
* @CreateDate: 2017/12/20 14:05
* @email 314835006@qq.com
* @UpdateUser: zhangbing
* @UpdateDate: 2017/12/20 14:05
* @UpdateRemark:
*/
public class ToastUtils {
private static Toast toast;
/**
* 防止用户连续点击的吐司
*
* @Params
* @author zhangbing
* @date 2017/12/20 14:06
* @email 314835006@qq.com
*/
public static void showToast(final Activity ctx, final String content) {
if ("main".equals(Thread.currentThread().getName())) { //主线程
if (toast == null) {
toast = Toast.makeText(ctx, content, Toast.LENGTH_SHORT);
} else {
toast.setText(content);
}
toast.show();
} else { //子线程
ctx.runOnUiThread(new Runnable() {
@Override
public void run() {
if (toast == null) {
toast = Toast.makeText(ctx, content, Toast.LENGTH_SHORT);
} else {
toast.setText(content);
}
toast.show();
}
});
}
}
}
3.SnackBar
SnackBar介于二者之前,他会从指定布局的下面弹出,用户可以理会它,点击确认按钮会消失,也可以不理会他,一段时间后自己消失,基本写法如下:
Snackbar.make(view, "我是内容", Snackbar.LENGTH_LONG)
.setAction("确定", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
})
.show();
参数中的view是指定的布局。
总结:
1.带有强制性的提醒用Dialog。
2.仅仅给个提醒,不影响用户的其他行为用Toast。
3.介于二者之前用SnackBar。