视图动画的整体框架是:
scaleAnimation(缩放动画) /**
* 缩放动画
* //以View左上角作为缩放中心,水平方向扩大一倍,垂直方向缩小为原来的一半
*/
private void scaleAnimation(TextView textView) {
float fromXScale = 1.0f;
float toScaleX = 2.0f;
float fromYScale = 1.0f;
float toScaleY = 0.5f;
Animation animation = new ScaleAnimation(fromXScale, toScaleX, fromYScale, toScaleY);
//设置动画持续时间
animation.setDuration(3000);
//通过View的startAnimation方法将动画立即应用到View上
textView.startAnimation(animation);
}
/**
* 缩放动画
* //以View中心点作为缩放中心,水平方向和垂直方向都缩小为原来的一半
*/
private void scaleAnimation1(TextView textView) {
float fromXScale = 1.0f;
float toScaleX = 0.5f;
float fromYScale = 1.0f;
float toScaleY = 0.5f;
float pivotX = textView.getWidth() / 2;
float pivotY = textView.getHeight() / 2;
Animation animation = new ScaleAnimation(fromXScale, toScaleX, fromYScale, toScaleY, pivotX, pivotY);
//设置动画持续时间
animation.setDuration(3000);
//通过View的startAnimation方法将动画立即应用到View上
textView.startAnimation(animation);
}
/**
* 缩放动画
* 以View中心点作为缩放中心,水平方向和垂直方向都缩小为原来的一半
*/
private void scaleAnimation2(TextView textView) {
float fromXScale = 1.0f;
float toScaleX = 0.5f;
float fromYScale = 1.0f;
float toScaleY = 0.5f;
int pivotXType = Animation.RELATIVE_TO_SELF;
float pivotXValue = 0.5f;
int pivotYType = Animation.RELATIVE_TO_SELF;
float pivotYValue = 0.5f;
animation = new ScaleAnimation(fromXScale, toScaleX, fromYScale, toScaleY, pivotXType, pivotXValue, pivotYType, pivotYValue);
//设置动画持续时间
animation.setDuration(3000);
//通过View的startAnimation方法将动画立即应用到View上
// textView.startAnimation(animation);
}
translateAnimation(平移动画)
/**
* 平移动画
* fromXDelta 表示动画开始时View相对于原来位置X轴方向的偏移坐标
* toXDelta 表示动画结束时View相对于原来位置X轴方向的偏移坐标
* fromYDelta 表示动画开始时View相对于原来位置Y轴方向的偏移坐标
* toYDelta 表示动画结束时View相对于原来位置Y轴方向的偏移坐标
*
* @param textView
*/
private void translateAnimation(TextView textView) {
int fromXDelta = 0;
int toXDelta = getResources().getDisplayMetrics().widthPixels / 2;
int fromYDelta = 0;
int toYDelta = 0;
//让动画在水平位置上沿X轴平移toXDelta个像素
animation1 = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
//设置动画持续时间为5000毫秒
animation1.setDuration(5000);
// textView.startAnimation(animation1);
}
/**
* 平移动画
* fromXType的取值有三种,分别是:ABSOLUTE、RELATIVE_TO_PARENT和RELATIVE_TO_SELF。
* ABSOLUTE :当fromXType取值为ABSOLUTE时,表示fromXValue的值是在该View的父控件的坐标系的绝对值,
* 比如fromXValue为200,表示动画开始时,View的左侧到其父控件左侧的距离是200个像素。
* RELATIVE_TO_PARENT :当fromXType取值为RELATIVE_TO_PARENT时,表示fromXValue的值是相对于其父控件尺寸的百分比。
* 比如fromXValue为0,表示动画开始时,View的左侧紧靠父控件的左侧;fromXValue为0.5时,表示动画开始时,View的左侧位置在父控件水平方向中间的位置;
* fromXValue为1时,表示动画开始时,View的左侧位置与父控件的右侧位置完全重合。
* RELATIVE_TO_SELF:当fromXType取值为RELATIVE_TO_SELF时,表示fromXValue的值是相对于其自身尺寸的百分比。
* 比如fromXValue为0,表示动画开始时,View的X坐标和初始位置的X坐标相同;
* fromXValue为0.5时,表示动画开始时,View的左侧位置在初始View状态下水平方向中间的位置,即向右偏移了View宽度的一半;
* fromXValue为1时,表示动画开始时,View的左侧位置正好与初始View状态下的右侧位置重合,即向右偏移了正好View的宽度大小的距离。
*
* @param textView
*/
private void translateAnimation1(TextView textView) {
//设置fromX
int fromXType = Animation.ABSOLUTE;
float fromXValue = textView.getX();
//设置toX
int toXType = Animation.RELATIVE_TO_PARENT;
float toXValue = 0.5f;
//设置fromY
int fromYType = Animation.ABSOLUTE;
float fromYValue = textView.getY();
//设置toY
int toYType = Animation.RELATIVE_TO_SELF;
float toYValue = 3.0f;
//创建动画
Animation animation = new TranslateAnimation(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue);
//设置动画持续时间为3000毫秒
animation.setDuration(3000);
//通过View的startAnimation方法将动画立即应用到View上
textView.startAnimation(animation);
}
alphaAnimation(渐变动画)
/**
* 渐变动画
*
* @param textView
*/
private void alphaAnimation(TextView textView) {
//1.0表示完全不透明,0.0表示完全透明
float fromAlpha = 0.0f;
float toAlpha = 1.0f;
//1.0 => 0.0表示View从完全不透明渐变到完全透明
animation2 = new AlphaAnimation(fromAlpha, toAlpha);
//设置动画持续时间为3000毫秒
animation2.setDuration(5000);
//通过View的startAnimation方法将动画立即应用到View上
// textView.startAnimation(animation2);animation
}
RotateAnimation(旋转动画)
/**
* 旋转动画
* 以textView左上角为旋转点
*
* @param textView
*/
private void RotateAnimation(TextView textView) {
//以View左上角为旋转轴,创建旋转60度的动画
Animation animation = new RotateAnimation(0, 60);
//设置动画持续时间
animation.setDuration(3000);
//通过View的startAnimation方法将动画立即应用到View上
textView.startAnimation(animation);
}
/**
* 旋转动画
* 以textView中心为旋转点
*
* @param textView
*/
private void RotateAnimation1(TextView textView) {
//以View中心点作为旋转轴,创建旋转90度的动画
float pivotX = textView.getWidth() / 2;
float pivotY = textView.getHeight() / 2;
Animation animation = new RotateAnimation(0, 90, pivotX, pivotY);
//设置动画持续时间
animation.setDuration(3000);
//通过View的startAnimation方法将动画立即应用到View上
textView.startAnimation(animation);
}
/**
* 旋转动画
* 以View的父控件中心点作为旋转轴,创建旋转360度的动画
*
* @param textView
*/
private void RotateAnimation2(TextView textView) {
//以View的父控件中心点作为旋转轴,创建旋转360度的动画
int pivotXType = Animation.RELATIVE_TO_PARENT;
float pivotXValue = 0.5f;
int pivotYType = Animation.RELATIVE_TO_PARENT;
float pivotYValue = 0.5f;
animation3 = new RotateAnimation(0, 360, pivotXType, pivotXValue, pivotYType, pivotYValue);
//设置动画持续时间
animation3.setDuration(3000);
//通过View的startAnimation方法将动画立即应用到View上
// textView.startAnimation(animation3);
}
AnimationSet(组合动画)
AnimationSet set = new AnimationSet(true);
set.addAnimation(animation);
set.addAnimation(animation1);
set.addAnimation(animation2);
set.addAnimation(animation3);
set.setDuration(3000);
textView.startAnimation(set);