android动画基础初探

android动画相关代码:

AccelerateDecelerateInterpolator 
AccelerateInterpolator 
AlphaAnimation 
Animation 
Animation.Description 
AnimationSet 
AnimationUtils 
AnticipateInterpolator 
AnticipateOvershootInterpolator 
BounceInterpolator 
CycleInterpolator 
DecelerateInterpolator 
GridLayoutAnimationController 
GridLayoutAnimationController.AnimationParameters 
LayoutAnimationController 
LayoutAnimationController.AnimationParameters 
LinearInterpolator 
OvershootInterpolator 
RotateAnimation 
ScaleAnimation 
TranslateAnimation 


animation的结构如下: 


官方给我们提供的动画类型,看图一目了然,当然还有属性动画,之后再说。官方给我了我们这些基础动画,配上一下各种(Interpolator)加速器,组合成很多酷炫的动画。今天我们要细致说的是tweend animation中的RotateAnimation。 


参照上图,默认的旋转点是view的(0,0),顺时针旋转角度为正,逆时针角度为负,开始角度fromDegrees,结束角度toDegrees。比如: 
fromDegree 为30,toDegrees为60,那么旋转的角度是60-30 = 30。 
fromDegrees为30,投Degrees为-30,那么旋转的角度是30-(-30)= 60 
说清楚的角度的问题,再来讲旋转点,如何控制旋转点的位置呢?

publicRotateAnimation (float fromDegrees, float toDegrees, float pivotX, float pivotY)

·        1

看一下构造函数,RotateAnimation 用 float pivotX, float pivotY这两个参数来控制旋转点。比如pivotX设为50%,pivotY设为50%,意思就是围绕view本身的中心旋转。 
下面我们看一个example,58同城app上底部导航栏的item动画。很简单的一个动画,但是用着一点都不违和,很有耳目一新的感觉。 
下面给出xml代码: 
cycle_shake.xml

<?xmlversion="1.0" encoding="utf-8"?>

<cycleInterpolatorxmlns:android="http://schemas.android.com/apk/res/android"

    android:cycles="3"/>

这个cycleInterpolator 是用来重复动画3次。

shake.xml

<?xmlversion="1.0" encoding="utf-8"?>

<rotatexmlns:android="http://schemas.android.com/apk/res/android"

    android:pivotX="50%"

    android:pivotY="0%"

    android:fromDegrees="5"

    android:toDegrees="-5"

    android:duration="500"

    android:interpolator="@anim/cycle_shake"

    />

差不多了,解释一下interpolator,这是一个时间插值类,定义动画变换的速度。能够实现alpha/scale/translate/rotate动画的加速、减速和重复等。Interpolator类其实是一个空接口,继承自TimeInterpolator,TimeInterpolator时间插值器允许动画进行非线性运动变换,如加速和限速等,该接口中只有接口中有一个方法 float getInterpolation(float input)这个方法。传入的值是一个0.0~1.0的值,返回值可以小于0.0也可以大于1.0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值