初学android开发--动画效果实现

一、属性动画

属性动画的执行类:ObjectAnimator

使用步骤:

动态生成

1、ObjectAnimator.ofFloat()/ofInt()创建一个ObjectAnimator

2、setTarget方法指定ObjectAnimator的作用对象

3、ObjectAnimator.start()启动属性动画

加载静态xml配置文件:

1、res文件夹下创建animator文件夹

2、在animator文件夹中创建xml动画配置文件

3、在xml中使用objectAnimator标签

4、AnimatorInflater填充xml动画配置文件,返回属性动画对象

5、调用ObjectAnimator.start方法启动属性动画


创建ObjectAnimator动画执行类时,需要注意ObjectAnimator.ofFloat()方法中的参数问题,因为是静态方法,所以不能new,只能通过ObjectAnimator.ofFloat()获得一个实例,API中是这样描述的

public static ObjectAnimator ofFloat(Object target,String propertyName,float values){

ObjectAnimator anim=new ObjectAnimator(target,propertyName);

anim.setFloatValues(values);

return anim;

}

第一个参数:属性动画需要操作的对象类(不一定是View,可以是任意类)

第二个参数:需要通过动画的方式来修改的属性XXX(在对象类中一定包含setXXX()方法)

第三个参数:可变数组,指定起始值范围


AnimatorSet 可以执行多个属性动画

使用步骤:

1、创建空的AnimatorSet

2、动态生成多个需要被执行的属性动画

3、通过AnimatorSet.play方法通知AnimatorSet第一个执行的属性动画

4、通过with方法通知AnimatorSet执行某一动画与另外动画同时执行,除此之外,还有before,after可以使用

AnimatorSet aninSet = new AnimatorSet();

ObjectAnimator translateX = ObjectAnimator.ofFloat(image,"translationX",0,100);

ObjectAnimator translateY = ObjectAnimator.ofFloat(image,"translationY",0,100);

animSet.play(translateX).before(translateY);

animSet.start();

二、补间动画

补间动画并不会改变View的真正属性,只是一个界面显示效果,开发者只需指定动画开始、动画结束等关键帧,而动画变化的中间帧由系统计算并补齐。

Android使用Animation代表抽象的动画类,它包括如下几个子类:

1、AlphaAnimation:透明度改变的动画。创建该动画时要指定动画开始时的透明度、结束时的透明度和动画的持续时间。

2、ScaleAnimation:大小缩放的动画。创建该动画时要指定动画开始时的缩放比(以X 、Y轴的缩放参数来表示)、结束时的缩放比(以X、Y轴的缩放参数表示),并指定动画持续时间。由于缩放时以不同点为中心的缩放效果并不相同,因此指定缩放动画时还要通过pivotX、pivotY来指定“缩放中心”的坐标

3、TranslateAnimation:位移变化的动画。创建该动画时只要指定动画开始时的位置(以X、Y坐标来表示)、结束时的位置(以X、Y坐标表示),并指定动画持续时间即可。

4、RotateAnimation:旋转动画。创建该动画时要指定动画开始时的旋转角度、结束时的旋转角度,并指定动画持续时间。由于选准时以不同点为中心的旋转效果并不相同,因此指定旋转动画时还要通过pivotX、pivotY来指定“旋转轴心”的坐标


三、逐帧(Frame)动画

定义帧动画非常简单,只要在<animation-list.../>元素中使用<item.../>子元素定义动画的全部帧,并指定各帧的持续时间即可。

在Java代码中的实现:

1、创建AnimationDrawable对象

2、调用addFrame(Drawable frame, int duration)向该动画中添加帧

需要指出的是,AnimationDrawable代表的动画默认是不播放的,必须在程序中启动动画播放才可以

start(); 开始播放动画

stop(); 停止播放动画

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值