1.什么是Animations
它提供了一系列的动画效果,这些效果可以用在绝大多数的控件。
1.1 Animations的分类
大体来说分为2类:
第一类是Tweened Animations,即渐变,该类提供了旋转,移动,伸展和淡出等效果
第二类是Frame by FrameAnimations,有点电影的原理。它可以创建一个Drawable序列,它们可以按照指定的时间间歇一个个显示。
1.1.1 Tweened Animations的分类
分为 Alpha(淡入淡出),Scale(缩放),Rotate(旋转),Translate(移动)四种效果
2.怎么用
首先呢,我们要始终假设一个控件具有多个Animation同时作用的可能性,所以最好的方法就是先定义一个AnimationSet对象
AnimationSet animationSet = newAnimationSet(true);
//关于里面的布尔值,如果是true的话,就代表在代码中设置动画效果
然后再定义一个具体的动画效果对象,比如说
AlphaAnimation alphaAnimation = new AlphaAnimation(1,0);
然后对上面的对象进行一些设置(比如说设置动画时间),然后等所有的都设置好了以后再将这个对象添加到AnimationSet里面去。
animationSet.addAnimation(alphaAnimation);
然后就是通过具体的控件,打开animation,比如
imageView.startAnimation(animationSet);
//关于animationSet这个参数,其实需要传进来的是Animation类型的,但是AnimationSet是其子类,这里相当于多态,把一组Animation传进去。
除此之外,还有3种动画效果,分别解释一下区别最大的部分。
通用属性
setDuration(long durationMills)
setFillAfter(boolean fillAfter)
setFillBefore(boolean fillAfter)
setStartOffset(long startOffset)
setRepeatCount(int repeatCount)
4. AnimationSet
5. Interpolator的使用
它提供了一系列的动画效果,这些效果可以用在绝大多数的控件。
1.1 Animations的分类
大体来说分为2类:
第一类是Tweened Animations,即渐变,该类提供了旋转,移动,伸展和淡出等效果
第二类是Frame by FrameAnimations,有点电影的原理。它可以创建一个Drawable序列,它们可以按照指定的时间间歇一个个显示。
1.1.1 Tweened Animations的分类
分为 Alpha(淡入淡出),Scale(缩放),Rotate(旋转),Translate(移动)四种效果
2.怎么用
首先呢,我们要始终假设一个控件具有多个Animation同时作用的可能性,所以最好的方法就是先定义一个AnimationSet对象
AnimationSet animationSet = newAnimationSet(true);
//关于里面的布尔值,如果是true的话,就代表在代码中设置动画效果
然后再定义一个具体的动画效果对象,比如说
AlphaAnimation alphaAnimation = new AlphaAnimation(1,0);
然后对上面的对象进行一些设置(比如说设置动画时间),然后等所有的都设置好了以后再将这个对象添加到AnimationSet里面去。
animationSet.addAnimation(alphaAnimation);
然后就是通过具体的控件,打开animation,比如
imageView.startAnimation(animationSet);
//关于animationSet这个参数,其实需要传进来的是Animation类型的,但是AnimationSet是其子类,这里相当于多态,把一组Animation传进去。
除此之外,还有3种动画效果,分别解释一下区别最大的部分。
通用属性
setDuration(long durationMills)
setFillAfter(boolean fillAfter)
setFillBefore(boolean fillAfter)
setStartOffset(long startOffset)
setRepeatCount(int repeatCount)
3.在xml文件中进行设置动画
为什么有这种做法呢?你想,假如你要用很多同样的动画效果,你一个一个在代码中去构建,构建了十几个,有一天,你突然觉得你要改某个效果,然后你就得一个一个去改,改死你。用xml文件来做效果的话,你可以在任意多的代码中引用它,需要更改的时候只需要在xml文件中更改,所有的代码也就自动更新生效了。
3.1 怎么做
第一步是在res目录下创建一个anim的文件夹,然后在里面添加xml文件。
每一个xml文件必须以<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
</set>
作为标签,然后再在里面添加各种效果,比如
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"
/>
接下来就是在代码上去做点事情了
首先要创建Animation对象,通过使用AnimationUtils的静态方法 loadAnimation(Contextcontext, int id)来创建。然后再调用比如说imageView的startAnimation(Animationanimation)方法就ok了。
这里传进来的不再是AnimationSet了,因为在xml文件中本身就具有了set,然后将其传给了Animation对象。这里只需要将这个Animation对象传进来就行了。
4. AnimationSet
除了在各个Animation子类设置一些参数(比如说duration之类的)之外,假如涉及到Animation的组合使用,还可以直接在AnimationSet里面设置,这样设置一次就能使得所有Animation子类都有该参数设置,简化代码。
5. Interpolator的使用
暂时不去深究