java confirmdialog_AlertConfirmDialog【基于AlertDialog的确认取消对话框】

packagecom.hxzk.som.base.dialog;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.Context;importandroid.os.Bundle;importandroid.text.TextUtils;importandroid.util.DisplayMetrics;importandroid.view.Gravity;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.Button;importandroid.widget.FrameLayout;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.ScrollView;importandroid.widget.TextView;importcom.hxzk.som.base.R;/*** Created by HaiyuKing

* Used 确定取消对话框*/

public class AlertConfirmDialog extendsAlertDialog{private Context context;//上下文

private ImageView mIconImg;//图标

private TextView mTitleTv;//提示

private ScrollView mMsgScroll;//内容的父节点,用于内容较多时可以滚动

private TextView mMessage;//内容

private Button mConfirmBtn;//确认按钮

private Button mCancelBtn;//取消按钮

private View mCancelLine;//取消按钮判断的竖线

private int iconImgResId = 0;//图标的resid值

private String mseeageStr = "";//内容文本

private String confirmBtnTvStr = "";//确认按钮的文本

private String cancelBtnTvStr = "";//取消按钮的文本

private boolean cancelButtonHidden = false;//是否隐藏取消按钮

public AlertConfirmDialog(Context context, int iconImgResId, String mseeageStr, String confirmBtnTvStr, String cancelBtnTvStr, booleancancelButtonHidden) {super(context, R.style.style_alert_confirm_dialog);//设置对话框样式//设置为false,按对话框以外的地方不起作用

setCanceledOnTouchOutside(true);//设置为false,按返回键不能退出

setCancelable(true);this.context =context;this.iconImgResId =iconImgResId;this.mseeageStr =mseeageStr;this.confirmBtnTvStr =confirmBtnTvStr;this.cancelBtnTvStr =cancelBtnTvStr;this.cancelButtonHidden =cancelButtonHidden;

}

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.alert_dialog_confirm_cancel);

initViews();

initDatas();

initEvents();

}/**初始化view*/

private voidinitViews() {

mIconImg=(ImageView) findViewById(R.id.alertdialogconfirm_img);

mTitleTv=(TextView) findViewById(R.id.alertdialogconfirm_title);

mMsgScroll=(ScrollView) findViewById(R.id.alertdialogconfirm_message_scroll);

mMessage=(TextView) findViewById(R.id.alertdialogconfirm_message);

mConfirmBtn=(Button) findViewById(R.id.alertdialogconfirm_confirm);

mCancelBtn=(Button) findViewById(R.id.alertdialogconfirm_cancel);

mCancelLine=findViewById(R.id.cancel_line);

}/**初始化数据*/

private voidinitDatas() {//赋值新的图标,如果图标为空,则直接显示提示标题即可

if(iconImgResId != 0){

mIconImg.setBackgroundResource(iconImgResId);

mTitleTv.setVisibility(View.GONE);

}else{

mIconImg.setVisibility(View.GONE);

mTitleTv.setVisibility(View.VISIBLE);

}//赋值内容文本

mMessage.setText(mseeageStr);//赋值确认和取消按钮的文本

if(!TextUtils.isEmpty(confirmBtnTvStr)){

mConfirmBtn.setText(confirmBtnTvStr);

}if(!TextUtils.isEmpty(cancelBtnTvStr)){

mCancelBtn.setText(cancelBtnTvStr);

}if(cancelButtonHidden){//隐藏取消按钮

mCancelBtn.setVisibility(View.GONE);

mCancelLine.setVisibility(View.GONE);

mConfirmBtn.setBackgroundResource(R.drawable.alert_dialog_confirm_one_btn_bg);//设置确认按钮的背景

}//设置内容文本居中对齐

FrameLayout.LayoutParams msgParams = newFrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

msgParams.gravity=Gravity.CENTER_HORIZONTAL;

mMessage.setLayoutParams(msgParams);//设置内容区域的父节点的高度和内容文本大小

final DisplayMetrics display = newDisplayMetrics();

((Activity)this.context).getWindowManager().getDefaultDisplay().getMetrics(display);if (display.widthPixels <= 480) {

mMessage.setTextSize(15.0F);

}final int screenHeight =display.heightPixels;//Log.w(TAG,"display.widthPixels="+display.widthPixels);//Log.w(TAG,"screenHeight="+screenHeight);//防止内容动态赋值的时候,宽度变化导致跳动

mMsgScroll.setLayoutParams(new LinearLayout.LayoutParams(display.widthPixels - context.getResources().getDimensionPixelOffset(R.dimen.alert_dialog_confirm_margin) * 2,

ViewGroup.LayoutParams.WRAP_CONTENT));//runnable中的方法会在View的measure、layout等事件后触发

mMsgScroll.post(newRunnable() {

@Overridepublic voidrun() {//Log.w(TAG,"mMsgScroll.getMeasuredHeight()="+mMsgScroll.getMeasuredHeight());

if (mMsgScroll.getMeasuredHeight() > screenHeight / 2) {

mMsgScroll.setLayoutParams(new LinearLayout.LayoutParams(display.widthPixels - context.getResources().getDimensionPixelOffset(R.dimen.alert_dialog_confirm_margin) * 2,

screenHeight/ 2));

}else{//屏幕宽度减去外边距*2

mMsgScroll.setLayoutParams(new LinearLayout.LayoutParams(display.widthPixels - context.getResources().getDimensionPixelOffset(R.dimen.alert_dialog_confirm_margin) * 2,

ViewGroup.LayoutParams.WRAP_CONTENT));

}

}

});

}/**初始化监听事件*/

private voidinitEvents() {//确定按钮的点击事件

mConfirmBtn.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View view) {if(mOnCertainButtonClickListener != null){

mOnCertainButtonClickListener.onCertainButtonClick();

}

dismiss();

}

});//取消按钮的点击事件

mCancelBtn.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View view) {if(mOnCertainButtonClickListener != null){

mOnCertainButtonClickListener.onCancleButtonClick();

}

dismiss();

}

});

}

@Overridepublic voiddismiss() {super.dismiss();if(mOnCertainButtonClickListener != null){

mOnCertainButtonClickListener.onDismissListener();

}

}//设置取消按钮的颜色【重点标记,用于引导用户点击】

public voidsetCancelBtnColor(){if(mCancelBtn !=null){

mCancelBtn.setTextColor(context.getResources().getColor(R.color.alert_dialog_confirm_title_color));

}

}//设置确定按钮的颜色【重点标记,用于引导用户点击】

public voidsetConfirmBtnColor(){if(mConfirmBtn !=null) {

mConfirmBtn.setTextColor(context.getResources().getColor(R.color.alert_dialog_confirm_title_color));

}

}public static abstract interfaceOnCertainButtonClickListener

{//取消按钮的点击事件接口

public abstract voidonCancleButtonClick();//确认按钮的点击事件接口

public abstract voidonCertainButtonClick();//返回键触发的事件接口

public abstract voidonDismissListener();

}privateOnCertainButtonClickListener mOnCertainButtonClickListener;public voidsetOnCertainButtonClickListener(OnCertainButtonClickListener mOnCertainButtonClickListener)

{this.mOnCertainButtonClickListener =mOnCertainButtonClickListener;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值