发生布局更改时动画
Posted
技术标签:
【中文标题】发生布局更改时动画【英文标题】:Animate when layout change occurs 【发布时间】:2015-09-03 03:26:42 【问题描述】:在我的 android 应用程序活动布局中,我有一个 LinearLayout 和 RecyclerView,LinearLayout 包含一个 EditText 和 TextField,而 RecyclerView 位于 LinearLayout 下方。
<LinearLayout
android:orientation="vertical">
<LinearLayout
android:orientation="vertical">
<EditText>
<TextView>
</LinearLayout>
<RecyclerView/>
</LinearLayout>
有时我必须删除位于 RecyclerView 上方的 LinearLayout。所以我通过提供一些动画效果来隐藏它
LinearLayout.animate().translationY(-LinearLayout.getHeight()).setInterpolator(new DecelerateInterpolator()).alpha(0.0f).setListener(new AnimatorListenerAdapter()
@Override
public void onAnimationEnd(Animator animation)
super.onAnimationEnd(animation);
LinearLayout.setVisibility(View.GONE);
).setDuration(HEADER_HIDING_ANIMATION_DURATION);
当动画结束时,视图设置为 GONE。然后下面的 RecyclerView 跳到顶部,它只是在没有任何动画的情况下跳转,有没有办法管理它?布局更改的小动画可能对我有所帮助。我在xml中尝试过,但它会引发一些错误。
【问题讨论】:
【参考方案1】:有一种简单的方法可以为布局更改设置动画。 只需将 xml 下一个属性放入
<LinearLayout
android:animateLayoutChanges="true" <====
android:orientation="vertical">
<LinearLayout
android:orientation="vertical">
<EditText>
<TextView>
</LinearLayout>
<RecyclerView/>
</LinearLayout>
然后在代码中将第二个 LinearLayout 的可见性更改为 GONE/VISIBLE。
更多信息可以在这里找到:link to Android Docs
【讨论】:
以上是关于发生布局更改时动画的主要内容,如果未能解决你的问题,请参考以下文章
捏和缩放 RecyclerView 布局以动画和更改布局管理器跨度计数