Android Animation

本文利用java定义集中动画

AlphaAnimation  渐变透明度动画效果

ScaleAnimation  渐变尺寸伸缩动画效果

TranslateAnimation 画面转换位置移动动画效果 

RotateAnimation画面转移旋转动画效果

1 AlphaAnimation

/**
 * Constructor to use when building an AlphaAnimation from code
 * 
 * @param fromAlpha Starting alpha value for the animation, where 1.0 means
 *        fully opaque and 0.0 means fully transparent.
 * @param toAlpha Ending alpha value for the animation.
 */
public AlphaAnimation(float fromAlpha, float toAlpha) {
    
}

//创建一个AlphaAnimation对象,参数从完全不透明,到完全透明
alphaAnimation=new AlphaAnimation(1.0f,0.0f);

2 ScaleAnimation

/**
 * Constructor to use when building a ScaleAnimation from code
 * 
 * @param fromX Horizontal scaling factor to apply at the start of the
 *        animation
 * @param toX Horizontal scaling factor to apply at the end of the animation
 * @param fromY Vertical scaling factor to apply at the start of the
 *        animation
 * @param toY Vertical scaling factor to apply at the end of the animation
 * @param pivotXType Specifies how pivotXValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param pivotXValue The X coordinate of the point about which the object
 *        is being scaled, specified as an absolute number where 0 is the
 *        left edge. (This point remains fixed while the object changes
 *        size.) This value can either be an absolute number if pivotXType
 *        is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
 * @param pivotYType Specifies how pivotYValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param pivotYValue The Y coordinate of the point about which the object
 *        is being scaled, specified as an absolute number where 0 is the
 *        top edge. (This point remains fixed while the object changes
 *        size.) This value can either be an absolute number if pivotYType
 *        is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
 */
public ScaleAnimation(float fromX, float toX, float fromY, float toY,
        int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) {
  
}
public ScaleAnimation(float fromX, float toX, float fromY, float toY,
        float pivotX, float pivotY) {
    
}
public ScaleAnimation(float fromX, float toX, float fromY, float toY) {
    
}
//第一个参数fromX为动画起始时 X坐标上的伸缩尺寸
//第二个参数toX为动画结束时 X坐标上的伸缩尺寸
//第三个参数fromY为动画起始时Y坐标上的伸缩尺寸
//第四个参数toY为动画结束时Y坐标上的伸缩尺寸
/*说明:
    以上四种属性值
    0.0表示收缩到没有
    1.0表示正常无伸缩
    值小于1.0表示收缩
    值大于1.0表示放大
*/
//第五个参数pivotXType为动画在X轴相对于物件位置类型
//第六个参数pivotXValue为动画相对于物件的X坐标的开始位置
//第七个参数pivotXType为动画在Y轴相对于物件位置类型
//第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置

如果没有5、7 个参数默认就是Animation.RELATIVE_TO_SELF

scaleAnimation=new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

3 TranslateAnimation

/**
 * Constructor to use when building a TranslateAnimation from code
 * 
 * @param fromXType Specifies how fromXValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param fromXValue Change in X coordinate to apply at the start of the
 *        animation. This value can either be an absolute number if fromXType
 *        is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
 * @param toXType Specifies how toXValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param toXValue Change in X coordinate to apply at the end of the
 *        animation. This value can either be an absolute number if toXType
 *        is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
 * @param fromYType Specifies how fromYValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param fromYValue Change in Y coordinate to apply at the start of the
 *        animation. This value can either be an absolute number if fromYType
 *        is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
 * @param toYType Specifies how toYValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param toYValue Change in Y coordinate to apply at the end of the
 *        animation. This value can either be an absolute number if toYType
 *        is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
 */
public TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue,
        int fromYType, float fromYValue, int toYType, float toYValue) {

}

public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) {
    
}

//参数1~2:x轴的开始位置
//参数3~4:y轴的开始位置
//参数5~6:x轴的结束位置
//参数7~8:x轴的结束位置
translateAnimation = new TranslateAnimation(
        Animation.RELATIVE_TO_SELF, 0f,
        Animation.RELATIVE_TO_SELF, 0.5f,
        Animation.RELATIVE_TO_SELF, 0f,
        Animation.RELATIVE_TO_SELF, 0.5f);

4 RotateAnimation

/**
 * Constructor to use when building a RotateAnimation from code
 * 
 * @param fromDegrees Rotation offset to apply at the start of the
 *        animation.
 * 
 * @param toDegrees Rotation offset to apply at the end of the animation.
 * 
 * @param pivotXType Specifies how pivotXValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param pivotXValue The X coordinate of the point about which the object
 *        is being rotated, specified as an absolute number where 0 is the
 *        left edge. This value can either be an absolute number if
 *        pivotXType is ABSOLUTE, or a percentage (where 1.0 is 100%)
 *        otherwise.
 * @param pivotYType Specifies how pivotYValue should be interpreted. One of
 *        Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or
 *        Animation.RELATIVE_TO_PARENT.
 * @param pivotYValue The Y coordinate of the point about which the object
 *        is being rotated, specified as an absolute number where 0 is the
 *        top edge. This value can either be an absolute number if
 *        pivotYType is ABSOLUTE, or a percentage (where 1.0 is 100%)
 *        otherwise.
 */
public RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue,
        int pivotYType, float pivotYValue) {
   
}

public RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY) {
    
}

public RotateAnimation(float fromDegrees, float toDegrees) {
   
}
少几个参数的都是默认相对于自身的

//参数1:从哪个旋转角度开始
//参数2:转到什么角度
//后面的4个参数用于设置围绕着旋转的圆的圆心在哪里
//参数3:确定x轴坐标的类型,有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、RELATIVE_TO_PARENT相对于父控件的坐标
//参数4:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴
//参数5:确定y轴坐标的类型
//参数6:y轴的值,0.5f表明是以自身这个控件的一半长度为x轴
rotateAnimation = new RotateAnimation(0, 360,
        Animation.RELATIVE_TO_SELF, 0.5f,
        Animation.RELATIVE_TO_SELF, 0.5f);

5 AnimationSet

//true表示使用Animation的interpolator,false则是使用自己的
animationSet = new AnimationSet(true);
使用AnimationSet可以添加多种动画一次性执行
animationSet.addAnimation(scaleAnimation);
view.startAnimation(animationSet);

6 动画常用方法

    1、setDuration(long durationMills)   设置动画持续时间(单位:毫秒)
  2、setFillAfter(Boolean fillAfter)    如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
  3、setFillBefore(Boolean fillBefore)  如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
  4、setStartOffSet(long startOffSet)   设置动画执行之前的等待时间
  5、setRepeatCount(int repeatCount)   设置动画重复执行的次数

7 动画的速度 Interpolator可以定义动画播放的速度

Interpolator定义了动画变化的速率,在Animations框架当中定义了一下几种Interpolator

AccelerateDecelerateInterpolator:在动画开始与结束的地方速率改变比较慢,在中间的时候速率快。

AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速

CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线

DecelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始减速

LinearInterpolator:动画以均匀的速率改变

scaleAnimation.setInterpolator(new AccelerateInterpolator());











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值