package com.jiuqi.njt.widget; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import com.jiuqi.njt.R; /** * 自定义选择图片对话框 * 样式是圆角(有三个按钮) * @author qyd * */ public class ChosePictureDialog extends Dialog { public ChosePictureDialog(Context context) { super(context); } public ChosePictureDialog(Context context, int theme) { super(context, theme); } public static class Builder { private Context context; private String chosePictureFromPhoneButtonText; private String chosePictureFromCameraButtonText; private String chosePictureCancelButtonText; private View contentView; private DialogInterface.OnClickListener chosePictureFromPhoneButtonClickListener; private DialogInterface.OnClickListener chosePictureFromCameraButtonClickListener; private DialogInterface.OnClickListener chosePictureCancelButtonClickListener; public Builder(Context context) { this.context = context; } public Builder setContentView(View v) { this.contentView = v; return this; } /** * 设置 对话框按钮点击事件 * * @param positiveButtonText * @return */ public Builder setChosePictureFromPhoneButton( String chosePictureFromPhoneButtonText, DialogInterface.OnClickListener listener) { this.chosePictureFromPhoneButtonText =chosePictureFromPhoneButtonText; this.chosePictureFromPhoneButtonClickListener = listener; return this; } public Builder setChosePictureFromCameraButton( String chosePictureFromCameraButtonText, DialogInterface.OnClickListener listener) { this.chosePictureFromCameraButtonText =chosePictureFromCameraButtonText; this.chosePictureFromCameraButtonClickListener = listener; return this; } public Builder setChosePictureCancelButton( String chosePictureCancelButtonText, DialogInterface.OnClickListener listener) { this.chosePictureCancelButtonText =chosePictureCancelButtonText; this.chosePictureCancelButtonClickListener = listener; return this; } private boolean dialogGravity =true; public void setDialogGravity(boolean dialogGravity) { this.dialogGravity = dialogGravity; } public MyAlertDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // instantiate the dialog with the custom Theme final MyAlertDialog dialog = new MyAlertDialog(context, R.style.Dialog_new_new); View layout = inflater.inflate(R.layout.chose_picture_dialog_layout, null); dialog.addContentView(layout, new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); ((Button) layout.findViewById(R.id.chosePictureFromPhone)) .setText(chosePictureFromPhoneButtonText); if (chosePictureFromPhoneButtonClickListener != null) { ((Button) layout.findViewById(R.id.chosePictureFromPhone)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { chosePictureFromPhoneButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE); } }); } ((Button) layout.findViewById(R.id.chosePictureFromCamera)) .setText(chosePictureFromCameraButtonText); if (chosePictureFromCameraButtonClickListener != null) { ((Button) layout.findViewById(R.id.chosePictureFromCamera)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { chosePictureFromCameraButtonClickListener.onClick(dialog, DialogInterface.BUTTON_NEGATIVE); } }); } ((Button) layout.findViewById(R.id.chosePictureCancel)) .setText(chosePictureCancelButtonText); if (chosePictureCancelButtonClickListener != null) { ((Button) layout.findViewById(R.id.chosePictureCancel)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { chosePictureCancelButtonClickListener.onClick(dialog, DialogInterface.BUTTON_NEGATIVE); } }); } dialog.setContentView(layout); if(dialogGravity){ dialog.getWindow().setGravity(Gravity.BOTTOM); } WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.dimAmount = 0.6f; dialog.getWindow().setAttributes(lp); dialog.getWindow().addFlags( WindowManager.LayoutParams.FLAG_DIM_BEHIND); return dialog; } } }