android_animation三种动画学习总结

本文介绍了三种动画类型:帧动画、补间动画及属性动画,并详细阐述了它们的实现方式及属性配置。对于帧动画,文章提供了创建步骤及代码示例;补间动画部分则涵盖了透明、旋转、平移和缩放四种类型及其特有属性;最后,属性动画通过一个具体示例展示了如何操作控件属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传统动画:帧动画 (frame)       补间动画(tween)

        属性动画

一、首先说一下帧动,大体来说可以分为4个步揍

帧动画:放电影(一帧一帧的图片 连续播放)
         * 1、在drawable文件夹下创建标签是animtion_list文件
         * 2、在该文件中添加图片
         * 3、在ImageView中加载图片
         * 4、开始动画*/

/**

img = (ImageView) findViewById(R.id.img);
        /**通过控件 获取背景图片*/
        AnimationDrawable ad = (AnimationDrawable) img.getBackground();
        /**动画图片播放*/
        ad.start();

二、我们来看一下补间动画

 ☆☆☆:补间动画不会真真改变 控件的位置
          Animation:动画类
          以下方法是所有动画都有的
         aa.setDuration(2000);//ms:毫秒  该动画的变化过程将会在2s中内完成
         aa.setFillAfter(true);//动画效果结束后 保持当前效果
         /**重复的个数
        aa.setRepeatCount(1);
         * 重复的模式
         * Animation.RESTART:重新开始
         * Animation.REVERSE:反向
        aa.setRepeatMode(Animation.REVERSE);
         补间动画(tween):
         透明(alpha):
         旋转(rotate):
         平移(translate):
         缩放(scale):*/

我们这里定义了5种类,分别是 :

AlphaAnimation(透明动画类)

 RotateAnimation(旋转动画类)

ScaleAnimation(缩放动画类)

 TranslateAnimation(平移动画类)

AnimationSet(相当于添加动画的集合)

查阅了相应资料收集了一些动画属性

补间动画的属性

Animation的属性

JAVA方法 XML属性 解释
setDetachWallpaper(boolean) android:detachWallpaper 是否在壁纸上运行
setDuration(long) android:duration 设置动画持续时间,单位为毫秒
setFillAfter(boolean) android:fillAfter 控件动画结束时控件是否保持动画最后状态
setFillBefore(boolean) android:fillBefore 控件动画结束时控件是否还原到开始动画前的状态
setFillEnable(boolean) android:fillEnable(boolean) 与android:fillBefore效果相同
setInterpolator(boolean) android:interpolator 设置插值器(指定的动画效果,如:回弹等)
setRepeatCount(int) android:repeatCount 重复次数
setRepeatMode(int) android:repeatMode 重复类型:reverse倒序回放、restart从头播放
setStartOffset(long) android:startOffset 调用start函数后等待开行运行的时间,单位为毫秒
setZadjustment(int) android:zAdjustment 表示被设置动画的内容运行时在Z轴的位置(top/bottom/normal),默认为normal

由于Animation类是其抽象父类,那么我们在使用补间动画无论是哪一种都已经具备了以上属性。 
下面是每一种补间动画的特有属性:

Alpha属性

JAVA方法 XML属性 解释
AlphaAnimation(float fromAlpha,…) android:fromAlpha 动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明)
AlphaAnimation(…, float toAlpha) androdi:toAlpha 动画结束的透明度(同上)

Rotate属性

JAVA方法 XML属性 解释
RotateAnimation(float fromDegrees, …) android:fromDegress 旋转开始角度,正代表顺时针度数,负代表逆时针度数
RotateAnimation(…, float toDegress) android:toDegress 旋转结束角度(同上)
RotateAnimation(…, …, float pivotX, …) android:pivotX 缩放起点X坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
RotateAnimation(…, …, …, pivotY) android:pivotY 缩放起点Y坐标(同上)

Scale属性

JAVA方法 XML属性 解释
ScaleAnimation(float fromX, …) android:fromXScale 初始X轴缩放比例,1.0表示无变化
ScaleAnimation(…, float toX) android:toXScale 结束X轴缩放比例
ScaleAnimation(…, …, float fromY, …) androd:fromYScale 初始Y轴缩放比例
ScaleAnimation(…, …, …, float toY) android:toYScale 结束Y轴缩放比例
ScaleAnimation(…, float pivotX, …) android:pivotX 缩放起点X轴坐标(同上)
ScaleAnimation(…, float pivotY) android:pivotY 缩放起点Y轴坐标(同上)

Translate属性

JAVA方法 XML属性 解释
TranslateAnimation(float fromXDelta, …) android:fromXDelta 平移起始点X轴坐标
TranslateAnimation(…, float toXDelta) android:toXDelta 平移结束点X轴坐标
TranslateAnimation(…, float fromYDelta, …) android:fromYDelta 平移起始点Y轴坐标
TranslateAnimation(…, float toYDelta) android:toYDelta 平移结束点Y轴坐标

AnimationSet属性

AnimationSet类比较特殊,因为该类是以上4类的组合容器管理类,没有自己特有的属性,它的属性继承自它的父类:Animation。 
我们在使用的时候需要注意,当我们在对set标签设置属性的时候,那么其标签下的所有控件都会产生影响。


补间动画的另一种设置方法是在xml文件中设置,在res文件夹下创建几种动画的文件夹,然后在对应的动画文件夹下创建对应的动画标签文件

Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha);//alpha为动画名
                iv.startAnimation(animation);



三、第三种属性动画,顾名思义可以操作控件的属性,且控件一定要有该属性的get set方法,且会改变控件的真实位置

ObjectAnimator animator = ObjectAnimator.ofFloat(textView,"alpha",1f,0f,1f);
animator.setDuration(5000);
animator.start();

属性动画常用的类ObjectAnimator我们还是调用了ofFloat()方法来去创建一个ObjectAnimator的实例,只不过ofFloat()方法当中接收的参数有点变化了。这里第一个参数要求传入一个object对象,我们想要对哪个对象进行动画操作就传入什么,这里我传入了一个textview。第二个参数是想要对该对象的哪个属性进行动画操作,由于我们想要改变TextView的不透明度,因此这里传入"alpha"。后面的参数就是不固定长度了,想要完成什么样的动画就传入什么值,这里传入的值就表示将TextView从常规变换成全透明,再从全透明变换成常规。之后调用setDuration()方法来设置动画的时长,然后调用start()方法启动动画





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值