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;
}
}