下面简单记录下,要改变alertDialog的宽度,重点是在改变该dialog宿主Activity的宽度,下面粘贴一个示例
效果图
image.pngpublic class MyDialogUtil {
private static MyDialogUtil sMyDialogUtil;
public static MyDialogUtil getInstance() {
if (sMyDialogUtil == null) {
synchronized (MyDialogUtil.class) {
if (sMyDialogUtil == null) {
sMyDialogUtil = new MyDialogUtil();
}
}
}
return sMyDialogUtil;
}
private static DialogCallBack mDialogCallBack;
public MyDialogUtil setDialogCallBack(DialogCallBack dialogCallBack) {
mDialogCallBack = dialogCallBack;
return this;
}
public void showPermissionDialog(Context context, String permissionTip) {
AlertDialog alertDialog = new AlertDialog.Builder(context)
.setMessage(permissionTip)
.setPositiveButton(context.getString(R.string.resume), (dialog, which) -> {
//确定,调用确定的回调
if (mDialogCallBack != null) {
mDialogCallBack.positiveClick(dialog);
}
dialog.dismiss();
})
.setNegativeButton(context.getString(R.string.cancel), (dialog, which) -> {
if (mDialogCallBack != null) {
mDialogCallBack.negativeClick(dialog);
}
dialog.dismiss();
//退出应用
//activity.onBackPressed();
})
.create();
alertDialog.show();
}
//展示权限的对话框
public static void showPermissionAlert(Activity activity, Context context, String tips, View view,
int res, boolean touchCancel, DialogActCallBack callBack) {
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.dialogTheme);
AlertDialog alertDialog = builder.create();
alertDialog.setView(view);
Window window = alertDialog.getWindow();
if (window != null) {
window.getDecorView().setPadding(0, 0, 0, 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
window.getDecorView().setBackground(context.getResources().getDrawable(res));
}
WindowManager manager = activity.getWindowManager();
Display display = manager.getDefaultDisplay();
android.view.WindowManager.LayoutParams lp = alertDialog.getWindow()
.getAttributes();
lp.gravity = Gravity.CENTER;
lp.width = display.getWidth() * 4 / 5;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
alertDialog.getWindow().setAttributes(lp);
alertDialog.setCancelable(touchCancel);
alertDialog.setCanceledOnTouchOutside(touchCancel);
window.setWindowAnimations(R.style.alertDialogStyle01);
}
//设置window动画
TextView init_permissions_tv = view.findViewById(R.id.init_permissions_tv);
Button pushOutAppBtn = view.findViewById(R.id.pushOutAppBtn);
Button agreeBtn = view.findViewById(R.id.agreeBtn);
if (!TextUtils.isEmpty(tips)) {
init_permissions_tv.setText(tips);
}
pushOutAppBtn.setOnClickListener(view1 -> {
if (callBack != null) {
callBack.cancelActCallBack(alertDialog);
}
});
agreeBtn.setOnClickListener(view1 -> {
if (callBack != null) {
callBack.positionActCallBack(alertDialog);
}
});
alertDialog.show();
}
}
使用示例
MyDialogUtil.showPermissionAlert(PermissionActivity.this,PermissionActivity.this,
"",view,R.drawable.dialog_bg,false, new DialogActCallBack() {
@Override
public void cancelActCallBack(AlertDialog alertDialog) {
alertDialog.dismiss();
MyActivityManager.getMyActivityManager().removeAllAct();
}
@Override
public void positionActCallBack(AlertDialog alertDialog) {
//再次申请权限
requestPermissions(pers);
alertDialog.dismiss();
}
});
需要的可以在进行链式封装,这里仅作为示例
网友评论