Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.72 KB | None | 0 0
  1. package com.bareksa.app.fragment;
  2.  
  3. import android.content.res.Resources;
  4. import android.graphics.drawable.Drawable;
  5. import android.os.Bundle;
  6. import android.support.annotation.DrawableRes;
  7. import android.support.annotation.LayoutRes;
  8. import android.support.annotation.NonNull;
  9. import android.support.annotation.Nullable;
  10. import android.support.v4.content.res.ResourcesCompat;
  11. import android.support.v7.app.AppCompatDialogFragment;
  12. import android.support.v7.widget.AppCompatImageView;
  13. import android.support.v7.widget.AppCompatTextView;
  14. import android.view.LayoutInflater;
  15. import android.view.View;
  16. import android.view.ViewGroup;
  17. import android.widget.LinearLayout;
  18. import android.widget.Toast;
  19.  
  20. import com.bareksa.app.R;
  21.  
  22. /**
  23. * example usage:
  24. * <code>
  25. * final DialogMessageFragment dialog = new DialogMessageFragment()
  26. * .setMessage(getString(R.string.untuk_mengikuti_bareksa_fund_academy))
  27. * .setHeader(getString(R.string.error_token))
  28. * .setBotton("Lanjutkan")
  29. * .setImage(ResourcesCompat.getDrawable(getResources(), R.drawable.alert_box_success, null))
  30. * .setOverlayMode(true)
  31. * .setButtonBorderless(true);
  32. *
  33. * dialog.showNow(getSupportFragmentManager(), null);
  34. *
  35. * dialog.getButton().setOnClickListener(new View.OnClickListener() {
  36. *
  37. * @Override public void onClick(View v) {
  38. * Toast.makeText(v.getContext(), "click", Toast.LENGTH_SHORT).show();
  39. * dialog.dismiss();
  40. * }
  41. * });
  42. * </code>
  43. */
  44. public class DialogMessageFragment extends AppCompatDialogFragment implements View.OnClickListener {
  45.  
  46. private Drawable mImageDrawable;
  47. private String mHeader;
  48. private String mMessage;
  49. private String mButton;
  50. @LayoutRes
  51. private int mCustomMessageId = 0;
  52.  
  53. private boolean isUseCustomMessage;
  54. private boolean mButtonStyleBorderless;
  55. private boolean mOverlayMode = true;
  56. private View.OnClickListener mButtonOnClickListeter;
  57.  
  58. private AppCompatImageView vImage;
  59. private AppCompatTextView vHeader;
  60. private AppCompatTextView vMessage;
  61. private AppCompatTextView vButton;
  62. private AppCompatImageView vCloseButton;
  63. private LinearLayout vCustomMessageBox;
  64. private View vCustomMessage;
  65.  
  66.  
  67. //region GETTER-SETTER
  68.  
  69.  
  70. public DialogMessageFragment setImage(Drawable drawable) {
  71. this.mImageDrawable = drawable;
  72. invalidateView();
  73. return this;
  74. }
  75.  
  76. public DialogMessageFragment setImage(Resources res, @DrawableRes int id) {
  77. setImage(ResourcesCompat.getDrawable(res, id, null));
  78. return this;
  79. }
  80.  
  81. public DialogMessageFragment setMessage(String message) {
  82. this.mMessage = message;
  83. this.isUseCustomMessage = false;
  84. invalidateView();
  85. return this;
  86. }
  87.  
  88. public DialogMessageFragment setViewAsMessage(@LayoutRes int customMessage) {
  89. this.mCustomMessageId = customMessage;
  90. this.isUseCustomMessage = true;
  91. this.vCustomMessage = null;
  92. invalidateView();
  93. return this;
  94. }
  95.  
  96.  
  97. public DialogMessageFragment setHeader(String header) {
  98. this.mHeader = header;
  99. invalidateView();
  100. return this;
  101. }
  102.  
  103. public DialogMessageFragment setBotton(String button) {
  104. this.mButton = button;
  105. invalidateView();
  106. return this;
  107. }
  108.  
  109.  
  110. public DialogMessageFragment setOverlayMode(boolean mode) {
  111. this.mOverlayMode = mode;
  112. invalidateView();
  113. return this;
  114. }
  115.  
  116. public DialogMessageFragment setButtonBorderless(boolean style) {
  117. this.mButtonStyleBorderless = style;
  118. invalidateView();
  119. return this;
  120. }
  121.  
  122. public DialogMessageFragment setOnButtonClickListener(View.OnClickListener o) {
  123. this.mButtonOnClickListeter = o;
  124. invalidateView();
  125. return this;
  126. }
  127.  
  128. //endregion
  129.  
  130.  
  131. void invalidateView() {
  132. if (vImage != null) {
  133. vImage.setImageDrawable(mImageDrawable);
  134. vImage.setVisibility(mImageDrawable == null ? View.GONE : View.VISIBLE);
  135. }
  136. if (vHeader != null) vHeader.setText(mHeader);
  137.  
  138. if (vMessage != null) {
  139. vMessage.setText(mMessage);
  140. vMessage.setVisibility(isUseCustomMessage ? View.GONE : View.VISIBLE);
  141. }
  142.  
  143. if (vButton != null) {
  144. vButton.setText(mButton);
  145. vButton.setOnClickListener(mButtonOnClickListeter == null
  146. ? this
  147. : mButtonOnClickListeter);
  148. // if (mButtonStyleBorderless){
  149. // vButton.setTextAppearance(getContext(),R.style.AppTheme_Button_BorderLess);
  150. // }else {
  151. // vButton.setTextAppearance(getContext(),R.style.AppTheme_Button);
  152. // }
  153. }
  154. if (vCustomMessageBox != null) {
  155. if (isUseCustomMessage) {
  156.  
  157. try {
  158. if (vCustomMessage == null)
  159. vCustomMessage = LayoutInflater.from(vCustomMessageBox.getContext())
  160. .inflate(mCustomMessageId, vCustomMessageBox, false);
  161. } catch (Exception ignore) {
  162. }
  163. if (vCustomMessage != null) {
  164. vCustomMessageBox.addView(vCustomMessage);
  165. }
  166. } else {
  167. vCustomMessageBox.removeAllViews();
  168. }
  169.  
  170. }
  171. }
  172.  
  173.  
  174. //region OVERIDED LIFECYCLE
  175. @Override
  176. public int getTheme() {
  177. return R.style.AppTheme_PopupAlertDialog;
  178. }
  179.  
  180. @Nullable
  181. @Override
  182. public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  183. View v = inflater.inflate(R.layout.dialog_message, container, false);
  184.  
  185. v.findViewById(R.id.rootLayout).setBackgroundResource(mOverlayMode ? 0 : R.color.green);
  186.  
  187. vImage = v.findViewById(R.id.iv_icon);
  188. vHeader = v.findViewById(R.id.tv_header);
  189. vMessage = v.findViewById(R.id.tv_message);
  190. vCustomMessageBox = v.findViewById(R.id.custom_message);
  191. vButton = v.findViewById(R.id.button);
  192. vCloseButton = v.findViewById(R.id.close);
  193.  
  194. vCloseButton.setVisibility(isCancelable() ? View.VISIBLE : View.GONE);
  195. vCloseButton.setOnClickListener(new View.OnClickListener() {
  196. @Override
  197. public void onClick(View v) {
  198. DialogMessageFragment.this.dismiss();
  199. }
  200. });
  201. vCloseButton.setOnLongClickListener(new View.OnLongClickListener() {
  202. @Override
  203. public boolean onLongClick(View v) {
  204. Toast.makeText(getActivity(), "Close", Toast.LENGTH_SHORT).show();
  205. return true;
  206. }
  207. });
  208. return v;
  209. }
  210.  
  211. @Override
  212. public void onResume() {
  213. super.onResume();
  214. invalidateView();
  215. }
  216.  
  217. @Override
  218. public void onClick(View v) {
  219. dismiss();
  220. }
  221.  
  222. //endregion
  223.  
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement