LinearInterpolator
变化率是个常数,即 f (x) = x.
方法:public float getInterpolation(float input)
AccelerateInterpolator--开始变化很慢,然后逐渐变快,即 f(x) = x*x 或者 f(x) = pow(x, 2*mFactor).
方法:public float getInterpolation(float input)
AccelerateDecelerateInterpolator--变化率开始和结束都很慢,但中间很快,即 f(x) = (cos ((x+1)*PI) / 2.0f) + 0.5f.
方法:public float getInterpolation(float input)
LinearInerpolator、AccelerateInterpolator, DecelerateInterpolator, AccelerateDecelerateInterpolator,CycleInterpolator 是 Interpolator 的子类,分别实现了匀速、加速、减速、变速、循环等效果。
AlphaAnimation
控制透明度
构造函数:
@param开始的透明度
@param结束的透明度
AlphaAnimation(float fromAlpha, float toAlpha)
方法:
willChangeBounds() 具体不详,不过其返回值是固定的都是false
willChangeTransformationMatrix() false
ScaleAnimation
控制尺寸
构造函数:
@param开始时x方向的伸缩比列
@param结束时x方向的伸缩比列
@param开始时y方向的伸缩比列
@param结束时y方向的伸缩比列
ScaleAnimation(float fromX, float toX, float fromY, float toY)
@param动画在x轴的伸缩位置0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
@param动画在y轴的伸缩位置
ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY)
@param pivotXType动画在X轴相对于物件位置类型--固定的一些数据
@param pivotYType动画在X轴相对于物件位置类型
pivotXValue,pivotYValue同上面的pivotX,pivotY
ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
方法:
initialize(int width, int height, int parentWidth, int parentHeight)设置动画的大小根据父类的维数(猜测)
TranslateAnimation
移动
构造函数:
@param开始时x的位置
@param结束时x的位置
@param开始时y的位置
@param结束时y的位置
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
@param参考上面ScaleAnimation的
TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue,int fromYType, float fromYValue, int toYType, float toYValue)
方法:
@param同ScaleAnimation的
initialize(int width, int height, int parentWidth, int parentHeight)
RotateAnimation
旋转
构造函数:
@param开始的角度
@param结束的角度
RotateAnimation(float fromDegrees, float toDegrees)
@param动画在x轴的旋转位置
@param动画在x轴的旋转位置
RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY)
方法:
@param同ScaleAnimation的
initialize(int width, int height, int parentWidth, int parentHeight)
Animation
抽象类,所有控制动画的都继承与该类
Aniamtion 是基类,他记录了动画的通用属性和方法。主要的属性包括动画持续时间、重复次数、interpolator等。
方法:---只列举了几个方法,用法很简单,可以去看sdk
getTransformation (currentTime, outTransformation)
该方法根据当前时间 (currentTime) 和 interpolator,计算当前的变换,在 outTransformation 中返回。
setRepeatMode(int)—在测试AnimationSet是该函数没有成功,可能有什么地方设置错了,以后再跟进
@param Animation.RESTART回到动作开始时的坐标,Animation.REVERSE反转的意思,a->b,在从b->a,Animation.INFINITE不断重复该动作
设置动作结束后,将怎样处理,只有在repeatCount大于0或为INFINITE的时候setRepeatMode才会生效
TranslateAnimation、RotateAnimation、AlphaAnimation、ScaleAnimation等是Animation的子类,分别实现了平移、旋转、改变透明度、缩放等动画。
AnimationSet
设置一个动画组,就是将一系列动作合在一起形成新的动画
可以包含多个Animation,但都是在同一个时间执行的,是并行,不是串行执行的。如果AnimationSet中有一些设定,如duration,fillBefore等,它包含的子动作也设定了的话,子动作中的设定将会给覆盖掉。
构造函数:
@param是否公用动画插入器,为true表示共用AnimationSet的插入器
AnimationSet(boolean shareInterpolator)
方法:==
@param为true时将在播放完后被应用,播完后停在最后一幅画上,这里重写了Animation的该方法,其他的基本上都是直接使用父类的
setFillAfter(boolean fillAfter)
@param为true时将在开始前被应用,播完后停在第一幅画上,好像不设置该属性也会停留在最开始的那副上面
setFillBefore(boolean fillBefore)
@param在使用AnimationSet的重复mode时,还没有看到有什么效果,但是它的解释和Animation的该方法是一样的
setRepeatMode(int repeatMode)
@param动画停留时间间隔,从上次结束后停留多长时间进入下一次动画
setStartOffset(long startOffset)
@param添加动画
addAnimation(Animation a)
Example
AnimationSet aa = new AnimationSet(true);
Animation myAnimaton = new TranslateAnimation(0,100,0,100);
aa.addAnimation(myAnimaton);
Animation myAnimaton1 = new RotateAnimation(0,360);
aa.addAnimation(myAnimaton1);
myImage.startAnimation(aa);
aa.start();
aa.setDuration(2000);
aa.setFillAfter(true);
AnimationUtils
该类没有父类,动画的辅助类.构造函数也没有,使用默认的
方法:
@param可以看到不需要实例化该对象就可以使用,通过资源xml获得一个动画
static Animation loadAnimation(Context context, int id)
TranslateAnimation manmation = (TranslateAnimation)AnimationUtils. loadAnimation(this,R.anim.animation);
@param
LayoutAnimationController loadLayoutAnimation(Context context, int id)
LayoutAnimationController
Layout animation controller is used to animated a layout's, or a view group's, children.
该类和其衍生类GridLayoutAnimationController,GridLayoutAnimationController.AnimationParameters等还没有看到相关资料,也没有用过
Animation.Description
Utility class to parse a string description of a size.
GridLayoutAnimationController
A layout animation controller is used to animated a grid layout's children.
GridLayoutAnimationController.AnimationParameters
The set of parameters that has to be attached to each view contained in the view group animated by the grid layout animation controller.
LayoutAnimationController.AnimationParameters
The set of parameters that has to be attached to each view contained in the view group animated by the layout animation controller.
Transformation
Defines the transformation to be applied at one point in time of an Animation.
在xml文件中设置动画可以参考android_xml文件中介绍的,有实例解释
AlphaAnimation
|
渐变透明度动画效果
|
ScaleAnimation
|
渐变尺寸伸缩动画效果
|
TranslateAnimation
|
画面转换位置移动动画效果
|
RotateAnimation
|
画面转移旋转动画效果
|
transition设置两张图片的过渡,好像只能设置两张之间的过渡,多设置几张也只显示前面两张
分享到:
相关推荐
在实际开发中,为了保证兼容性和性能,开发者还需要关注Android版本的差异,对于API 19以下的版本,可能需要使用旧的 Animation 相关类,而对于API 19及以上的版本,推荐使用 ViewPropertyAnimator 或者 Animator ...
在实现动画时,开发者可能会使用 Android 的 Animation 相关类,或者更现代的 Animator API。这些API允许我们精确地控制视图属性的变化,比如宽度、高度、透明度等,从而实现视觉上的展开和折叠效果。此外,为了优化...
总结,Android的自定义`Animation`动画是通过继承`Animation`类并重写相关方法来实现的,它可以为View创建各种动态效果。然而,随着Android版本的更新,属性动画成为更推荐的选择,因为它提供了更强大、更灵活的动画...
`animation`属性是多个相关属性的简写形式,包括`animation-name`、`animation-duration`、`animation-timing-function`、`animation-delay`、`animation-iteration-count`、`animation-direction`、`animation-fill...
`vcer.net.url`可能是一个链接,指向关于VC++或者GIF处理的在线资源,如开发者论坛、教程或相关的API文档,帮助你深入理解和使用这个类。 至于`Gif-Animation`,这可能是包含源码的文件夹,里面可能有.cpp和.h文件...
本压缩包"flutter_animation01.7z"包含了 Flutter 动画相关的代码工程,特别适合开发者深入学习和实践Flutter中的动画实现。 在Flutter中,动画的实现主要依靠`Animation`类和`AnimatedBuilder`组件。`Animation`类...
学习HTML5 SVG Drawing Animation,你需要掌握SVG的基本语法,了解如何创建和操作SVG元素,理解CSS3动画和JavaScript动画原理,以及熟悉相关的库和工具。通过实践,你可以创造出各种富有创意的动态图形,提升网页的...
在“源码”和“工具”的标签下,我们可以理解为这篇博文可能深入解析了动画相关的源代码实现,或者是介绍了一款用于创建和管理动画的工具。通常,分析源码可以帮助开发者理解动画的工作原理,以便自定义和优化动画...
帧动画的实现原理是利用`AnimationDrawable`类,这是一个可以包含多个`Frame`的动画资源,每个`Frame`都是一个单独的图片资源。在Android的资源文件夹下,通常会创建一个`anim`目录来存放帧动画相关的XML文件,这些...
通过深入理解和熟练使用`ValueAnimator`、`ObjectAnimator`和`AnimatorSet`,以及相关的辅助类,你可以在Android应用中实现各种复杂的动画效果。如果你在使用过程中遇到问题,可以通过提供的博客链接获取更多信息,...
本压缩包"Android代码-View中添加Animation.zip"可能包含了如何在Android应用的`View`中添加这两种动画的相关代码示例。 **视图动画(View Animation)** 视图动画是Android早期版本(API Level 11及以下)中使用...
`ViewAnimation`实际上是对`Animation`类的封装,它主要处理与视图相关的动画。`ViewFlipper`、`ViewSwitcher`和`Animator`等类是`ViewAnimation`的一部分,它们简化了在视图之间切换或添加过渡动画的操作。比如,`...
- 使用`CAAnimation`类,这是MFC(Microsoft Foundation Classes)中的封装,提供了对Animation控件的访问和操作。 - 在C++代码中,可以通过`CreateControl`函数动态创建Animation控件,并通过`GetDlgItem`等函数...
尽管提供的链接无法直接访问具体内容,但我们可以基于标题、描述以及标签中的信息来构建一系列相关的知识点。 ### 一、高级动画技术概述 #### 1.1 定义与分类 - **定义**:高级动画技术是指利用计算机图形学原理和...
1. 实例化相应的动画类,并设置相关属性。 2. 调用`setDuration()`设置动画持续时间。 3. 使用`setInterpolator()`设置动画插值器,以自定义动画速度曲线。 4. 调用视图的`startAnimation()`方法启动动画。 除了...
JAR文件通常包含类文件、资源文件以及相关的元数据,便于开发者进行模块化开发和部署。在这个特定的动画库中,包含了实现动画逻辑的类和方法,开发者可以通过调用这些API来创建动态的视觉效果。 动画库的核心功能:...
【描述】:给定的描述链接指向的是一个新浪博客文章,虽然具体内容无法在这里提供,但通常这类文章会详细讲解如何利用Canvas的PathMeasure对象结合动画原理,创建出复杂的图形运动效果。例如,可以追踪路径上的某...
在Android中,所有的动画都可以通过`Animation`类或者其子类来创建。`Animation`类提供了一些基本属性,如动画的持续时间、重复次数、是否反向播放等。开发者可以通过设置这些属性来定制动画效果。 接着,`BAnim_v7...
自定义动画通常涉及继承`Animator`或`Animation`类,并重写相关方法。例如,创建一个自定义的Loading动画,可以创建一个`ValueAnimator`的子类并重写`animateValue(float fraction)`方法来控制动画过程。 四、加载...