自定义对话框,你只用传你自己的布局即可。
单例模式创建对象,记得在destory方法里面置空
private static CustomProgressDialog instance;
public static CustomProgressDialog getInstance(Context context) {
if (null == instance) {
instance = new CustomProgressDialog(context);
}
return instance;
}
设置对话框显示的位置和背景透明度
public void setDialogLocationWindowAlpha(int gravity, float alpha) {
Window window = instance.getWindow();
window.setGravity(gravity);
WindowManager.LayoutParams lp = window.getAttributes();
lp.dimAmount = alpha;
window.setAttributes(lp);
}
再就是一些常用方法:
/**
* 设置标题
*
* @param title
* @return
*/
public CustomProgressDialog setMyTitle(@Nullable CharSequence title) {
instance.setTitle(title);
return this;
}
/**
* 设置布局
*
* @param layout
* @return
*/
public CustomProgressDialog setMyView(@LayoutRes int layout) {
instance.setContentView(layout);
return this;
}
/**
* 设置布局
* @param view
* @return
*/
public CustomProgressDialog setMyView(View view) {
instance.setContentView(view);
return this;
}
/**
* 设置TextView的title
*
* @param id
* @param msg
* @return
*/
public CustomProgressDialog setMyTvText(int id, String msg) {
View view = findViewById(id);
if (null != view && view instanceof TextView) {
((TextView) view).setText(msg);
}
return this;
}
/**
* 按返回键是否取消
*
* @param cancelable
* @return
*/
public CustomProgressDialog setMyCancelables(boolean cancelable) {
instance.setCancelable(cancelable);
return this;
}
/**
* 点击dialog外部是否取消
*
* @param cancelable
* @return
*/
public CustomProgressDialog setMyCanceledOnTouchOutsides(boolean cancelable) {
instance.setCanceledOnTouchOutside(cancelable);
return this;
}
/**
* 监听返回键处理
*
* @param listener
* @return
*/
public CustomProgressDialog setOnMyCancelListeners(OnCancelListener listener) {
instance.setOnCancelListener(listener);
return this;
}
/**
* dialog显示
*
* @return
*/
public CustomProgressDialog shows() {
instance.show();
return this;
}
/**
* dialog隐藏
*
* @return
*/
public CustomProgressDialog dissmiss() {
instance.dismiss();
return this;
}
/**
* 销毁的时候把instance置空
*
* @return
*/
public CustomProgressDialog destory() {
instance = null;
return this;
}
调用方式:
instanceProgressDialog = CustomProgressDialog.getInstance(context)
View view = LayoutInflater.from(context).inflate(R.layout.update_dialog, null)
instanceProgressDialog.setMyView(view)
instanceProgressDialog.setMyTitle("下载")
instanceProgressDialog.setMyCanceledOnTouchOutsides(false)
instanceProgressDialog.setMyCancelables(false)
instanceProgressDialog.show()
自定义view工具类