2016-06-03 2 views
5

내 응용 프로그램에 애니메이션을 넣으려고합니다. 애니메이션 아이디어를 얻으려면 첨부 된 사진을 찾으십시오.사용자가 스크롤 할 때 툴바의보기에 어떻게 애니메이션을 적용합니까?

Toolbar is cart icon rectangle and search_layout is below that.

나는 CoordinatorLayout을 사용하고 있습니다. 내 검색 레이아웃과 툴바는 AppBarLayout/CollapsingToolbarLayout 내부에서 호스팅됩니다. 그 아래 NestedScrollView 호스팅 조각입니다.

사용자가 스크롤 플래그를 사용하여 스크롤 할 때 검색 레이아웃을 숨길 수 있습니다. 카트 아이콘을 왼쪽으로 이동하고 검색 아이콘을 0부터 1까지 확장하기 시작하는 CoordinatorLayout.Behavior를 구현하려고합니다. 사용자가 스크롤하면 검색 레이아웃이 숨기기 시작합니다. 검색 레이아웃이 완전히 숨겨지면 두 번째 화면처럼 도구 모음을 표시하려고합니다. 사용자가 아래로 스크롤하면 카트 레이아웃이 오른쪽으로 천천히 이동하고 검색 아이콘이 축소되어 검색 레이아웃이 나타나기 시작하면서 첫 번째 화면과 같이 원래 상태로 돌아갑니다.

처음에는 도구 모음에서 검색 아이콘을 숨김으로 설정했으며 장바구니 아이콘 & 검색 아이콘은 선형 레이아웃 안에 있습니다. layout_primary_toolbar.xml에 대한

<?xml version="1.0" encoding="utf-8"?> 
<com.example.ui.customviews.CustomDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/ab_app_bar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <android.support.design.widget.CollapsingToolbarLayout 
       android:layout_width="match_parent" 
       android:layout_height="131dp" 
       app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

       <LinearLayout 
        android:id="@+id/ll_search_layout" 
        android:layout_width="match_parent" 
        android:layout_height="75dp" 
        android:layout_gravity="bottom" 
        android:orientation="vertical" 
        android:visibility="visible" 
        app:layout_scrollFlags="scroll|snap"> 

        <LinearLayout 
         android:id="@+id/ll_search_box" 
         android:layout_width="match_parent" 
         android:layout_height="51dp" 
         android:layout_marginBottom="@dimen/dimen_12_dp" 
         android:layout_marginLeft="@dimen/dimen_8_dp" 
         android:layout_marginRight="@dimen/dimen_8_dp" 
         android:layout_marginTop="@dimen/dimen_12_dp" 
         android:background="@drawable/round_corner_layout_white" 
         android:elevation="@dimen/dimen_5_dp" 
         android:focusableInTouchMode="true" 
         android:orientation="horizontal"> 

         <EditText 
          android:id="@+id/et_search" 
          android:layout_width="match_parent" 
          android:layout_height="match_parent" 
          android:layout_gravity="center" 
          android:layout_marginLeft="@dimen/dimen_15_dp" 
          android:layout_weight="80" 
          android:background="@android:color/transparent" 
          android:hint="Search for Products" 
          android:padding="@dimen/dimen_5_dp" 
          android:textColor="@color/black" 
          android:textColorHint="@color/hint_text_color" 
          android:textSize="@dimen/dimen_text_16_sp" /> 

         <ImageView 
          android:id="@+id/iv_search_icon" 
          android:layout_width="@dimen/dimen_22_dp" 
          android:layout_height="@dimen/dimen_24_dp" 
          android:layout_gravity="center" 
          android:layout_marginLeft="@dimen/dimen_17_dp" 
          android:layout_marginRight="@dimen/dimen_20_dp" 
          android:src="@drawable/ic_search_grey" /> 
        </LinearLayout> 

       </LinearLayout> 

       <include 
        layout="@layout/layout_primary_toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="@dimen/toolbar_primary_height" 
        android:layout_gravity="top" 
        app:layout_collapseMode="pin"/> 

      </android.support.design.widget.CollapsingToolbarLayout> 

     </android.support.design.widget.AppBarLayout> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:background="@color/askme_blue" 
      app:layout_behavior="com.GetIt.animation.SearchLayoutBehavior"/> 

     <android.support.v4.widget.NestedScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

      <FrameLayout 
       android:id="@+id/container" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" /> 

     </android.support.v4.widget.NestedScrollView> 

    </android.support.design.widget.CoordinatorLayout> 

    <fragment 
     android:id="@+id/navigation_drawer" 
     android:name="com.example.ui.fragment.SideMenuFragment" 
     android:layout_width="@dimen/navigation_drawer_width" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" /> 
</com.example.ui.customviews.CustomDrawerLayout> 

내 XML은 내가 지난 7 시간 동안이 붙어 있어요

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/toolbar_primary_height" 
    android:background="@color/askme_blue" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <LinearLayout 
     android:id="@+id/layout_toolbar" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <ImageView 
      android:id="@+id/iv_drawer_menu" 
      android:layout_width="@dimen/dimen_22_dp" 
      android:layout_height="@dimen/dimen_22_dp" 
      android:layout_gravity="center" 
      android:layout_marginLeft="@dimen/dimen_16_dp" 
      android:layout_marginRight="@dimen/dimen_15_dp" 
      android:src="@drawable/ic_drawer_menu" /> 

     <ImageView 
      android:id="@+id/iv_back_btn" 
      android:layout_width="@dimen/dimen_22_dp" 
      android:layout_height="@dimen/dimen_20_dp" 
      android:layout_gravity="center" 
      android:layout_marginLeft="@dimen/dimen_16_dp" 
      android:layout_marginRight="@dimen/dimen_15_dp" 
      android:src="@drawable/ic_back_button" 
      android:visibility="gone"/> 

     <LinearLayout 
      android:id="@+id/ll_location" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center"> 

      <com.GetIt.ui.customviews.TextViewRRegular 
       android:id="@+id/toolbar_title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Delhi" 
       android:textColor="@color/white" 
       android:textSize="20sp" 
       android:visibility="visible" /> 

      <ImageView 
       android:id="@+id/toolbar_location_change" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginLeft="2dp" 
       android:layout_marginTop="2dp" 
       android:src="@drawable/ic_edit_location" 
       android:visibility="gone"/> 
     </LinearLayout> 


    </LinearLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="right" 
     android:gravity="right" 
     android:layout_marginRight="@dimen/dimen_16_dp"> 

     <RelativeLayout 
      android:id="@+id/rl_cart_count" 
      android:layout_width="@dimen/dimen_40_dp" 
      android:layout_height="@dimen/dimen_40_dp" 
      android:layout_centerVertical="true"> 

      <ImageView 
       android:layout_width="@dimen/dimen_25_dp" 
       android:layout_height="@dimen/dimen_24_dp" 
       android:layout_centerInParent="true" 
       android:clickable="false" 
       android:focusable="false" 
       android:focusableInTouchMode="false" 
       android:scaleType="center" 
       android:src="@drawable/ic_cart" /> 

      <TextView 
       android:id="@+id/tv_cart_count" 
       android:layout_width="@dimen/dimen_17_dp" 
       android:layout_height="@dimen/dimen_17_dp" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginRight="@dimen/dimen_3_dp" 
       android:layout_marginTop="@dimen/dimen_3_dp" 
       android:background="@drawable/cart_count_background_circle" 
       android:elevation="@dimen/dimen_5_dp" 
       android:gravity="center" 
       android:textColor="@color/white" 
       android:textSize="@dimen/dimen_text_10_sp" 
       android:textStyle="bold" 
       android:visibility="visible" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/rl_search" 
      android:layout_width="@dimen/dimen_40_dp" 
      android:layout_height="@dimen/dimen_40_dp" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="14dp" 
      android:layout_toRightOf="@+id/rl_cart_count"> 

      <ImageView 
       android:id="@+id/iv_search" 
       android:layout_width="@dimen/dimen_24_dp" 
       android:layout_height="@dimen/dimen_24_dp" 
       android:layout_centerInParent="true" 
       android:src="@drawable/ic_search" /> 
     </RelativeLayout> 
    </RelativeLayout> 

</android.support.v7.widget.Toolbar> 

입니다 activity_home_page.xml

내 XML을 찾아주세요. 나는 안드로이드 애니메이션을 처음 접했습니다.

처음에는 프로그래밍 방식으로 rl_search (검색 상자)를 숨 깁니다. 도구 모음 아래에서 ll_search_layout이 위로 스크롤 될 때 rl_cart가 왼쪽으로 이동해야합니다 (원래 위치는 rl_search가 숨겨져 있지 않음). rl_search는 0에서 1로 확장되어야합니다.

LinearInterpolator와 함께 ObjectAnimator를 사용했습니다. 그러나 전혀 작동하지 않습니다.

제안 사항 어떻게해야합니까?

P. - 만약 당신이 참조를 위해 필요하다면 코드를 게시 할 수 있습니다.

감사

답변

15

2 일 넘게 시도한 후 마침내 애니메이션을 할 수 있습니다. 다른 사람들도 이같은 일을하고 싶다면이 답변을 올리고 있습니다.

안드로이드의 애니메이션 유틸리티를 사용하지 않았지만 검색 아이콘을 위아래로 패딩을 늘리거나 줄이기위한 해킹을 해킹했습니다.

이 내 행동 클래스

public class SearchLayoutBehavior extends CoordinatorLayout.Behavior<ImageView> { 

    Context mContext; 

    private static final int DIRECTION_UP = 1; 
    private static final int DIRECTION_DOWN = -1; 
    private static final int CART_PADDING_LOWER_LIMIT = 0; 
    private static int CART_PADDING_UPPER_LIMIT; 
    private static final float SEARCH_SCALING_LOWER_LIMIT = 0.0f; 
    private static final float SEARCH_SCALING_UPPER_LIMIT = 1.0f; 
    private float CART_PADDING_MULTIPLICATION_FACTOR; 
    private float SEARCH_SCALE_MULTIPLICATION_FACTOR; 

    RelativeLayout mRlSearch, mRlParentCart; 
    Toolbar mToolbar; 
    LinearLayout mLlSearchLayout; 

    boolean mIsSetupDone = false; 
    int mScrollingDirection, mPrevDiff1, mPrevDiff2; 

    public SearchLayoutBehavior() { 
     super(); 
    } 

    public SearchLayoutBehavior(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     mContext = context; 
    } 

    @Override 
    public boolean layoutDependsOn(CoordinatorLayout parent, ImageView child, View dependency) { 
     return (dependency.getId() == R.id.ab_app_bar); 
    } 

    @Override 
    public boolean onDependentViewChanged(CoordinatorLayout parent, ImageView child, View dependency) { 
     mRlParentCart = (RelativeLayout) dependency.findViewById(R.id.rl_parent_cart_count); 
     mRlSearch = (RelativeLayout) dependency.findViewById(R.id.rl_search); 
     mToolbar = (Toolbar) dependency.findViewById(R.id.toolbar); 
     mLlSearchLayout = (LinearLayout) dependency.findViewById(R.id.ll_search_layout); 

     int searchLayoutBottom = mLlSearchLayout.getBottom(); 
     int searchLayoutTop = mLlSearchLayout.getTop(); 
     int toolbarBottom = mToolbar.getBottom(); 

     int diff1 = searchLayoutBottom - toolbarBottom; 
     int diff2 = searchLayoutTop - toolbarBottom; 

     if (!mIsSetupDone) { 
      CART_PADDING_UPPER_LIMIT = mContext.getResources().getDimensionPixelSize(R.dimen.cart_animation_move_left); 
      CART_PADDING_MULTIPLICATION_FACTOR = (float) CART_PADDING_UPPER_LIMIT/diff1; 
      SEARCH_SCALE_MULTIPLICATION_FACTOR = (float) 1/diff1; 
      mPrevDiff1 = diff1; 
      mPrevDiff2 = -diff1; 
      mIsSetupDone = true; 
     } 

     if (mScrollingDirection == DIRECTION_UP && mPrevDiff1 >= diff1) { 
      moveCart(mRlParentCart, mPrevDiff1 - diff1, true); 
      mPrevDiff1 = diff1; 
     } else if (mScrollingDirection == DIRECTION_DOWN && mPrevDiff2 <= diff2) { 
      moveCart(mRlParentCart, diff2 - mPrevDiff2, false); 
      mPrevDiff2 = diff2; 
     } 

     if (diff2 == 0) { 
      mPrevDiff1 = diff1; 
      mPrevDiff2 = -diff1; 
     } 

     return true; 
    } 

    private void moveCart(final View view, float by, boolean doMoveLeft) { 
     int paddingRight = view.getPaddingRight(); 
     float scaleX = mRlSearch.getScaleX(); 
     float scaleY = mRlSearch.getScaleY(); 

     if (doMoveLeft) { 
      paddingRight += (int) (by * CART_PADDING_MULTIPLICATION_FACTOR); 
      if (paddingRight >= CART_PADDING_UPPER_LIMIT) { 
       view.setPadding(0, 0, CART_PADDING_UPPER_LIMIT, 0); 
      } else { 
       view.setPadding(0, 0, paddingRight, 0); 
      } 

      scaleX += by * SEARCH_SCALE_MULTIPLICATION_FACTOR; 
      scaleY += by * SEARCH_SCALE_MULTIPLICATION_FACTOR; 
      if (Float.compare(scaleX, SEARCH_SCALING_UPPER_LIMIT) >= 0) { 
       mRlSearch.setScaleX(SEARCH_SCALING_UPPER_LIMIT); 
      } else { 
       mRlSearch.setScaleX(scaleX); 
      } 

      if (Float.compare(scaleY, SEARCH_SCALING_UPPER_LIMIT) >= 0) { 
       mRlSearch.setScaleY(SEARCH_SCALING_UPPER_LIMIT); 
      } else { 
       mRlSearch.setScaleY(scaleY); 
      } 

     } else { 
      paddingRight -= (int) (by * CART_PADDING_MULTIPLICATION_FACTOR); 
      if (paddingRight <= CART_PADDING_LOWER_LIMIT) { 
       view.setPadding(0, 0, CART_PADDING_LOWER_LIMIT, 0); 
      } else { 
       view.setPadding(0, 0, paddingRight, 0); 
      } 

      scaleX -= by * SEARCH_SCALE_MULTIPLICATION_FACTOR; 
      scaleY -= by * SEARCH_SCALE_MULTIPLICATION_FACTOR; 

      if (Float.compare(scaleX, SEARCH_SCALING_LOWER_LIMIT) == -1) { 
       mRlSearch.setScaleX(SEARCH_SCALING_LOWER_LIMIT); 
      } else { 
       mRlSearch.setScaleX(scaleX); 
      } 

      if (Float.compare(scaleY, SEARCH_SCALING_LOWER_LIMIT) == -1) { 
       mRlSearch.setScaleY(SEARCH_SCALING_LOWER_LIMIT); 
      } else { 
       mRlSearch.setScaleY(scaleY); 
      } 
     } 
    } 

    @Override 
    public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, ImageView child, View target, int dx, int dy, int[] consumed) { 
     //Determine direction changes here 
     if (dy > 0 && mScrollingDirection != DIRECTION_UP) { 
      mScrollingDirection = DIRECTION_UP; 
     } else if (dy < 0 && mScrollingDirection != DIRECTION_DOWN) { 
      mScrollingDirection = DIRECTION_DOWN; 
     } 
    } 

    @Override 
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, ImageView child, View directTargetChild, View target, int nestedScrollAxes) { 
     return (nestedScrollAxes & ViewCompat.SCROLL_AXIS_VERTICAL) != 0; 
    } 

} 

이 코디네이터 레이아웃을 사용 내 XML이다. 검색 레이아웃이 위로 이동하면 장바구니가 왼쪽으로 이동하고 검색 아이콘이 확대됩니다.

<com.example.ui.customviews.CustomDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/ab_app_bar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <android.support.design.widget.CollapsingToolbarLayout 
       android:layout_width="match_parent" 
       android:layout_height="131dp" 
       app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

       <LinearLayout 
        android:id="@+id/ll_search_layout" 
        android:layout_width="match_parent" 
        android:layout_height="75dp" 
        android:layout_gravity="bottom" 
        android:orientation="vertical" 
        android:visibility="visible" 
        android:background="@drawable/search_layout_twin_background" 
        app:layout_scrollFlags="scroll|snap"> 

        <LinearLayout 
         android:id="@+id/ll_search_box" 
         android:layout_width="match_parent" 
         android:layout_height="51dp" 
         android:layout_marginBottom="@dimen/dimen_12_dp" 
         android:layout_marginLeft="@dimen/dimen_8_dp" 
         android:layout_marginRight="@dimen/dimen_8_dp" 
         android:layout_marginTop="@dimen/dimen_12_dp" 
         android:background="@drawable/round_corner_layout_white" 
         android:elevation="@dimen/dimen_5_dp" 
         android:focusableInTouchMode="true" 
         android:orientation="horizontal"> 

         <EditText 
          android:id="@+id/et_search" 
          android:layout_width="match_parent" 
          android:layout_height="match_parent" 
          android:layout_gravity="center" 
          android:layout_marginLeft="@dimen/dimen_15_dp" 
          android:layout_weight="80" 
          android:background="@android:color/transparent" 
          android:hint="Search for Products" 
          android:padding="@dimen/dimen_5_dp" 
          android:textColor="@color/black" 
          android:textColorHint="@color/hint_text_color" 
          android:textSize="@dimen/dimen_text_16_sp" /> 

         <ImageView 
          android:id="@+id/iv_search_icon" 
          android:layout_width="@dimen/dimen_22_dp" 
          android:layout_height="@dimen/dimen_24_dp" 
          android:layout_gravity="center" 
          android:layout_marginLeft="@dimen/dimen_17_dp" 
          android:layout_marginRight="@dimen/dimen_20_dp" 
          android:src="@drawable/ic_search_grey" /> 
        </LinearLayout> 

       </LinearLayout> 

       <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/toolbar_primary_height" 
    android:background="@color/askme_blue" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <LinearLayout 
     android:id="@+id/layout_toolbar" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="center"> 

      <ImageView 
       android:id="@+id/iv_drawer_menu" 
       android:layout_width="@dimen/dimen_22_dp" 
       android:layout_height="@dimen/dimen_22_dp" 
       android:layout_gravity="center" 
       android:layout_marginLeft="@dimen/dimen_16_dp" 
       android:layout_marginRight="@dimen/dimen_15_dp" 
       android:background="?attr/selectableItemBackgroundBorderless" 
       android:src="@drawable/ic_drawer_menu" /> 

      <ImageView 
       android:id="@+id/iv_back_btn" 
       android:layout_width="@dimen/dimen_22_dp" 
       android:layout_height="@dimen/dimen_20_dp" 
       android:layout_gravity="center" 
       android:layout_marginLeft="@dimen/dimen_16_dp" 
       android:layout_marginRight="@dimen/dimen_15_dp" 
       android:background="?attr/selectableItemBackgroundBorderless" 
       android:src="@drawable/ic_back_button" 
       android:visibility="gone" /> 
     </FrameLayout> 

     <LinearLayout 
      android:id="@+id/ll_location" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:background="?attr/selectableItemBackgroundBorderless"> 

      <TextView 
       android:id="@+id/toolbar_title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:text="Delhi" 
       android:textColor="@color/white" 
       android:textSize="20sp" 
       android:visibility="visible" /> 

      <ImageView 
       android:id="@+id/toolbar_location_change" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginLeft="@dimen/dimen_3_dp" 
       android:layout_marginTop="@dimen/dimen_4_dp" 
       android:src="@drawable/ic_edit_location" 
       android:visibility="visible" /> 
     </LinearLayout> 


    </LinearLayout> 

    <FrameLayout 
     android:layout_width="@dimen/dimen_100_dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="right" 
     android:layout_marginRight="@dimen/dimen_16_dp" 
     android:gravity="right"> 

     <RelativeLayout 
      android:id="@+id/rl_search" 
      android:layout_width="@dimen/dimen_40_dp" 
      android:layout_height="@dimen/dimen_40_dp" 
      android:layout_gravity="center_vertical|right" 
      android:layout_marginLeft="14dp" 
      android:background="?attr/selectableItemBackgroundBorderless"> 

      <ImageView 
       android:id="@+id/iv_search" 
       android:layout_width="@dimen/dimen_24_dp" 
       android:layout_height="@dimen/dimen_24_dp" 
       android:layout_centerInParent="true" 
       android:src="@drawable/ic_search" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/rl_parent_cart_count" 
      android:layout_width="94dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical|right" 
      android:gravity="right" 
      android:paddingRight="54dp"> 

      <RelativeLayout 
       android:id="@+id/rl_cart_count" 
       android:layout_width="@dimen/dimen_40_dp" 
       android:layout_height="@dimen/dimen_40_dp" 
       android:layout_gravity="center_vertical|right" 
       android:background="?attr/selectableItemBackgroundBorderless"> 

       <ImageView 
        android:layout_width="@dimen/dimen_25_dp" 
        android:layout_height="@dimen/dimen_24_dp" 
        android:layout_centerInParent="true" 
        android:clickable="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false" 
        android:scaleType="center" 
        android:src="@drawable/ic_cart" /> 

       <TextView 
        android:id="@+id/tv_cart_count" 
        android:layout_width="@dimen/dimen_17_dp" 
        android:layout_height="@dimen/dimen_17_dp" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentTop="true" 
        android:layout_marginRight="@dimen/dimen_3_dp" 
        android:layout_marginTop="@dimen/dimen_3_dp" 
        android:background="@drawable/cart_count_background_circle" 
        android:elevation="@dimen/dimen_5_dp" 
        android:gravity="center" 
        android:textColor="@color/white" 
        android:textSize="@dimen/dimen_text_10_sp" 
        android:textStyle="bold" 
        android:visibility="visible" /> 
      </RelativeLayout> 
     </RelativeLayout> 
    </FrameLayout> 

</android.support.v7.widget.Toolbar> 

      </android.support.design.widget.CollapsingToolbarLayout> 

     </android.support.design.widget.AppBarLayout> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:background="@color/askme_blue" 
      app:layout_behavior="com.GetIt.animation.SearchLayoutBehavior"/> 

     <android.support.v4.widget.NestedScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

      <FrameLayout 
       android:id="@+id/container" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" /> 

     </android.support.v4.widget.NestedScrollView> 

    </android.support.design.widget.CoordinatorLayout> 

    <fragment 
     android:id="@+id/navigation_drawer" 
     android:name="com.example.ui.fragment.SideMenuFragment" 
     android:layout_width="@dimen/navigation_drawer_width" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" /> 
</com.example.ui.customviews.CustomDrawerLayout> 

다음과 같이 표시됩니다.

enter image description here

0

CoordinatorLayoutAppBarLayout에 아래처럼 레이아웃을 디자인하고 내부 Toolbar를 추가합니다.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/coordinatorlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context=".dashboard.DashboardActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbarlayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <include 
      layout="@layout/toolbar_default" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:layout_scrollFlags="scroll|enterAlways" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:tabGravity="fill" 
      app:tabMaxWidth="0dp" 
      app:tabIndicatorHeight="4dp" 
      app:tabMode="fixed" 
      app:tabIndicatorColor="@android:color/white" 
      android:background="@color/AppPrimary"/> 
    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_dashboard" /> 

</android.support.design.widget.CoordinatorLayout> 

그리고 대시 보드 콘텐츠의 레이아웃 고해상도의

는 다음과 같은 콘텐츠에 대한 레이아웃 동작을 정의

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    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" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context=".dashboard.DashboardActivity" 
    tools:showIn="@layout/activity_dashboard"> 


    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 

그것은 조금 오래된 패션입니다하지만 당신은 아래 링크에서 coorinator 레이아웃없이 내 솔루션을 확인할 수 있습니다 : Android Toolbar + Tab Layout + Drawer, Hide toolbar when scrolling and take TabLayout to the top

행운을 빈다.

+0

어떻게하면 애니메이션을 할 수 있습니까? 모든 것이 잘 작동하는 애니메이션 휴식을 원합니다. –

+0

다른 솔루션을 링크에서 확인할 수 있습니다. 너를 도울거야. – savepopulation

+0

고마워요. 마침내 나는 주말에 그것을했다. Animator 클래스는 사용하지 않지만 작동합니다. GIF로 답을 올렸습니다. –

관련 문제