Android常用的四个动画类:
- AlphaAnimation 透明度动画
- ScaleAnimation 缩放动画
- TranslateAnimation 位移动画
- RotateAnimation 旋转动画
1.AlphaAnimation 透明度动画
代码:
public class MainActivity extends AppCompatActivity{
ImageView iv;
AlphaAnimation alphaAnimation;//透明度动画
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.iv);
alphaAnimation = new AlphaAnimation(0,1);//0为全透明 1为不透明
alphaAnimation.setDuration(5000);//动画持续时间
// alphaAnimation.setRepeatCount(3);//重复播放次数
// alphaAnimation.setFillAfter(true);//动画执行完是否停留在执行完的状态
// alphaAnimation.setStartOffset(1000);//执行前的等待
}
public void myClick(View v) {
switch (v.getId()){
case R.id.start:
iv.startAnimation(alphaAnimation);
break;
case R.id.stop:
alphaAnimation.cancel();
break;
}
}
}
效果图:
2.ScaleAnimation 缩放动画
构造方法参数讲解:
ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
- float fromX 动画起始时 X坐标上的伸缩尺寸
- float toX 动画结束时 X坐标上的伸缩尺寸
- float fromY 动画起始时Y坐标上的伸缩尺寸
- float toY 动画结束时Y坐标上的伸缩尺寸
- int pivotXType 动画在X轴相对于物件位置类型
- float pivotXValue 动画相对于物件的X坐标的开始位置
- int pivotYType 动画在Y轴相对于物件位置类型
- float pivotYValue 动画相对于物件的Y坐标的开始位置
代码:
public class MainActivity extends AppCompatActivity{
ImageView iv;
ScaleAnimation saleAnimation;//透明度动画
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.iv);
saleAnimation = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
saleAnimation.setDuration(2000);//设置动画持续时间
saleAnimation.setRepeatCount(2);//设置重复次数
saleAnimation.setFillAfter(true);//动画执行完后是否停留在执行完的状态
saleAnimation.setStartOffset(2000);//执行前的等待时间
}
public void myClick(View v) {
switch (v.getId()){
case R.id.start:
iv.startAnimation(saleAnimation);//开始动画
break;
case R.id.stop:
saleAnimation.cancel();//取消动画
break;
}
}
}
效果图:
3. TranslateAnimation 位移动画
构造方法讲解:
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
- float fromXDelta 动画开始的点离当前View X坐标上的差值
- float toXDelta 动画结束的点离当前View X坐标上的差值
- float fromYDelta 动画开始的点离当前View Y坐标上的差值
- float toYDelta 动画开始的点离当前View Y坐标上的差值
代码:
public class MainActivity extends AppCompatActivity{
ImageView iv;
TranslateAnimation translateAnimation;//透明度动画
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.iv);
translateAnimation = new TranslateAnimation(0, 150,0, 0);
translateAnimation.setDuration(2000);//设置动画持续时间
translateAnimation.setRepeatCount(2);//设置重复次数
translateAnimation.setRepeatMode(Animation.REVERSE);//设置反方向执行
}
public void myClick(View v) {
switch (v.getId()){
case R.id.start:
iv.startAnimation(translateAnimation);//开始动画
break;
case R.id.stop:
translateAnimation.cancel();//取消动画
break;
}
}
}
4.RotateAnimation 旋转动画
构造方法讲解:
RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
- float fromDegrees:旋转的开始角度。
- float toDegrees:旋转的结束角度。
- int pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。
- float pivotXValue:X坐标的伸缩值。
- int pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。
- float pivotYValue:Y坐标的伸缩值。
代码:
public class MainActivity extends AppCompatActivity{
ImageView iv;
RotateAnimation rotateAnimationAnimation;//透明度动画
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.iv);
rotateAnimationAnimation =new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,
0.5f,Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimationAnimation.setDuration(3000);//设置动画持续时间
/** 常用方法 */
rotateAnimationAnimation.setRepeatCount(2);//设置重复次数
rotateAnimationAnimation.setFillAfter(true);//动画执行完后是否停留在执行完的状态
rotateAnimationAnimation.setStartOffset(1000);//执行前的等待时间
}
public void myClick(View v) {
switch (v.getId()){
case R.id.start:
iv.startAnimation(rotateAnimationAnimation);//开始动画
break;
case R.id.stop:
rotateAnimationAnimation.cancel();//取消动画
break;
}
}
}
效果图: