30e53e56bfe0ea0a916770389653a4027f1aab39.svn-base 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.hjq.dialog;
  2. import android.app.Dialog;
  3. import android.support.v4.app.FragmentActivity;
  4. import android.view.Gravity;
  5. import android.view.View;
  6. import android.widget.TextView;
  7. import com.hjq.base.BaseDialog;
  8. import com.hjq.base.BaseDialogFragment;
  9. /**
  10. * desc : 消息对话框
  11. */
  12. public final class MessageDialog {
  13. public static final class Builder
  14. extends BaseDialogFragment.Builder<Builder>
  15. implements View.OnClickListener {
  16. private OnListener mListener;
  17. private boolean mAutoDismiss = true; // 设置点击按钮后自动消失
  18. private TextView mTitleView;
  19. private TextView mMessageView;
  20. private TextView mCancelView;
  21. private View mLineView;
  22. private TextView mConfirmView;
  23. public Builder(FragmentActivity activity) {
  24. super(activity);
  25. setContentView(R.layout.dialog_message);
  26. setAnimStyle(BaseDialog.AnimStyle.IOS);
  27. setGravity(Gravity.CENTER);
  28. mTitleView = findViewById(R.id.tv_dialog_message_title);
  29. mMessageView = findViewById(R.id.tv_dialog_message_message);
  30. mCancelView = findViewById(R.id.tv_dialog_message_cancel);
  31. mLineView = findViewById(R.id.v_dialog_message_line);
  32. mConfirmView = findViewById(R.id.tv_dialog_message_confirm);
  33. mCancelView.setOnClickListener(this);
  34. mConfirmView.setOnClickListener(this);
  35. }
  36. public Builder setTitle(int resId) {
  37. return setTitle(getText(resId));
  38. }
  39. public Builder setTitle(CharSequence text) {
  40. mTitleView.setText(text);
  41. return this;
  42. }
  43. public Builder setMessage(int resId) {
  44. return setMessage(getText(resId));
  45. }
  46. public Builder setMessage(CharSequence text) {
  47. mMessageView.setText(text);
  48. return this;
  49. }
  50. public Builder setCancel(int resId) {
  51. return setCancel(getText(resId));
  52. }
  53. public Builder setCancel(CharSequence text) {
  54. mCancelView.setText(text);
  55. mCancelView.setVisibility((text == null || "".equals(text.toString())) ? View.GONE : View.VISIBLE);
  56. mLineView.setVisibility((text == null || "".equals(text.toString())) ? View.GONE : View.VISIBLE);
  57. mConfirmView.setBackgroundResource((text == null || "".equals(text.toString())) ?
  58. R.drawable.dialog_message_one_button : R.drawable.dialog_message_right_button);
  59. return this;
  60. }
  61. public Builder setConfirm(int resId) {
  62. return setConfirm(getText(resId));
  63. }
  64. public Builder setConfirm(CharSequence text) {
  65. mConfirmView.setText(text);
  66. return this;
  67. }
  68. public Builder setAutoDismiss(boolean dismiss) {
  69. mAutoDismiss = dismiss;
  70. return this;
  71. }
  72. public Builder setListener(OnListener l) {
  73. mListener = l;
  74. return this;
  75. }
  76. @Override
  77. public BaseDialog create() {
  78. // 如果标题为空就隐藏
  79. if ("".equals(mTitleView.getText().toString())) {
  80. mTitleView.setVisibility(View.GONE);
  81. }
  82. // 如果内容为空就抛出异常
  83. if ("".equals(mMessageView.getText().toString())) {
  84. throw new IllegalArgumentException("Dialog message not null");
  85. }
  86. return super.create();
  87. }
  88. /**
  89. * {@link View.OnClickListener}
  90. */
  91. @Override
  92. public void onClick(View v) {
  93. if (mAutoDismiss) {
  94. dismiss();
  95. }
  96. if (mListener == null) return;
  97. if (v == mConfirmView) {
  98. mListener.onConfirm(getDialog());
  99. }else if (v == mCancelView) {
  100. mListener.onCancel(getDialog());
  101. }
  102. }
  103. }
  104. public interface OnListener {
  105. /**
  106. * 点击确定时回调
  107. */
  108. void onConfirm(Dialog dialog);
  109. /**
  110. * 点击取消时回调
  111. */
  112. void onCancel(Dialog dialog);
  113. }
  114. }