android_animation三种动画学习总结

来源:互联网 发布:java商城系统 编辑:程序博客网 时间:2024/05/16 10:56
传统动画:帧动画 (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()方法启动动画





0 0
原创粉丝点击