1. 旋转动画
private void propertyRotation(View view){
ObjectAnimator.ofFloat(mIv,View.ROTATION,0,180f).setDuration(2000).start(); //按钮1
ObjectAnimator.ofFloat(mIv,View.ROTATION,180f,0).setDuration(2000).start(); //按钮2
ObjectAnimator.ofFloat(mIv,View.ROTATION,-180f,0).setDuration(2000).start();//按钮3
}
综述:
1.可以使用View.ROTATION.getName()来获得旋转字符串值
2. 0-180f 顺时针旋转 Android 坐标系与数学坐标系y轴相反
180f-0f 逆时针旋转
-180-0 顺时针旋转
对于Android坐标系而言,-180 和 180是同一坐标点
2. 使用动画自带的数值器,在自定义VIew中的使用
如下为2个在日常开发中用到的动画插值,渐进的改变状态
mValueAnimator = ValueAnimator.ofFloat(start, end);
mValueAnimator.setDuration(animTime);
mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mPercent = (float) valueAnimator.getAnimatedValue();
mValue = mPercent * mMaxValue;
mCurrentValue = mValue;
invalidate();
}
});
mValueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
// 停止完了
mIsStopingOn = false;
}
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
// 正在停止
mIsStopingOn = true;
}
});
mValueAnimator.start();
private ValueAnimator showCollapsedAnimation(final View mTargetView, final int mStartHeight, final int mEndHeight){
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
final int newHeight = (int)((mEndHeight - mStartHeight) * (float)valueAnimator.getAnimatedValue() + mStartHeight);
mTv.setMaxHeight(newHeight - mMarginBetweenTxtAndBottom);
if (Float.compare(mAnimAlphaStart, 1.0f) != 0) {
applyAlphaAnimation(mTv, mAnimAlphaStart + (float)valueAnimator.getAnimatedValue() * (1.0f - mAnimAlphaStart));
}
mTargetView.getLayoutParams().height = newHeight;
// 这个很重要 和invidate一样的牛逼 一个是 measure layout 一个是 draw
mTargetView.requestLayout();
}
});
valueAnimator.setDuration(mAnimationDuration);
return valueAnimator;
}