Android旋转动画

核心方法

public void startAnimation(Animation animation)
  • 执行动画,参数可以是各种动画的对象,Animation的多态,也可以是组合动画,后面会有。

2个参数的构造方法

/** * Constructor to use when building a RotateAnimation from code. * Default pivotX/pivotY point is (0,0). * * @param fromDegrees Rotation offset to apply at the start of the animation. * @param toDegrees Rotation offset to apply at the end of the animation. */public RotateAnimation(float fromDegrees, float toDegrees) {    mFromDegrees = fromDegrees;    mToDegrees = toDegrees;    mPivotX = 0.0f;    mPivotY = 0.0f;}
  • 第一个参数是图片旋转的起始度数
  • 第二个参数是图片旋转结束的度数

用法

RotateAnimation ta = new RotateAnimation(0, 360);// 设置动画播放的时间ta.setDuration(1000);// 开始播放动画iv.startAnimation(ta);

效果

以图片左上角为旋转中心,顺时针旋转360度
Android旋转动画_第1张图片

4个参数的构造方法

    /**     * 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 pivotX The X coordinate of the point about which the object is being rotated, specified as an absolute number where 0 is the left edge.     * @param pivotY The Y coordinate of the point about which the object is being rotated, specified as an absolute number where 0 is the top edge.     */    public RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY) {        mFromDegrees = fromDegrees;        mToDegrees = toDegrees;        mPivotXType = ABSOLUTE;        mPivotYType = ABSOLUTE;        mPivotXValue = pivotX;        mPivotYValue = pivotY;        initializePivotPoint();    }
  • 头两个参数和上面两个参数的构造方法一样,是开始和结束的角度
  • 后两个参数是设置图片的旋转中心

用法

RotateAnimation ta = new RotateAnimation(0, 360, iv.getWidth() / 2, iv.getHeight() / 2);// 设置动画播放的时间ta.setDuration(1000);// 开始播放动画iv.startAnimation(ta);

效果

以图片中心为旋转中心,顺时针旋转360度

6个参数的构造方法

/*** 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) {   mFromDegrees = fromDegrees;   mToDegrees = toDegrees;   mPivotXValue = pivotXValue;   mPivotXType = pivotXType;   mPivotYValue = pivotYValue;   mPivotYType = pivotYType;   initializePivotPoint();}
  • 比4个参数的构造方法多了第三个和第五个参数,其他用法一样,第三个和四五个参数分别设置第四个和第六个参数的类型,四个参数的构造没有设置,是默认设置了Animation.ABSOLUTE类型

用法

// 创建旋转的动画对象RotateAnimation ta = new RotateAnimation(0, 360, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);// 设置动画播放的时间ta.setDuration(1000);// 开始播放动画iv.startAnimation(ta);

效果

和上面一样,以图片中心为旋转中心,顺时针旋转360度。

设置动画重复播放的次数的方法

/** * Sets how many times the animation should be repeated. If the repeat * count is 0, the animation is never repeated. If the repeat count is * greater than 0 or {@link #INFINITE}, the repeat mode will be taken * into account. The repeat count is 0 by default. * * @param repeatCount the number of times the animation should be repeated * @attr ref android.R.styleable#Animation_repeatCount */public void setRepeatCount(int repeatCount) {    if (repeatCount < 0) {        repeatCount = INFINITE;    }    mRepeatCount = repeatCount;}

使用

sa.setRepeatCount(2);

一直重复

sa.setRepeatCount(Animation.INFINITE);

设置动画重复播放的模式的方法

/** * Defines what this animation should do when it reaches the end. This * setting is applied only when the repeat count is either greater than * 0 or {@link #INFINITE}. Defaults to {@link #RESTART}. * * @param repeatMode {@link #RESTART} or {@link #REVERSE} * @attr ref android.R.styleable#Animation_repeatMode */public void setRepeatMode(int repeatMode) {    mRepeatMode = repeatMode;}

使用

sa.setRepeatMode(ScaleAnimation.REVERSE);

动画的监听

rotateAnimation.setAnimationListener(new AnimationListener() {            @Override            public void onAnimationStart(Animation animation) {                // TODO Auto-generated method stub            }            @Override            public void onAnimationRepeat(Animation animation) {                // TODO Auto-generated method stub            }            @Override            public void onAnimationEnd(Animation animation) {                // TODO Auto-generated method stub            }        });

更多相关文章

  1. Android Activity的各种重载方法
  2. android之Tween动画
  3. Android之socket编程实例,熟悉socket使用方法
  4. Android 版本 相关参数修改(SpreadTrum)
  5. Android Re-installation failed解决方法
  6. Android GestureDetector方法详解
  7. Android xxx is not translated in yyy, zzz 的解决方法
  8. Android 动画基础-变换动画(Twen Animation)
  9. android 开发中遇到的问题及解决方法

随机推荐

  1. android cmd
  2. Android 中 JUnit 测试的配置
  3. Android Studio RadioGroup判断点击按钮
  4. Android 程序开机自启动
  5. android 再按一次后退键退出应用程序
  6. Android界面开发之盘点所有Dialog对话框
  7. Android Studio常见问题汇编
  8. android 点击屏幕关闭 软键盘
  9. The Toast in android
  10. Android简单的计算控件使用