初学android开发--动画效果实现
2016-04-27 21:35
513 查看
一、属性动画
属性动画的执行类: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();
停止播放动画
属性动画的执行类: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();
停止播放动画
相关文章推荐
- Ubuntu搭建Android-Studio环境
- AndroidManifest中的android:labe=""
- android textView加圆环 只需要加个背景就行了
- android 布局relativeLayout实现底部标签
- Android二维码生成与扫描
- Android颜色表
- android 拍照 相册 剪切以及显示功能
- Android DownLoadManager的使用
- Android中的Service与进程间通信(IPC)详解
- android studio学习----通过github的URL怎么导入新的工程
- Android中实体类的使用
- Android常用工具类
- Android ListView通用适配器升级支持多种布局
- Android :ViewPager+Fragment 实现顶部导航滑动效果
- Android Launcher拖拽原理分析
- Android应用启动界面分析(Starting Window)
- 自定义View
- android studio学习----Failed to resolve: com.android.support:design:22.1.1
- Android Handler机制
- android---高德地图(1)---显示一张简单地图