先看效果图吧…
要是这个效果网上有几个例子,记得有一个是采用activity的形式,把activity变成框和透明的,看起来是悬浮在界面上,每次调用需要用Intent跳转的方式,这样子不方便,而且很麻烦,于是我就产生了自定一个dialog的方法。
代码部分:
/**
* 自定义dialog
*
* @author yangxixi
*
*/
public class CustomDialog extends Dialog {
public CustomDialog(Context context, int theme) {
super(context, theme);
}
public CustomDialog(Context context) {
super(context);
}
public static class Builder {
private Context context;
//对话框
public CustomDialog dialog = null;
//提示信息
private String message;
public Builder(Context context) {
this.context = context;
}
/**
* 对话框消失
*/
public void dismiss() {
dialog.dismiss();
}
/**
* 设置提示信息
* @param message
* @return
*/
public Builder setMessage(String message) {
this.message = message;
return this;
}
/**
* 设置提示信息
* @param message
* @return
*/
public Builder setMessage(int message) {
this.message = (String) context.getText(message);
return this;
}
/**
* 提示栏被取消
* @param onCancelListener
*/
public Builder setCancleListener(OnCancelListener onCancelListener) {
dialog.setOnCancelListener(onCancelListener);
return this;
}
@SuppressLint("Override")
public CustomDialog create() {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// instantiate the dialog with the custom Theme
dialog = new CustomDialog(context, R.style.Dialog);
View layout = inflater.inflate(R.layout.dialog_loading, null);
//设置信息
TextView tv_loading_msg = (TextView) layout.findViewById(R.id.loading_msg);
tv_loading_msg.setText(message);
dialog.addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
// dialog.setCancelable(false);按返回键或者点击加载外面都不可以返回
dialog.setCanceledOnTouchOutside(false);//<span style="font-family: Arial, Helvetica, sans-serif;">按返回键可以返回但点击加载外面都不可以返回</span>
dialog.setContentView(layout);
return dialog;
}
}
}
调用方式:
CustomDialog.Builder builder = new CustomDialog.Builder(context);
builder.setMessage(msg);
builder.create().show();
builder.setCancleListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
LogUtil.showInfo("进度栏被取消啦");
}
});
调用方式相对简单,我这边希望可以监听到加载框被取消了,我就在自定的方法里面加了一个监听方法。还有其他需要的都可以自行添加代码。
优点:用自定义的dialog的去处理,不要再布局文件里面添加进度条什么的,独立出来,逻辑清晰,调用简单,还可以重复使用。
欢迎各位留言和指正。