Quellcode durchsuchen

[공통][Common] 공통 얼랏 레이아웃 커스텀

Hasemi vor 6 Jahren
Ursprung
Commit
5d8d359ee3

+ 80 - 35
app/src/main/java/kr/co/zumo/app/lifeplus/view/dialog/ConfirmDialog.java

@@ -4,10 +4,12 @@
 package kr.co.zumo.app.lifeplus.view.dialog;
 
 import android.app.Dialog;
-import android.content.DialogInterface;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.StringRes;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.view.Event;
@@ -32,6 +34,18 @@ public class ConfirmDialog extends TextDialog<ICustomConfirmListener<ConfirmDial
   @StringRes
   protected int titleStringId = R.string.empty_string;
 
+  private TextView textViewTitle;
+
+  private TextView textViewContents;
+
+  private TextView textViewNegativeButtonText;
+
+  private TextView textViewPositiveButtonText;
+
+  private ImageView imageViewClose;
+
+  private boolean isAppReviewType;
+
   /**
    * back key 가능 여부 설정
    *
@@ -61,55 +75,86 @@ public class ConfirmDialog extends TextDialog<ICustomConfirmListener<ConfirmDial
     this.negativeButtonLabel = stringId;
   }
 
+
   /**
-   * Title string id
+   * 표시할 title 지정
    *
    * @param stringId
    */
-  public void setTitleId(@StringRes int stringId) {
-    this.titleStringId = stringId;
-  }
+  public void setTitleId(@StringRes int stringId) {this.titleStringId = stringId;}
+
+  public void isAppReviewType(boolean isAppReviewType) {this.isAppReviewType = isAppReviewType;}
 
   @NonNull
   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
-    if (positiveButtonLabel == R.string.empty_string) {
-      positiveButtonLabel = R.string.confirm;
-    }
-
-    if (negativeButtonLabel == R.string.empty_string) {
-      negativeButtonLabel = R.string.cancel;
-    }
 
     // Use the Builder class for convenient dialog construction
     android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(getActivity());
-    builder.setMessage(text)
-      .setPositiveButton(positiveButtonLabel, new DialogInterface.OnClickListener() {
-        public void onClick(DialogInterface dialog, int id) {
-          if (null != getCustomListener()) {
-            getCustomListener().onPositiveResult(ConfirmDialog.this, new Event.Builder(Event.CONFIRM).build());
-
-          }
-        }
-      })
-      .setNegativeButton(negativeButtonLabel, new DialogInterface.OnClickListener() {
-        public void onClick(DialogInterface dialog, int id) {
-          if (null != getCustomListener()) {
-            getCustomListener().onNegativeResult(ConfirmDialog.this, new Event.Builder(Event.CANCEL).build());
-          }
-        }
-      });
+    View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_app_review, null);
+    setupView(view);
+    builder.setView(view);
+    Dialog dialog = builder.create();
+
+    if (false == isAppReviewType) {
+      builder.setCancelable(isCancelable);
+      dialog.setCancelable(isCancelable);
+      dialog.setCanceledOnTouchOutside(isCancelable);
+    }
+    else {
+      dialog.setCancelable(false);
+      dialog.setCanceledOnTouchOutside(false);
+      this.setCancelable(false);
+      dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
+    }
+    // Create the AlertDialog object and return it
+    return dialog;
+
+  }
+
+  private void setupView(View view) {
+    textViewTitle = view.findViewById(R.id.text_view_title);
+    textViewContents = view.findViewById(R.id.text_view_dialog_message);
+    textViewNegativeButtonText = view.findViewById(R.id.text_view_next_time);
+    textViewPositiveButtonText = view.findViewById(R.id.text_view_write_app_review);
+    imageViewClose = view.findViewById(R.id.image_view_close);
+
+    imageViewClose.setVisibility(isAppReviewType ? View.VISIBLE : View.GONE);
+    textViewTitle.setVisibility(titleStringId == R.string.empty_string ? View.GONE : View.VISIBLE);
+    textViewPositiveButtonText.setVisibility(positiveButtonLabel == R.string.empty_string ? View.GONE : View.VISIBLE);
+    textViewNegativeButtonText.setVisibility(negativeButtonLabel == R.string.empty_string ? View.GONE : View.VISIBLE);
+
+
+    textViewPositiveButtonText.setText(positiveButtonLabel == R.string.empty_string ? R.string.confirm : positiveButtonLabel);
+    textViewNegativeButtonText.setText(negativeButtonLabel == R.string.empty_string ? R.string.cancel : negativeButtonLabel);
+    textViewPositiveButtonText.setText(positiveButtonLabel == R.string.empty_string ? R.string.confirm : positiveButtonLabel);
+
 
     if (titleStringId != R.string.empty_string) {
-      builder.setTitle(titleStringId);
+      textViewTitle.setText(titleStringId);
     }
-    builder.setCancelable(isCancelable);
-    android.support.v7.app.AlertDialog alert = builder.create();
-    alert.setCancelable(isCancelable);
-    alert.setCanceledOnTouchOutside(isCancelable);
-    // Create the AlertDialog object and return it
-    return alert;
 
+    textViewContents.setText(text);
+
+
+    //왼쪽 클릭
+    textViewNegativeButtonText.setOnClickListener(view1 -> {
+      if (null != getCustomListener()) {
+        getCustomListener().onNegativeResult(ConfirmDialog.this, new Event.Builder(Event.FAQ).build());
+      }
+
+    });
+
+    //오른쪽
+    textViewPositiveButtonText.setOnClickListener(view1 -> {
+      getCustomListener().onPositiveResult(ConfirmDialog.this, new Event.Builder(Event.ADD).build());
+    });
+
+
+    //닫기버튼 클릭
+    imageViewClose.setOnClickListener(view1 -> {
+      getCustomListener().onDialogCanceled(ConfirmDialog.this);
+    });
   }
 
   @Override

+ 18 - 15
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsPresenter.java

@@ -22,10 +22,10 @@ import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.DoubleChecker;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.command.WebCommand;
-import kr.co.zumo.app.lifeplus.view.dialog.AppReviewDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.ConfirmDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogBuilder;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogID;
+import kr.co.zumo.app.lifeplus.view.dialog.IAttribute;
 import kr.co.zumo.app.lifeplus.view.dialog.ICustomConfirmListener;
 import kr.co.zumo.app.lifeplus.view.dialog.ICustomDialogListener;
 import kr.co.zumo.app.lifeplus.view.dialog.IDialogBase;
@@ -417,27 +417,30 @@ public class ContentsPresenter extends ContentsBasePresenter<ContentsModel, ICon
       // 리뷰 한 것으로 표시
       model.setReviewCompleted();
 
-      reviewDialog = new DialogBuilder<AppReviewDialog, ICustomDialogListener>(getFragmentManager(), DialogID.APP_REVIEW)
-        .listener(new ICustomDialogListener<AppReviewDialog>() {
+      reviewDialog = new DialogBuilder<ConfirmDialog, ICustomConfirmListener>(getFragmentManager(), DialogID.CONFIRM)
+        .listener(new ICustomConfirmListener<ConfirmDialog>() {
           @Override
-          public void onDialogResult(AppReviewDialog dialog, Event event) {
-            switch (event.getEventId()) {
-              case Event.ADD:
-                view.goGooglePlay();
-                break;
-              case Event.FAQ:
-                go(ScreenID.FAQ);
-                break;
-              default:
-                break;
-            }
+          public void onPositiveResult(ConfirmDialog dialog, Event event) {
+            view.goGooglePlay();
           }
 
           @Override
-          public void onDialogCanceled(AppReviewDialog dialog) {
+          public void onNegativeResult(ConfirmDialog dialog, Event event) {
+            go(ScreenID.FAQ);
+          }
+
+          @Override
+          public void onDialogCanceled(ConfirmDialog dialog) {
             dialog.dispose();
           }
         })
+        .attribute((IAttribute<ConfirmDialog>) dialog -> {
+          dialog.setNegativeButtonLabelId(R.string.go_faq);
+          dialog.setPositiveButtonLabelId(R.string.app_review_write);
+          dialog.setTitleId(R.string.app_review_title);
+          dialog.setText(R.string.app_review_message);
+          dialog.isAppReviewType(true);
+        })
         .show();
     }
   }

+ 3 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/signup/SignUpBasePresenter.java

@@ -17,7 +17,7 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
  * SignUpMobileAuthPresenter
- * <pre>
+ * ST<pre>
  * </pre>
  *
  * @author 민효동
@@ -39,8 +39,7 @@ public abstract class SignUpBasePresenter<M extends SignUpBaseModel, V extends I
     new DialogBuilder<ConfirmDialog, ICustomConfirmListener>(getFragmentManager(), DialogID.CONFIRM)
       .listener(new ICustomConfirmListener<ConfirmDialog>() {
         @Override
-        public void onPositiveResult(ConfirmDialog dialog, Event event) {
-          dialog.dispose();
+        public void onPositiveResult(ConfirmDialog dialog, Event event) { dialog.dispose();
         }
 
         @Override
@@ -56,6 +55,7 @@ public abstract class SignUpBasePresenter<M extends SignUpBaseModel, V extends I
       .attribute((IAttribute<ConfirmDialog>) dialog -> {
         dialog.setNegativeButtonLabelId(R.string.back);
         dialog.setPositiveButtonLabelId(R.string.go_execute);
+        dialog.setTitleId(R.string.notification);
         dialog.setText(ResourceUtil.getString(model.getBackwardWarnStringId()));
       })
       .show();

+ 81 - 41
app/src/main/res/layout/dialog_app_review.xml

@@ -4,13 +4,13 @@
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="wrap_content"
-  tools:background="@color/C888888"
-  android:layout_height="wrap_content">
+  android:layout_height="wrap_content"
+  tools:background="@color/C888888">
 
   <android.support.constraint.ConstraintLayout
-    android:background="@drawable/rectangle_radius_4"
     android:layout_width="287dp"
-    android:layout_height="221dp"
+    android:layout_height="wrap_content"
+    android:background="@drawable/rectangle_radius_4"
     app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
@@ -22,12 +22,15 @@
       android:layout_height="wrap_content"
       android:layout_marginTop="35dp"
       android:lineSpacingExtra="7sp"
-      android:text="@string/app_review_title"
       android:textColor="@color/C000000"
       android:textSize="18sp"
       android:textStyle="bold"
+      tools:visibility="gone"
+      app:layout_constraintBottom_toTopOf="@+id/text_view_dialog_message"
+      app:layout_constraintHorizontal_chainStyle="packed"
       app:layout_constraintStart_toStartOf="@+id/text_view_dialog_message"
-      app:layout_constraintTop_toTopOf="parent"/>
+      app:layout_constraintTop_toTopOf="parent"
+      tools:text=""/>
 
     <ImageView
       android:id="@+id/image_view_close"
@@ -36,59 +39,96 @@
       android:layout_marginTop="22dp"
       android:layout_marginEnd="22dp"
       android:padding="10dp"
+      android:visibility="gone"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:srcCompat="@drawable/icon_h_close"/>
 
     <TextView
       android:id="@+id/text_view_dialog_message"
-      android:layout_width="wrap_content"
-      android:layout_height="45dp"
+      android:layout_width="0dp"
+      android:layout_height="wrap_content"
+      android:layout_marginStart="31dp"
+      app:layout_goneMarginTop="35dp"
       android:layout_marginTop="20dp"
+      android:layout_marginEnd="31dp"
+      android:layout_marginBottom="10dp"
       android:lineSpacingExtra="6sp"
-      android:text="@string/app_review_message"
       android:textColor="@color/C000000"
-      android:layout_marginStart="31dp"
       android:textSize="14sp"
+      app:layout_constrainedHeight="true"
+      app:layout_constrainedWidth="true"
+      app:layout_constraintBottom_toTopOf="@+id/button_layout"
+      app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toBottomOf="@+id/text_view_title"
+      tools:text="d"
       />
 
-    <TextView
-      android:id="@+id/text_view_next_time"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginStart="26dp"
-      android:layout_marginBottom="22dp"
-      android:gravity="center_horizontal"
-      android:lineSpacingExtra="6sp"
-      android:padding="10dp"
-      android:text="@string/go_faq"
-      android:textColor="@color/C000000"
-      android:textSize="14sp"
-      android:textStyle="bold"
-      app:layout_constraintBottom_toBottomOf="parent"
+    <android.support.constraint.ConstraintLayout
+      android:id="@+id/button_layout"
+      android:layout_width="match_parent"
       app:layout_constraintStart_toStartOf="parent"
+      app:layout_constraintEnd_toEndOf="parent"
+      app:layout_constraintTop_toBottomOf="@+id/text_view_dialog_message"
+      android:layout_height="wrap_content"
+      app:layout_constraintBottom_toBottomOf="parent">
 
-      />
+      <TextView
+        android:id="@+id/text_view_next_time"
+        android:layout_width="0dp"
+        tools:visibility="gone"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="26dp"
+        android:layout_marginTop="11dp"
+        android:layout_marginEnd="3dp"
+        android:layout_marginBottom="11dp"
+        android:gravity="center_horizontal"
+        android:lineSpacingExtra="6sp"
+        android:padding="10dp"
+        android:textColor="@color/C000000"
+        android:textSize="14sp"
+        android:textStyle="bold"
+        app:layout_constrainedWidth="true"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/guide_line"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="@string/go_faq"
+        />
 
-    <TextView
-      android:id="@+id/text_view_write_app_review"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginEnd="24dp"
-      android:layout_marginBottom="22dp"
-      android:gravity="center_horizontal"
-      android:lineSpacingExtra="6sp"
-      android:padding="10dp"
-      android:text="@string/app_review_write"
-      android:textColor="@color/C000000"
-      android:textSize="14sp"
-      android:textStyle="bold"
-      app:layout_constraintBottom_toBottomOf="parent"
-      app:layout_constraintEnd_toEndOf="parent"
-      />
+      <android.support.constraint.Guideline
+        android:id="@+id/guide_line"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintGuide_percent="0.5"
+        app:layout_constraintHorizontal_bias="0.5"
+        app:layout_constraintStart_toStartOf="parent"/>
 
+      <TextView
+        android:id="@+id/text_view_write_app_review"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="3dp"
+        android:layout_marginTop="11dp"
+        android:layout_marginEnd="24dp"
+        android:layout_marginBottom="11dp"
+        android:gravity="center_horizontal"
+        android:lineSpacingExtra="6sp"
+        android:padding="10dp"
+        android:textColor="@color/C000000"
+        android:textSize="14sp"
+        android:textStyle="bold"
+        app:layout_constrainedWidth="true"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/guide_line"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="@string/app_review_write"
+        />
 
+    </android.support.constraint.ConstraintLayout>
   </android.support.constraint.ConstraintLayout>
 </android.support.constraint.ConstraintLayout>