Animations

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)



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的使用

暂时不去深究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值