Browse Source

Merge branch 'develop' of https://github.com/swict/LifeplusAndroid into develop

Hasemi 6 năm trước cách đây
mục cha
commit
c59214ca5e

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/helper/ActionBarHelper.java

@@ -342,7 +342,7 @@ public class ActionBarHelper extends Helper {
       toolbarLayoutParams.setScrollFlags(APP_BAR_LAYOUT_SCROLL_PARAM);
 //      toolbarLayoutParams.height = ResourceUtil.getDimension(R.dimen.action_bar_height);
 
-      appBarLayoutParams.setBehavior(new CustomHeaderBehavior());
+      appBarLayoutParams.setBehavior(new CustomHeaderBehavior(appBarLayout));
       containerLayoutParams.setBehavior(null);
       setStatusBarOpaqueColor();
     }
@@ -443,7 +443,7 @@ public class ActionBarHelper extends Helper {
   /**
    * API 버전별 full screen 시 status bar color 색 변경
    */
-  private void setStatusBarOpaqueColor() {
+  public void setStatusBarOpaqueColor() {
     if (AppUtil.isFullScreenVersion()) {
       StatusBarCompat.setStatusBarColor(activity, ResourceUtil.getColor(R.color.CF2FFFFFF));
     }

+ 5 - 14
app/src/main/java/kr/co/zumo/app/lifeplus/view/CustomHeaderBehavior.java

@@ -8,7 +8,7 @@ import android.support.design.widget.AppBarLayout;
 import android.support.design.widget.CoordinatorLayout;
 import android.view.View;
 
-import kr.co.zumo.app.lifeplus.util.ResourceUtil;
+import kr.co.zumo.app.lifeplus.view.screen.main.ActionBarScroller;
 
 /**
  * CustomHeaderBehavior
@@ -22,13 +22,14 @@ import kr.co.zumo.app.lifeplus.util.ResourceUtil;
  */
 public class CustomHeaderBehavior extends AppBarLayout.Behavior {
 
-  public CustomHeaderBehavior() {
+  public CustomHeaderBehavior(AppBarLayout appBarLayout) {
     setDragCallback(new DragCallback() {
       @Override
       public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
         return false;
       }
     });
+    actionBarScroller = new ActionBarScroller(appBarLayout);
   }
 
   @Override
@@ -42,7 +43,7 @@ public class CustomHeaderBehavior extends AppBarLayout.Behavior {
     return true;
   }
 
-  private boolean isUp = false;
+  private ActionBarScroller actionBarScroller;
 
   @Override
   public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed, int type) {
@@ -69,17 +70,7 @@ public class CustomHeaderBehavior extends AppBarLayout.Behavior {
 //    Log.w("APP# CustomHeaderBehavior | onNestedPreScroll", "|" + " target: " + target);
 //    Log.i("APP# CustomHeaderBehavior | onNestedPreScroll", "| consumed: " + Arrays.toString(consumed));
 
-    if (Math.abs(dy) > 10) {
-      if (dy > 0 && isUp == false) {
-        isUp = true;
-        float ty = -child.getHeight() - ResourceUtil.getStatusBarHeightManual();
-        child.animate().translationY(ty).setDuration(600).withLayer().start();
-      }
-      else if (dy < 0 && isUp) {
-        isUp = false;
-        child.animate().translationY(0f).setDuration(200).withLayer().start();
-      }
-    }
+    actionBarScroller.scroll(dy);
 
     /**
      * appbarlayout 이 스크롤되는 동안에도 consume 은 하지 않아 nested scroller 도 함께 스크롤된다.

+ 49 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/ActionBarScroller.java

@@ -0,0 +1,49 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.view.screen.main;
+
+import android.view.View;
+
+import kr.co.zumo.app.lifeplus.util.ResourceUtil;
+
+/**
+ * ActionBarScroller
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2019-03-21]   [최초 작성]
+ * @since 2019-03-21
+ */
+public class ActionBarScroller {
+
+  private View view;
+  private boolean isUp = false;
+  private int topMargin = ResourceUtil.getStatusBarHeightManual();
+
+  public ActionBarScroller(View view) {
+    this.view = view;
+  }
+
+  /**
+   * 상하 스크롤
+   *
+   * @param dy
+   */
+  public void scroll(int dy) {
+    if (Math.abs(dy) > 10) {
+      if (dy > 0 && isUp == false) {
+        isUp = true;
+        float ty = -view.getHeight() - topMargin;
+        view.animate().translationY(ty).setDuration(600).withLayer().start();
+      }
+      else if (dy < 0 && isUp) {
+        isUp = false;
+        view.animate().translationY(0f).setDuration(200).withLayer().start();
+      }
+    }
+  }
+
+}

+ 38 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainDebugFragment.java

@@ -12,6 +12,7 @@ import android.os.Bundle;
 import android.provider.Settings;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.constraint.ConstraintLayout;
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.view.ViewCompat;
 import android.support.v4.view.ViewParentCompat;
@@ -32,8 +33,10 @@ import java.util.List;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.MainContentsBean;
 import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
+import kr.co.zumo.app.lifeplus.helper.NavigationBar;
 import kr.co.zumo.app.lifeplus.helper.ScreenSizeHelper;
 import kr.co.zumo.app.lifeplus.supervisor.AnimatorManager;
+import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.util.ViewUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
@@ -57,6 +60,8 @@ public class MainDebugFragment extends FragmentBase<MainPresenter> implements IM
   // private MainContentsSnapper snapper;
   private ViewParent layoutCoordinator;
   private View layoutNewbie;
+  private ViewGroup containerNavigationBar;
+  private ActionBarScroller actionBarScroller;
 
   private RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() {
     @Override
@@ -81,6 +86,8 @@ public class MainDebugFragment extends FragmentBase<MainPresenter> implements IM
 
         presenter.touch();
         presenter.onScrolled(activePosition);
+
+        actionBarScroller.scroll(dy);
       }
 
     }
@@ -98,6 +105,7 @@ public class MainDebugFragment extends FragmentBase<MainPresenter> implements IM
 
     //int statusBarHeight = ResourceUtil.getStatusBarHeightManual();
     indicator = findViewById(R.id.page_indicator);
+    containerNavigationBar = findViewById(R.id.container_navigation_bar);
     contentsRecyclerView = findViewById(R.id.recycler_view_main);
     contentsRecyclerView.addOnScrollListener(scrollListener);
 
@@ -116,6 +124,28 @@ public class MainDebugFragment extends FragmentBase<MainPresenter> implements IM
 //      snapper.attachToRecyclerView(contentsRecyclerView);
 //    }
 
+    // 상단 네비게이션바 설정
+    ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) containerNavigationBar.getLayoutParams();
+    layoutParams.topMargin = ResourceUtil.getStatusBarHeightManual();
+
+    NavigationBar navigationBar = new NavigationBar.Builder(getContext())
+      .logo(actionBar -> presenter.onNavigationClickLogo(actionBar))
+      .menu(actionBar -> presenter.onNavigationClickMenu(actionBar))
+      .search(actionBar -> presenter.onNavigationClickSearch(actionBar))
+      .build();
+    View navigationBarView = navigationBar.getView();
+    containerNavigationBar.addView(navigationBarView);
+
+    actionBarScroller = new ActionBarScroller(containerNavigationBar);
+
+    getHelper(ActionBarHelper.class).setStatusBarOpaqueColor();
+
+    navigationBarView.setTranslationY(-ResourceUtil.getDimension(R.dimen.action_bar_height_with_extra_space));
+    ObjectAnimator textViewAnimator = ObjectAnimator.ofFloat(navigationBarView, "translationY", 0f);
+    textViewAnimator.setDuration(900);
+    textViewAnimator.addListener(new AnimatorManager.SimpleListener());
+    AnimatorManager.getInstance().add(textViewAnimator);
+
     debug();
 
   }
@@ -174,12 +204,14 @@ public class MainDebugFragment extends FragmentBase<MainPresenter> implements IM
 
   @Override
   protected void defineActionBar(ActionBarHelper actionBarHelper) {
-    actionBarHelper.begin()
-      .logo(actionBar -> presenter.onNavigationClickLogo(actionBar))
-      .menu(actionBar -> presenter.onNavigationClickMenu(actionBar))
-      .search(actionBar -> presenter.onNavigationClickSearch(actionBar))
-      .scroll()
-      .show();
+//    actionBarHelper.begin()
+//      .logo(actionBar -> presenter.onNavigationClickLogo(actionBar))
+//      .menu(actionBar -> presenter.onNavigationClickMenu(actionBar))
+//      .search(actionBar -> presenter.onNavigationClickSearch(actionBar))
+//      .scroll()
+//      .show();
+
+    actionBarHelper.begin().hide();
 
     /**
      * 에니메이션 설정 가장 처음에 clear 해준다.

+ 5 - 5
app/src/main/res/layout/fragment_main.xml

@@ -17,15 +17,15 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"/>
 
-  <include layout="@layout/main_test_layout"/>
-
-  <android.support.constraint.ConstraintLayout
+  <FrameLayout
     android:id="@+id/container_navigation_bar"
     android:layout_width="match_parent"
     android:layout_height="@dimen/action_bar_height"
-    android:background="@null">
+    android:background="@null"
+    app:layout_constraintTop_toTopOf="parent">
+  </FrameLayout>
 
-  </android.support.constraint.ConstraintLayout>
+  <include layout="@layout/main_test_layout"/>
 
   <LinearLayout
     android:id="@+id/layout_newbie"