Android实现缩放动画

 更新时间:2022年07月20日 10:11:53   作者:Android-kongqw  
这篇文章主要为大家详细介绍了Android实现缩放动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现缩放动画的具体代码,供大家参考,具体内容如下

核心方法

public void startAnimation(Animation animation)

执行动画,参数可以是各种动画的对象,Animation的多态,也可以是组合动画,后面会有。

4个参数构造方法

/**
 * 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
 */
public ScaleAnimation(float fromX, float toX, float fromY, float toY) {
    mResources = null;
    mFromX = fromX;
    mToX = toX;
    mFromY = fromY;
    mToY = toY;
    mPivotX = 0;
    mPivotY = 0;
}

用法

public void scale(View view) {
    // 创建缩放的动画对象
    ScaleAnimation sa = new ScaleAnimation(0f,1.0f,0f,1.0f);
    // 设置动画播放的时间
    sa.setDuration(1000);
    // 开始播放动画
    iv.startAnimation(sa);
}

效果

以图片左上角为原点,从没有,放大到图片原大小

6个参数构造方法

/**
    * 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 pivotX 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.)
    * @param pivotY 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.)
    */
   public ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY) {
       mResources = null;
       mFromX = fromX;
       mToX = toX;
       mFromY = fromY;
       mToY = toY;

       mPivotXType = ABSOLUTE;
       mPivotYType = ABSOLUTE;
       mPivotXValue = pivotX;
       mPivotYValue = pivotY;
       initializePivotPoint();
   }

前4个参数和上面的用法一样,后两个参数是设置图片缩放的原点,四个参数的构造默认将这两个参数都设置了0,所以是在图片左上角开始缩放

用法

ScaleAnimation sa = new ScaleAnimation(0f, 1.0f, 0f, 1.0f, iv.getWidth() / 2, iv.getHeight() / 2);
// 设置动画播放的时间
sa.setDuration(1000);
// 开始播放动画
iv.startAnimation(sa);

效果

以图片的中心为原点,从没有放大到图片原大小

8个参数构造方法

/**
    * 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) {
       mResources = null;
       mFromX = fromX;
       mToX = toX;
       mFromY = fromY;
       mToY = toY;

       mPivotXValue = pivotXValue;
       mPivotXType = pivotXType;
       mPivotYValue = pivotYValue;
       mPivotYType = pivotYType;
       initializePivotPoint();
   }

用法

// 创建缩放的动画对象
ScaleAnimation sa = new ScaleAnimation(0f, 1.0f, 0f, 1.0f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f);
// 设置动画播放的时间
sa.setDuration(1000);
// 开始播放动画
iv.startAnimation(sa);

和上面6个参数的相比只是多了第5和第7个参数,分别设置他们的类型,注释里面已经说明了,可以设置Animation.ABSOLUTE、Animation.RELATIVE_TO_SELF、Animation.RELATIVE_TO_PARENT类型

效果

效果和上面一样,以图片的中心为原点,从没有放大到图片原大小。

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

/**
 * 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);

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

/**
 * 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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android Studio卡很久(loading)的问题解决办法

    Android Studio卡很久(loading)的问题解决办法

    这篇文章主要介绍了Android Studio卡很久(loading很久)的问题的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android仿苹果关机界面实现代码

    Android仿苹果关机界面实现代码

    这篇文章主要为大家详细介绍了Android仿苹果关机界面的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Android高仿京东垂直循环滚动新闻栏

    Android高仿京东垂直循环滚动新闻栏

    通过自定义的LinearLayout,并且textView能够循环垂直滚动,而且条目可以点击,显示区域最多显示2个条目,并且还有交替的属性垂直移动的动画效果,通过线程来控制滚动的实现
    2016-03-03
  • Android横竖屏幕切换生命周期详解

    Android横竖屏幕切换生命周期详解

    这篇文章主要为大家详细介绍了Android横竖屏幕切换生命周期,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android实现九宫格图案解锁

    Android实现九宫格图案解锁

    这篇文章主要为大家详细介绍了Android实现九宫格图案解锁,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Android AOP之注解处理解释器详解(二)

    Android AOP之注解处理解释器详解(二)

    这篇文章主要介绍了Android AOP之注解处理解释器详解(二)的相关资料,需要的朋友可以参考下
    2017-03-03
  • Android实现摇一摇简单功能

    Android实现摇一摇简单功能

    这篇文章主要为大家详细介绍了Android实现摇一摇简单功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Android Button 自带阴影效果另一种解决办法

    Android Button 自带阴影效果另一种解决办法

    这篇文章主要介绍了Android Button 自带阴影效果另一种解决办法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 另外两种Android沉浸式状态栏实现思路

    另外两种Android沉浸式状态栏实现思路

    这篇文章主要为大家介绍了另外两种Android沉浸式状态栏实现思路,android5.0及以后版本都支持给状态栏着色,而目前android主流版本还是4.4,想要深入了解的朋友可以参考一下
    2016-01-01
  • Android面试笔记之常问的Context

    Android面试笔记之常问的Context

    Android技术面试确实常常被问到Context,大概问题就是说说你对Context的理解吧,当时脑袋里浮现了是原来看到的文章片段乱说一通,这样还是不行的。平时还是多积累知识,深刻理解Context,在项目开发过程中也能避免一些陷入坑中。下面就来看看个人的一些总结吧。
    2016-12-12

最新评论