Android 一般动画Animation和属性动画Animator
来源:互联网 发布:ipad阅读pdf软件 编辑:程序博客网 时间:2024/05/18 01:36
- 一Animations介绍
- Animations的分类
- Animations的使用方法代码中使用
- Animation的四个子类
- 具体使用方法
- Animator介绍
- Animation和Animator比较
- 关键接口介绍
- Animator使用实例
- 布局
- 主函数
- animator_scalexml
- 一Animations介绍
一、Animations介绍
Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转、缩放、淡入淡出等,这些效果可以应用在绝大多数的控件中。
Animations的分类
Animations从总体上可以分为两大类:
1、Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。Alpha——淡入淡出,Scale——缩放效果,Rotate——旋转,Translate——移动效果。
2、Frame-by-frame Animations:这一类Animations可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示。
Animations的使用方法(代码中使用)
Animations extends Object implements Cloneable
使用TweenedAnimations的步骤:
1.创建一个AnimationSet对象(Animation子类);
2.增加需要创建相应的Animation对象;
3.更加项目的需求,为Animation对象设置相应的数据;
4.将Animatin对象添加到AnimationSet对象当中;
5.使用控件对象开始执行AnimationSet。
Animation的四个子类:
AlphaAnimation、TranslateAnimation、ScaleAnimation、RotateAnimation
具体使用方法
可以看:http://blog.csdn.net/liujiaoruiit/article/details/48574813
Animator介绍
Animator框架是Android 4.0中新添加的一个动画框架,和之前的Animation框架相比,Animator可以进行更多和更精细化的动画控制,而且比之前更简单和更高效。在4.0源码中随处都可以看到Animator的使用。
Animation和Animator比较
Animation框架定义了透明度,旋转,缩放和位移几种常见的动画,而且控制的是一个整个View动画,实现原理是每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧,如果动画没有完成,继续调用invalidate()函数,启动下次绘制来驱动动画,动画过程中的帧之间间隙时间是绘制函数所消耗的时间,可能会导致动画消耗比较多的CPU资源。
在Animator框架中使用最多的是AnimatorSet和ObjectAnimator配合,使用ObjectAnimator进行更精细化控制,只控制一个对象的一个属性值,多个ObjectAnimator组合到AnimatorSet形成一个动画。而且ObjectAnimator能够自动驱动,可以调用setFrameDelay(longframeDelay)设置动画帧之间的间隙时间,调整帧率,减少动画过程中频繁绘制界面,而在不影响动画效果的前提下减少CPU资源消耗。
关键接口介绍
1. ObjectAnimator介绍
Animator框架封装得比较完美,对外提供的接口非常简单,创建一个ObjectAnimator只需通过如下图所示的静态工厂类直接返回一个ObjectAnimator对象。传的参数包括一个对象和对象的属性名字,但这个属性必须有get和set函数,内部会通过java反射机制来调用set函数修改对象属性值。还包括属性的初始值,最终值,还可以调用setInterpolator设置曲线函数。
2. AnimatorSet介绍
AnimatorSet主要是组合多个AnimatorSet和ObjectAnimator形成一个动画,并可以控制动画的播放顺序,其中还有个辅助类通过调用play函数获得。
3. AnimatorUpdateListner介绍
通过实现AnimatorUpdateListner,来获得属性值发生变化时的事件,在这个回调中发起重绘屏幕事件。
Animator使用实例
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:background="#FFB6C1" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/button_animation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="动画"/> <Button android:id="@+id/button_start_animator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="翻牌"/> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/zhaoliying" android:layout_gravity="center"/></LinearLayout>
主函数
public void startAnimator(View view){// 图片(mImageView)的横坐标从0到1的渐变过程,效果和翻牌的效果是一样的 ObjectAnimator.ofFloat(mImageView,"scaleX",0.0f,1).setDuration(3000).start(); Animator animator= AnimatorInflater.loadAnimator(getApplicationContext(),R.animator.animator_scale);//图片根据animator_scale中定义的属性实现变化 animator.setTarget(mImageView); animator.start(); }}
animator_scale.xml
<objectAnimator android:duration="1000" android:propertyName="scaleX" android:valueFrom="1" android:valueTo="2"></objectAnimator> <objectAnimator android:duration="1000" android:propertyName="scaleY" android:valueFrom="1" android:valueTo="2"></objectAnimator>
- Android 一般动画animation和属性动画animator
- Android 一般动画Animation和属性动画Animator
- android属性动画animator
- Android属性动画(Animator)
- Android动画Animation/Animator/LayoutTransition
- Android 一般动画和属性动画
- Android中关于Animation和Animator动画的知识点总结
- Android 属性动画(一):Animator属性动画相对于Animation的优势
- Android之属性动画Animator
- Android Animator属性动画总结
- Android之Animator属性动画
- Android 动画之属性动画(Animator)
- Android动画之(Property Animator(属性动画))
- Android 动画之三 Property Animation—— 属性(Property)动画 【Animator提供基类】
- Android 笔记:View Animation(视图动画)与Property Animator(属性动画)
- Android Animation 属性动画
- Android animation属性动画
- 属性动画Animator
- C/C++中二维数组和指针关系分析
- 菜单
- hdu(2955)——Robberies
- MYSQL线程池总结(一)
- sql语句delete----关联两表删除两表内容
- Android 一般动画Animation和属性动画Animator
- Context
- Java中的数据库处理—增删改查
- debug调试
- 归并排序
- 空格替换(剑指offer+程序员面试金典)+string类知识点讲解
- MySQL线程池总结(二)
- MySQL 存储过程的优缺点
- 华为求字符串最后单词长度