Jelajahi Sumber

[공통][Bug] 액션바 매니저 수정, xml 수정

hyodong.min 7 tahun lalu
induk
melakukan
c49ea7cdfe

+ 72 - 25
app/src/main/java/kr/co/zumo/app/lifeplus/manager/ActionBarManager.java

@@ -46,6 +46,8 @@ public class ActionBarManager implements IActionBarListener {
   private View buttonMenu;
   private ProgressBar progressBar;
 
+  private Builder builder;
+
   private IActionBarListener listener;
   private IActionBarListener.Scroll scrollListener;
 
@@ -82,8 +84,8 @@ public class ActionBarManager implements IActionBarListener {
     imageBi = view.findViewById(R.id.image_bi);
     buttonSearch = view.findViewById(R.id.button_search);
     buttonMenu = view.findViewById(R.id.button_menu);
-
     buttonBack = view.findViewById(R.id.button_back);
+
     buttonBack.setOnClickListener(v -> {
       onClickBack(actionBar);
     });
@@ -168,7 +170,7 @@ public class ActionBarManager implements IActionBarListener {
    * @return ActionBarManager
    */
   public Builder begin() {
-    return new Builder(this);
+    return new Builder();
   }
 
   /***********************************
@@ -189,7 +191,6 @@ public class ActionBarManager implements IActionBarListener {
       appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
       appBarLayout.setLayoutParams(appBarLayoutParams);
 
-//      containerLayoutParams.setBehavior(new AppBarLayout.ScrollingViewBehavior());
       containerLayoutParams.topMargin = 0;
       containerLayoutParams.setBehavior(new CustomScrollingViewBehavior());
       container.setLayoutParams(containerLayoutParams);
@@ -282,6 +283,45 @@ public class ActionBarManager implements IActionBarListener {
     setViewVisible(progressBar, isVisible, View.GONE);
   }
 
+  private void set(Builder newBuilder) {
+    if (null == builder) {
+      builder = new Builder();
+      setTitleVisible(false);
+      setBackVisible(false);
+      setBiVisible(false);
+      setSearchVisible(false);
+      setMenuVisible(false);
+      setProgressVisible(false);
+      setScrollable(false);
+
+    }
+
+    if (builder.isScrollable != newBuilder.isScrollable) {
+      setScrollable(newBuilder.isScrollable);
+    }
+    if (builder.isVisibleProgress != newBuilder.isVisibleProgress) {
+      setProgressVisible(newBuilder.isVisibleProgress);
+    }
+    if (builder.isVisibleMenu != newBuilder.isVisibleMenu) {
+      setMenuVisible(newBuilder.isVisibleMenu);
+    }
+    if (builder.isVisibleSearch != newBuilder.isVisibleSearch) {
+      setSearchVisible(newBuilder.isVisibleSearch);
+    }
+    if (builder.isVisibleBi != newBuilder.isVisibleBi) {
+      setBiVisible(newBuilder.isVisibleBi);
+    }
+    if (builder.isVisibleBack != newBuilder.isVisibleBack) {
+      setBackVisible(newBuilder.isVisibleBack);
+    }
+    if (builder.isVisibleTitle != newBuilder.isVisibleTitle) {
+      setTitleVisible(newBuilder.isVisibleTitle);
+      setTitle(newBuilder.title);
+    }
+
+    builder = newBuilder;
+  }
+
   /**
    * Custom Layout 을 지정한다.
    *
@@ -359,10 +399,10 @@ public class ActionBarManager implements IActionBarListener {
 
   public void destroy() {
     if (null != appBarLayout) {
-      appBarLayout = null;
       if (null != scrollListener) {
         appBarLayout.removeOnOffsetChangedListener(onOffsetChangedListener);
       }
+      appBarLayout = null;
     }
 
     scrollListener = null;
@@ -376,18 +416,16 @@ public class ActionBarManager implements IActionBarListener {
    ***********************************/
   public static class Builder {
 
-    private ActionBarManager manager;
+    private boolean isVisibleTitle = false;
+    private boolean isVisibleBack = false;
+    private boolean isVisibleBi = false;
+    private boolean isVisibleSearch = false;
+    private boolean isVisibleMenu = false;
+    private boolean isVisibleProgress = false;
+    private boolean isScrollable = false;
+    private int title = R.string.empty_string;
 
-    public Builder(ActionBarManager manager) {
-      this.manager = manager;
-
-      manager.setTitleVisible(false);
-      manager.setBackVisible(false);
-      manager.setBiVisible(false);
-      manager.setSearchVisible(false);
-      manager.setMenuVisible(false);
-      manager.setProgressVisible(false);
-      manager.setScrollable(false);
+    public Builder() {
     }
 
     /**
@@ -397,8 +435,8 @@ public class ActionBarManager implements IActionBarListener {
      * @return Builder
      */
     public Builder title(@StringRes int stringId) {
-      manager.setTitle(stringId);
-      manager.setTitleVisible(true);
+      this.title = stringId;
+      isVisibleTitle = true;
       return this;
     }
 
@@ -408,7 +446,7 @@ public class ActionBarManager implements IActionBarListener {
      * @return Builder
      */
     public Builder back() {
-      manager.setBackVisible(true);
+      isVisibleBack = true;
       return this;
     }
 
@@ -418,7 +456,7 @@ public class ActionBarManager implements IActionBarListener {
      * @return Builder
      */
     public Builder logo() {
-      manager.setBiVisible(true);
+      isVisibleBi = true;
       return this;
     }
 
@@ -428,7 +466,7 @@ public class ActionBarManager implements IActionBarListener {
      * @return Builder
      */
     public Builder search() {
-      manager.setSearchVisible(true);
+      isVisibleSearch = true;
       return this;
     }
 
@@ -438,7 +476,7 @@ public class ActionBarManager implements IActionBarListener {
      * @return Builder
      */
     public Builder menu() {
-      manager.setMenuVisible(true);
+      isVisibleMenu = true;
       return this;
     }
 
@@ -448,7 +486,7 @@ public class ActionBarManager implements IActionBarListener {
      * @return Builder
      */
     public Builder progress() {
-      manager.setProgressVisible(true);
+      isVisibleProgress = true;
       return this;
     }
 
@@ -458,22 +496,31 @@ public class ActionBarManager implements IActionBarListener {
      * @return Builder
      */
     public Builder scroll() {
-      manager.setScrollable(true);
+      isScrollable = true;
       return this;
     }
 
+    /**
+     * 설정 세팅
+     */
+    public void set() {
+      ourInstance.set(this);
+    }
+
     /**
      * show
      */
     public void show() {
-      manager.show();
+      set();
+      ourInstance.show();
     }
 
     /**
      * hide
      */
     public void hide() {
-      manager.hide();
+      set();
+      ourInstance.hide();
     }
   }
 

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/main/MainContentsCategoryImageView.java

@@ -200,8 +200,8 @@ public class MainContentsCategoryImageView extends MainContentsView {
     imageWidth = drawable.getIntrinsicWidth(); //this is the bitmap's width
     imageHeight = drawable.getIntrinsicHeight(); //this is the bitmap's height
 
-    Log.i("APP# MainContentsCategoryImageView | init", "| maskWidth: " + maskWidth + ", maskHeight: " + maskHeight);
-    Log.i("APP# MainContentsCategoryImageView | init", "| imageWidth: " + imageWidth + ", imageHeight: " + imageHeight);
+//    Log.i("APP# MainContentsCategoryImageView | init", "| maskWidth: " + maskWidth + ", maskHeight: " + maskHeight);
+//    Log.i("APP# MainContentsCategoryImageView | init", "| imageWidth: " + imageWidth + ", imageHeight: " + imageHeight);
 
     onScrolledInternal();
   }

+ 0 - 12
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -46,18 +46,6 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
     ActionBarManager.getInstance().setListener(this);
   }
 
-  /**
-   * Model 을 반환한다.
-   * // todo 액티비티에서만 model 의 life-cycle 을 관리하기 위해서 마련
-   * - 뷰에서 모델에 접근 할 수 있게되므로 오용의 여지가 있다.
-   * - presenter 를 A/F 용을 별도로 만드는 등의 다른 방법이 필요...
-   *
-   * @return Model
-   */
-  public Model getModel() {
-    return model;
-  }
-
   @Override
   public final void start() {
     startInternal();

+ 52 - 55
app/src/main/res/layout/action_bar.xml

@@ -4,72 +4,62 @@
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
-  android:layout_height="match_parent"
+  android:layout_height="wrap_content"
   android:layout_gravity="fill_horizontal"
   android:background="@color/CFFFFFF"
-  android:gravity="top"
-  android:orientation="vertical"
   tools:layout_height="100dp">
 
-  <LinearLayout
+  <android.support.constraint.ConstraintLayout
     android:layout_width="match_parent"
     android:layout_height="@dimen/action_bar_height"
-    android:layout_gravity="center_vertical"
-    android:gravity="center_vertical"
-    android:paddingStart="14dp"
-    android:paddingEnd="8dp"
     >
 
-    <android.support.constraint.ConstraintLayout
+    <android.support.constraint.Guideline
+      android:id="@+id/guide_start"
       android:layout_width="wrap_content"
-      android:layout_height="wrap_content">
-
-      <ImageView
-        android:id="@+id/button_back"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:paddingStart="10dp"
-        android:paddingTop="10dp"
-        android:paddingEnd="10dp"
-        android:paddingBottom="10dp"
-        app:srcCompat="@drawable/icon_header_back"/>
+      android:layout_height="wrap_content"
+      android:orientation="vertical"
+      app:layout_constraintGuide_begin="14dp"/>
 
-      <ImageView
-        android:id="@+id/image_bi"
-        android:layout_width="62dp"
-        android:layout_height="15dp"
-        android:layout_marginStart="19dp"
-        android:layout_marginTop="8dp"
-        android:layout_marginEnd="8dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="@+id/button_back"
-        app:layout_constraintTop_toTopOf="parent"
-        app:srcCompat="@drawable/ic_bi_header_black"/>
+    <ImageView
+      android:id="@+id/button_back"
+      android:layout_width="35dp"
+      android:layout_height="35dp"
+      android:paddingStart="10dp"
+      android:paddingTop="10dp"
+      android:paddingEnd="10dp"
+      android:paddingBottom="10dp"
+      app:layout_constraintBottom_toBottomOf="parent"
+      app:layout_constraintStart_toStartOf="@id/guide_start"
+      app:layout_constraintTop_toTopOf="parent"
+      app:srcCompat="@drawable/icon_header_back"/>
 
-    </android.support.constraint.ConstraintLayout>
+    <ImageView
+      android:id="@+id/image_bi"
+      android:layout_width="99dp"
+      android:layout_height="35dp"
+      android:paddingStart="19dp"
+      android:paddingTop="8dp"
+      android:paddingEnd="8dp"
+      android:paddingBottom="8dp"
+      app:layout_constraintBottom_toBottomOf="parent"
+      app:layout_constraintStart_toStartOf="@id/guide_start"
+      app:layout_constraintTop_toTopOf="parent"
+      app:srcCompat="@drawable/ic_bi_header_black"/>
 
-    <android.support.constraint.ConstraintLayout
-      android:layout_width="0dp"
+    <TextView
+      android:id="@+id/action_bar_title"
+      android:layout_width="wrap_content"
       android:layout_height="wrap_content"
-      android:layout_weight="1">
-
-      <TextView
-        android:id="@+id/action_bar_title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="25dp"
-        android:gravity="center"
-        android:textColor="@color/C000000"
-        android:textSize="18sp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        tools:text="VVV"/>
-      <!-- 타이틀 옆에 아이콘 자리 -->
-    </android.support.constraint.ConstraintLayout>
+      android:gravity="center"
+      android:textColor="@color/C000000"
+      android:textSize="18sp"
+      app:layout_constraintBottom_toBottomOf="parent"
+      app:layout_constraintEnd_toEndOf="parent"
+      app:layout_constraintStart_toStartOf="parent"
+      app:layout_constraintTop_toTopOf="parent"
+      tools:text="VVV"/>
+    <!-- 타이틀 옆에 아이콘 자리 -->
 
     <ImageView
       android:id="@+id/button_search"
@@ -93,9 +83,16 @@
       android:paddingEnd="9dp"
       android:paddingBottom="9dp"
       app:layout_constraintBottom_toBottomOf="parent"
-      app:layout_constraintEnd_toEndOf="parent"
+      app:layout_constraintEnd_toEndOf="@+id/guide_end"
       app:layout_constraintTop_toTopOf="parent"
       app:srcCompat="@drawable/ic_icon_header_menu"/>
-  </LinearLayout>
+
+    <android.support.constraint.Guideline
+      android:id="@+id/guide_end"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:orientation="vertical"
+      app:layout_constraintGuide_end="8dp"/>
+  </android.support.constraint.ConstraintLayout>
 
 </RelativeLayout>