浏览代码

[공통][Bug] 액션바 기능 추가: 투명 배경, 흰색 UI

hyodong.min 7 年之前
父节点
当前提交
127c18709c

+ 103 - 19
app/src/main/java/kr/co/zumo/app/lifeplus/manager/ActionBarManager.java

@@ -4,12 +4,14 @@ import android.app.Activity;
 import android.support.annotation.StringRes;
 import android.support.design.widget.AppBarLayout;
 import android.support.design.widget.CoordinatorLayout;
+import android.support.v4.graphics.drawable.DrawableCompat;
 import android.support.v7.app.ActionBar;
 import android.support.v7.widget.Toolbar;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
@@ -40,10 +42,10 @@ public class ActionBarManager implements IActionBarListener {
   private ViewGroup container;
   private Toolbar toolbar;
   private TextView actionBarTitle;
-  private View imageBi;
-  private View buttonBack;
-  private View buttonSearch;
-  private View buttonMenu;
+  private ImageView imageBi;
+  private ImageView buttonBack;
+  private ImageView buttonSearch;
+  private ImageView buttonMenu;
   private ProgressBar progressBar;
 
   private Builder builder;
@@ -148,7 +150,7 @@ public class ActionBarManager implements IActionBarListener {
   /**
    * actionbar hide
    */
-  public void hide() {
+  private void hide() {
     Log.i("APP# ActionBarManager | hide", "|" + "~~~~~~~~~~~~~~~~~~~~~~`");
     actionBar.hide();
 //      appBarLayout.setExpanded(false, false);
@@ -157,7 +159,7 @@ public class ActionBarManager implements IActionBarListener {
   /**
    * show
    */
-  public void show() {
+  private void show() {
     Log.i("APP# ActionBarManager | show", "|" + "~~~~~~~~~~~~~~~~~~~~~~`");
     actionBar.show();
 
@@ -183,27 +185,17 @@ public class ActionBarManager implements IActionBarListener {
    */
   private void setScrollable(boolean isEnabled) {
     // custom appbar scroll behavior
-    CoordinatorLayout.LayoutParams containerLayoutParams = (CoordinatorLayout.LayoutParams) container.getLayoutParams();
     AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
     CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
     if (isEnabled) {
       params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL);
       appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
       appBarLayout.setLayoutParams(appBarLayoutParams);
-
-      containerLayoutParams.topMargin = 0;
-      containerLayoutParams.setBehavior(new CustomScrollingViewBehavior());
-      container.setLayoutParams(containerLayoutParams);
     }
     else {
       params.setScrollFlags(0);
       appBarLayoutParams.setBehavior(null);
       appBarLayout.setLayoutParams(appBarLayoutParams);
-
-      containerLayoutParams.setBehavior(null);
-      containerLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
-      containerLayoutParams.topMargin = ResourceUtil.getDimension(R.dimen.action_bar_height);
-      container.setLayoutParams(containerLayoutParams);
     }
   }
 
@@ -274,6 +266,10 @@ public class ActionBarManager implements IActionBarListener {
     }
   }
 
+  private void setBackgroundTransparent(boolean isTransparent) {
+    toolbar.setBackgroundResource(isTransparent ? android.R.color.transparent : R.color.CFFFFFF);
+  }
+
   /**
    * progress bar 보이기/안보이기
    *
@@ -293,7 +289,7 @@ public class ActionBarManager implements IActionBarListener {
       setMenuVisible(false);
       setProgressVisible(false);
       setScrollable(false);
-
+      setBackgroundTransparent(false);
     }
 
     if (builder.isScrollable != newBuilder.isScrollable) {
@@ -318,8 +314,79 @@ public class ActionBarManager implements IActionBarListener {
       setTitleVisible(newBuilder.isVisibleTitle);
       setTitle(newBuilder.title);
     }
+    if (builder.isTransparentBackground != newBuilder.isTransparentBackground) {
+      setBackgroundTransparent(newBuilder.isTransparentBackground);
+    }
+    if (builder.isWhite != newBuilder.isWhite) {
+      setWhiteUi(newBuilder.isWhite);
+    }
 
     builder = newBuilder;
+
+    setContentsLayout(builder.isHidden, builder.isScrollable, builder.isTransparentBackground);
+
+  }
+
+  private void setWhiteUi(boolean isWhite) {
+    if (isWhite) {
+      actionBarTitle.setTextColor(ResourceUtil.getColor(R.color.CFFFFFF));
+      DrawableCompat.setTint(buttonBack.getDrawable(), ResourceUtil.getColor(R.color.CFFFFFF));
+      DrawableCompat.setTint(imageBi.getDrawable(), ResourceUtil.getColor(R.color.CFFFFFF));
+      DrawableCompat.setTint(buttonBack.getDrawable(), ResourceUtil.getColor(R.color.CFFFFFF));
+      DrawableCompat.setTint(buttonSearch.getDrawable(), ResourceUtil.getColor(R.color.CFFFFFF));
+      DrawableCompat.setTint(buttonMenu.getDrawable(), ResourceUtil.getColor(R.color.CFFFFFF));
+    }
+    else {
+      actionBarTitle.setTextColor(ResourceUtil.getColor(R.color.C000000));
+      DrawableCompat.setTint(buttonBack.getDrawable(), ResourceUtil.getColor(R.color.C000000));
+      DrawableCompat.setTint(imageBi.getDrawable(), ResourceUtil.getColor(R.color.C000000));
+      DrawableCompat.setTint(buttonBack.getDrawable(), ResourceUtil.getColor(R.color.C000000));
+      DrawableCompat.setTint(buttonSearch.getDrawable(), ResourceUtil.getColor(R.color.C000000));
+      DrawableCompat.setTint(buttonMenu.getDrawable(), ResourceUtil.getColor(R.color.C000000));
+    }
+  }
+
+  private void setContentsLayout(boolean isHidden, boolean isScrollable, boolean isTransparentBackground) {
+    /**
+     * 1 툴바 배경 있음, 스크롤/논스크롤
+     * 2 툴바 배경 없음, 스크롤/논스크롤
+     */
+
+    CoordinatorLayout.LayoutParams containerLayoutParams = (CoordinatorLayout.LayoutParams) container.getLayoutParams();
+    if (isHidden) {
+      containerLayoutParams.setBehavior(null);
+      containerLayoutParams.topMargin = 0;
+      containerLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+      container.setLayoutParams(containerLayoutParams);
+    }
+    else if (isTransparentBackground) {
+      if (isScrollable) {
+        // todo 스크롤되는 경우에는 appbar behavior 도 수정 필요;
+        containerLayoutParams.setBehavior(null);
+        containerLayoutParams.topMargin = 0;
+        containerLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        container.setLayoutParams(containerLayoutParams);
+      }
+      else {
+        containerLayoutParams.setBehavior(null);
+        containerLayoutParams.topMargin = 0;
+        containerLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        container.setLayoutParams(containerLayoutParams);
+      }
+    }
+    else {
+      if (isScrollable) {
+        containerLayoutParams.topMargin = 0;
+        containerLayoutParams.setBehavior(new CustomScrollingViewBehavior());
+        container.setLayoutParams(containerLayoutParams);
+      }
+      else {
+        containerLayoutParams.setBehavior(null);
+        containerLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        containerLayoutParams.topMargin = ResourceUtil.getDimension(R.dimen.action_bar_height);
+        container.setLayoutParams(containerLayoutParams);
+      }
+    }
   }
 
   /**
@@ -424,6 +491,9 @@ public class ActionBarManager implements IActionBarListener {
     private boolean isVisibleProgress = false;
     private boolean isScrollable = false;
     private int title = R.string.empty_string;
+    private boolean isTransparentBackground = false;
+    private boolean isHidden = false;
+    private boolean isWhite = false;
 
     public Builder() {
     }
@@ -501,9 +571,21 @@ public class ActionBarManager implements IActionBarListener {
     }
 
     /**
-     * 설정 세팅
+     * 배경 투명하게
+     *
+     * @return Builder
      */
-    public void set() {
+    public Builder transparent() {
+      isTransparentBackground = true;
+      return this;
+    }
+
+    public Builder white() {
+      isWhite = true;
+      return this;
+    }
+
+    private void set() {
       ourInstance.set(this);
     }
 
@@ -511,6 +593,7 @@ public class ActionBarManager implements IActionBarListener {
      * show
      */
     public void show() {
+      isHidden = false;
       set();
       ourInstance.show();
     }
@@ -519,6 +602,7 @@ public class ActionBarManager implements IActionBarListener {
      * hide
      */
     public void hide() {
+      isHidden = true;
       set();
       ourInstance.hide();
     }

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/bucketlist/AddMyBucketListFragment.java

@@ -70,7 +70,7 @@ public class AddMyBucketListFragment extends FragmentBase<MyBucketListPresenter>
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().begin().back().hide();
+    ActionBarManager.getInstance().begin().back().transparent().white().show();
   }
 
   @Override

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/info/PermissionInfoFragment.java

@@ -51,7 +51,7 @@ public class PermissionInfoFragment extends FragmentBase<PermissionInfoPresenter
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().hide();
+    ActionBarManager.getInstance().begin().hide();
   }
 
   @Override

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/member/MemberBlockFragment.java

@@ -53,7 +53,7 @@ public class MemberBlockFragment extends FragmentBase<MemberBlockPresenter> {
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().hide();
+    ActionBarManager.getInstance().begin().hide();
   }
 
   @Override

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/member/MemberRestActiveCompletedFragment.java

@@ -72,6 +72,6 @@ public class MemberRestActiveCompletedFragment extends FragmentBase<MemberRestAc
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().hide();
+    ActionBarManager.getInstance().begin().hide();
   }
 }

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/member/MemberRestStartFragment.java

@@ -62,6 +62,6 @@ public class MemberRestStartFragment extends FragmentBase<MemberRestStartPresent
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().hide();
+    ActionBarManager.getInstance().begin().hide();
   }
 }

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/onboarding/OnBoardingFragment.java

@@ -97,7 +97,7 @@ public class OnBoardingFragment extends FragmentBase<OnBoardingPresenter> implem
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().hide();
+    ActionBarManager.getInstance().begin().hide();
 
   }
 

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/pin/PinResetFragment.java

@@ -83,7 +83,7 @@ public class PinResetFragment extends FragmentBase<PinResetPresenter> implements
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().hide();
+    ActionBarManager.getInstance().begin().hide();
   }
 
   @Override

+ 25 - 22
app/src/main/res/layout/action_bar.xml

@@ -6,7 +6,7 @@
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_gravity="fill_horizontal"
-  android:background="@color/CFFFFFF"
+  android:background="@android:color/transparent"
   tools:layout_height="100dp">
 
   <android.support.constraint.ConstraintLayout
@@ -19,12 +19,12 @@
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:orientation="vertical"
-      app:layout_constraintGuide_begin="14dp"/>
+      app:layout_constraintGuide_begin="6dp"/>
 
     <ImageView
       android:id="@+id/button_back"
-      android:layout_width="35dp"
-      android:layout_height="35dp"
+      android:layout_width="38dp"
+      android:layout_height="38dp"
       android:paddingStart="10dp"
       android:paddingTop="10dp"
       android:paddingEnd="10dp"
@@ -34,16 +34,19 @@
       app:layout_constraintTop_toTopOf="parent"
       app:srcCompat="@drawable/icon_header_back"/>
 
+    <android.support.constraint.Guideline
+      android:id="@+id/guide_start2"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:orientation="vertical"
+      app:layout_constraintGuide_begin="33dp"/>
+
     <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"
+      android:layout_width="63dp"
+      android:layout_height="15dp"
       app:layout_constraintBottom_toBottomOf="parent"
-      app:layout_constraintStart_toStartOf="@id/guide_start"
+      app:layout_constraintStart_toStartOf="@id/guide_start2"
       app:layout_constraintTop_toTopOf="parent"
       app:srcCompat="@drawable/ic_bi_header_black"/>
 
@@ -63,12 +66,12 @@
 
     <ImageView
       android:id="@+id/button_search"
-      android:layout_width="34dp"
-      android:layout_height="34dp"
-      android:paddingStart="9dp"
-      android:paddingTop="9dp"
-      android:paddingEnd="9dp"
-      android:paddingBottom="9dp"
+      android:layout_width="38dp"
+      android:layout_height="38dp"
+      android:paddingStart="10dp"
+      android:paddingTop="10dp"
+      android:paddingEnd="10dp"
+      android:paddingBottom="10dp"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintEnd_toStartOf="@+id/button_menu"
       app:layout_constraintTop_toTopOf="parent"
@@ -78,10 +81,10 @@
       android:id="@+id/button_menu"
       android:layout_width="38dp"
       android:layout_height="38dp"
-      android:paddingStart="9dp"
-      android:paddingTop="9dp"
-      android:paddingEnd="9dp"
-      android:paddingBottom="9dp"
+      android:paddingStart="10dp"
+      android:paddingTop="10dp"
+      android:paddingEnd="10dp"
+      android:paddingBottom="10dp"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintEnd_toEndOf="@+id/guide_end"
       app:layout_constraintTop_toTopOf="parent"
@@ -92,7 +95,7 @@
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:orientation="vertical"
-      app:layout_constraintGuide_end="8dp"/>
+      app:layout_constraintGuide_end="6dp"/>
   </android.support.constraint.ConstraintLayout>
 
 </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_main.xml

@@ -22,7 +22,7 @@
     android:id="@+id/layout_app_bar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:background="@color/C999999"
+    android:background="@android:color/transparent"
     app:elevation="0dp"
     >