一、显示隐藏布局:
private void showHideLayout(final LinearLayout ll_hide)
{
ll_hide.setVisibility(View.VISIBLE);
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 110, getResources().getDisplayMetrics());
ValueAnimator animator = ValueAnimator.ofInt(0, height);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int value = (int) animation.getAnimatedValue();
Log.e(TAG, "value : " + value);
ViewGroup.LayoutParams params = ll_hide.getLayoutParams();
params.height = value;
ll_hide.setLayoutParams(params);
}
});
animator.setDuration(500);
animator.start();
}
二、计时器(也可倒计时):
private void showTime(final TextView timeTxt)
{
// 前面参数比后面参数大则为倒计时
ValueAnimator valueAnimator = ValueAnimator.ofInt(30, 1);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
timeTxt.setText(animation.getAnimatedValue().toString());
}
});
valueAnimator.setDuration(30000);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.start();
}
三、自定义动画(重写applyTransformation方法):
class CusAnimation extends Animation
{
@Override
protected void applyTransformation(float interpolatedTime, Transformation t)
{
super.applyTransformation(interpolatedTime, t);
Matrix matrix = t.getMatrix();
matrix.preScale(1, 1-interpolatedTime, beauty.getWidth()/2, beauty.getHeight()/2);
}
}