0

動畫意見我有一個coordinatorLayout內的AppBarLayout如下:在AppBarLayout

<coordinatorLayout> 
<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/scrollable_category_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_scrollFlags="scroll|enterAlways|snap" 
     app:tabGravity="center" 
     app:tabMode="scrollable" /> 

    <RelativeLayout 
     android:id="@+id/parent_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="100dp" 
     android:background="@android:color/white" 
     android:visibility="visible"> 

     <few more layout/> 
    </RelativeLayout> 
</android.support.design.widget.AppBarLayout> 

<more views> 
</coordinatorLayout> 

我希望RelativeLayout的被默認爲隱藏,如果API給一個特定的響應,那麼我將展示的RelativeLayout其內容。內容可以根據API響應而具有不同的高度(例如,文本可以是單行或多行等)。所以我不知道開始時的觀點的高度。現在,我想將translationY應用於視圖,以便它看起來是來自tabLayout下方的(顯示陰影等)。

我已經嘗試了許多解決方案,其中之一是:

adParentLayout.animate() 
.translationY(0) 
.setDuration(5000) 
.withEndAction(new Runnable() { 
     @Override 
     public void run() { 
      Toast.makeText(MainActivity.this, "Animation Complete", Toast.LENGTH_SHORT).show(); 
     } 
    }) 
.withStartAction(new Runnable() { 
     @Override 
     public void run() { 
      adParentLayout.setVisibility(View.VISIBLE); 
      adParentLayout.setTranslationY(-adParentLayout.getHeight()); 
     } 
    }); 

這顯然是行不通的。我對動畫不太瞭解,並希望提出建議。

我試過的一個解決方案是使視圖在佈局中可見,然後應用翻譯。但是這使得視圖在TabLayout上方完全覆蓋它。事實證明,AppBarLayout擴展了LinearLayout,所以第二個佈局RelativeLayout在它上面進行了翻譯。我不明白如何實現這種效果,任何正確方向的投入都會有所幫助。

回答

0

我知道它使用LayoutTransition。基本上我只是在appBarLayout中添加了android:animateLayoutchanges = true,並且它處理了視圖可見性的動畫。

我不知道這件事。似乎是一件了不起的事情。