10fa3a2788633dd98273d1a523b90f05f76c74cc.svn-base 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.hjq.dialog;
  2. import android.support.v4.app.FragmentActivity;
  3. import android.view.Gravity;
  4. import android.widget.ImageView;
  5. import android.widget.TextView;
  6. import com.hjq.base.BaseDialog;
  7. import com.hjq.base.BaseDialogFragment;
  8. /**
  9. * desc : Toast 效果对话框
  10. */
  11. public final class ToastDialog {
  12. public static final class Builder
  13. extends BaseDialogFragment.Builder<Builder>
  14. implements Runnable, BaseDialog.OnShowListener {
  15. private TextView mMessageView;
  16. private ImageView mIconView;
  17. private Type mType = Type.WARN;
  18. private int mDuration = 2000;
  19. public Builder(FragmentActivity activity) {
  20. super(activity);
  21. setThemeStyle(R.style.TransparentDialogStyle);
  22. setContentView(R.layout.dialog_toast);
  23. setAnimStyle(BaseDialog.AnimStyle.TOAST);
  24. setGravity(Gravity.CENTER);
  25. setCancelable(false);
  26. mMessageView = findViewById(R.id.tv_dialog_toast_message);
  27. mIconView = findViewById(R.id.iv_dialog_toast_icon);
  28. }
  29. public Builder setType(Type type) {
  30. mType = type;
  31. switch (type) {
  32. case FINISH:
  33. mIconView.setImageResource(R.mipmap.ic_dialog_finish);
  34. break;
  35. case ERROR:
  36. mIconView.setImageResource(R.mipmap.ic_dialog_error);
  37. break;
  38. case WARN:
  39. mIconView.setImageResource(R.mipmap.ic_dialog_warning);
  40. break;
  41. }
  42. return this;
  43. }
  44. public Builder setDuration(int duration) {
  45. mDuration = duration;
  46. return this;
  47. }
  48. public Builder setMessage(int resId) {
  49. return setMessage(getText(resId));
  50. }
  51. public Builder setMessage(CharSequence text) {
  52. mMessageView.setText(text);
  53. return this;
  54. }
  55. @Override
  56. public BaseDialog create() {
  57. // 如果显示的类型为空就抛出异常
  58. if (mType == null) {
  59. throw new IllegalArgumentException("The display type must be specified");
  60. }
  61. // 如果内容为空就抛出异常
  62. if ("".equals(mMessageView.getText().toString())) {
  63. throw new IllegalArgumentException("Dialog message not null");
  64. }
  65. addOnShowListener(this);
  66. return super.create();
  67. }
  68. /**
  69. * {@link BaseDialog.OnShowListener}
  70. */
  71. @Override
  72. public void onShow(BaseDialog dialog) {
  73. // 延迟自动关闭
  74. postDelayed(this, mDuration);
  75. }
  76. @Override
  77. public void run() {
  78. if (getDialogFragment() != null &&
  79. getDialogFragment().isAdded() &&
  80. getDialog() != null &&
  81. getDialog().isShowing()) {
  82. dismiss();
  83. }
  84. }
  85. }
  86. /**
  87. * 显示的类型
  88. */
  89. public enum Type {
  90. // 完成,错误,警告
  91. FINISH, ERROR, WARN
  92. }
  93. }