Android动画之ScaleAnimation使用

Android  2020年8月24日 pm12:15发布4年前 (2020)更新 城堡大人
87 0 0

Android动画

  1. View Animation 视图动画(Tween Animation 补间动画),只能用来设置View的动画
  2. Drawable Animation 帧动画(Frame动画),一帧帧地显示资源文件中的Drawable
  3. Property Animation 属性动画,在android3.0以上的系统才有。这动画可以设置给任何的Object,包括那些还没有渲染到屏幕的view.

为什么要引入属性动画?

  1. 补间动画只能够作用在View上的
  2. 补间动画只能够实现移动、缩放、旋转和淡入淡出这四种动画操作,不能改变View的背景等
  3. 补间动画只是改变了View的显示效果而已,而不会真正去改变View的属性

View Animation 补间动画

视图动画也叫补间动画,指在一个视图容器中执行一些变换。包含有:位置、大小、旋转、透明 补间动画。

一般通过xml实现,不建议是用android代码实现,因为代码实现的可读性比较差。

补间动画的相关类
  • AlphaAnimation <alpha>放在res/anim/目录下 透明渐变动画效果
  • RotateAnimation <rotate>放在res/anim/目录下 旋转转移动画效果
  • ScaleAnimation <scale>放在res/anim/目录下 缩放动画效果
  • TranslateAnimation <translate>放在res/anim/目录下 移动动画效果
  • AnimationSet <set> 放在res/anim/目录下 持有动画的容器

补间动画之ScaleAnimation使用

ScaleAnimation是尺寸变化动画的类,控制View的尺寸变化。

使用java代码实现
        /**
         *
         * @param fromX 起始x轴位置,0为最小,1为原始,float形
         * @param toX 同上
         * @param fromY 同上
         * @param toY 同上
         * @param pivotXType 用来约束pivotXValue的取值。
         * 取值有三种:Animation.ABSOLUTE,Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT
         * Type:
         * Animation.ABSOLUTE:绝对,如果设置这种类型,后面pivotXValue取值就必须是像素点;比如:控件X方向上的中心点,pivotXValue的取值mIvScale.getWidth() / 2f
         * Animation.RELATIVE_TO_SELF:相对于控件自己,设置这种类型,后面pivotXValue取值就会去拿这个取值是乘上控件本身的宽度;比如:控件X方向上的中心点,pivotXValue的取值0.5f
         * Animation.RELATIVE_TO_PARENT:相对于它父容器(这个父容器是指包括这个这个做动画控件的外一层控件), 原理同上,
         * @param pivotXValue  配合pivotXType使用,原理在上面
         * @param pivotYType 同from/to
         * @param pivotYValue 原理同上
         */
        scaleAnimation = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);
        //动画持续时间
        scaleAnimation.setDuration(1000);
        //动画持续次数,不设置默认0(也就是播放一次,N+1次,< 0 表示无限次)
        scaleAnimation.setRepeatCount(1);
        //动画播放完后倒置播放
        scaleAnimation.setRepeatMode(Animation.REVERSE);
        //播放N+1此后最后是否保持最后的状态
        scaleAnimation.setFillAfter(true);
# 启动动画
textView.startAnimation(scaleAnimation);

# 清除动画
textView.clearAnimation();
使用xml实现

/res/anim/anim_scale.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true">
    <scale
        android:duration="100"
        android:fillAfter="true"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:interpolator="@android:anim/linear_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.15"
        android:toYScale="1.15" />

</set>
    # 加载anim
    Animation  animation = AnimationUtils.loadAnimation(this, R.anim.anim_scale);

    # 启动anim
    if (null != animation) {
        textView.startAnimation(animation);
    }

参考文章

  1. 补间动画详解五 缩放动画ScaleAnimation
  2. Android缩放动画[ScaleAnimation]

 历史上的今天

  1. 2023: C语言之scanf()(0条评论)
  2. 2019: 济慈:夜莺颂(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

  • 九月九
    九月九 游客

    上面的xml配置复制错了吧

    回复
    • 笔友城堡
      笔友城堡 管理员

      @九月九

      哈哈哈 多谢,已经修改。
      回复

随机推荐

自定义垂直Seekbar简介

前言记录一下自定义的垂直SeekBar,记录于此,方便自己查阅。正文一般来说,水平SeekBar是最多的,比如多媒体中的进度控制,音量条的控制,但是偶尔存在项目需要竖直SeekBar。由于没有原生的,要么自定义,要么直接把SeekBar进行90°的翻转也可以,当然,网上也很多相关资料和开源...

白寅:致中文系

你必须是静悄悄地在全校最古旧的一幢楼里在别人发飞信的时候用笔一个字一个字地写明信片你必须是揣着馒头夹榨菜在别人逛步行街的时候坐在阴凉的山北看整整一天的红杜鹃你一定要在草坪上开班会却在教室里化装跳舞你一定要在咖啡馆里争论乾坤阴阳却在中央广场上伫立走神你肯定在走进大学校门...

里柯克:吃饼冠军乔.布朗

我们当中的一位伟大人物。吃饼冠军乔.布朗给人的第一个印象是不嚣张,没架子,身材并不怎么出众,举止坦率随便,一点儿也不让人感到拘束。“请坐吧,”他朝凉台上的摇椅挥挥手,对我们说(我们是一些从报社来采访的记者)。“就坐下吧。天儿挺热的,对不?”他话说得那么朴实,口气又那么和蔼可亲,我们马上就不再感...

startActivity源码分析2

前言简单记录一下startActivity()源码的启动过程,主要是过一下流程,细节太多顾不上。接上回《startActivity源码分析》,启动新的Activity需要fork一个进程处理,经过一系列的操作,最后进入ActivityThread.java的main(),然后进行绑定进程。这...

Java反射记录

前言反射机制是运行程序运行过程中操作(访问和修改)类的各种属性以及方法。正文作用判断任意一个对象所属的类构造任意一个类的对象判断任意一个类所具有的成员变量和方法(包括private)调用任意一个对象的方法缺点不断地生成变量,不断的GC,影响性能参考文章

普希金:我曾经爱过你

我曾经爱过你:爱情,也许在我的心灵里还没有完全消亡,但愿它不会再打扰你,我也不想再使你难过悲伤。我曾经默默无语、毫无指望地爱过你,我既忍受着羞怯,又忍受着嫉妒的折磨,我曾经那样真诚、那样温柔地爱过你,但愿上帝保佑你找到的另一个人如我一样地爱你。(戈宝权 译)