android

xiaoxiao2021-02-27  625

传统动画:帧动画 (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()方法启动动画

转载请注明原文地址: https://www.6miu.com/read-385.html

最新回复(0)