需求:当ScrollView上滑时,动画收缩隐藏Tab;当ScrollView下拉时,动画扩展显示Tab
方案:ValueAnimator属性动画改变TabLayout的高度
private ValueAnimator mGoodsTabIndentAnimator;
private ValueAnimator mGoodsTabExpandAnimator;
private int mGoodsTabLayoutHeight;
public void startGoodsTabIndentAnimation() {
if (mGoodsTabIndentAnimator == null) {
mGoodsTabLayoutHeight = mGoodsTabLayout.getHeight();
NLog.i(TAG, "mGoodsTabLayout Height: " + mGoodsTabLayoutHeight);
mGoodsTabIndentAnimator = ValueAnimator.ofInt(mGoodsTabLayout.getHeight(), 0);
mGoodsTabIndentAnimator.setDuration(200);
mGoodsTabIndentAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
Integer value = (Integer) valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams params = mGoodsTabLayout.getLayoutParams();
params.height = value;
mGoodsTabLayout.setLayoutParams(params);
}
});
}
mGoodsTabIndentAnimator.start();
}
public void startGoodsTabExpandAnimation() {
if (mGoodsTabExpandAnimator == null) {
mGoodsTabExpandAnimator = ValueAnimator.ofInt(0, mGoodsTabLayoutHeight);
mGoodsTabExpandAnimator.setDuration(200);
mGoodsTabExpandAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
Integer value = (Integer) valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams params = mGoodsTabLayout.getLayoutParams();
params.height = value;
mGoodsTabLayout.setLayoutParams(params);
}
});
}
mGoodsTabExpandAnimator.start();
}