Android

您所在的位置:网站首页 补帧的作用 Android

Android

2023-05-12 02:11| 来源: 网络整理| 查看: 265

一: 动画的分类帧动画补间动画属性动画二:解析1. 帧动画(1)定义

这些图片是将一些列的drawable组合在一起,进行连续的播放, 类似于以前电影源用胶卷进行动画播放

(2)有图有真相

Android - 动画(帧动画,补间动画,属性动画,以及插值器)_android

(3)准备图片

看着是不是还行,哈哈,下面说一下实现,首先准备几个图片,百度吧,啥都有,还有美女动图,哈哈,准备好图片以后就开始我们的项目咯

(4)创建XML 配置文件在res下创建一个drawable文件夹,在其中创建一个anim.xml在 标签中将一系列的图片组合在一起 (5) 如何在代码中使用//开始动画 private void init_startAnim() { anim = (AnimationDrawable) getResources().getDrawable(R.drawable.anim); img.setBackgroundDrawable(anim);//img 是我们放在布局文件中的ImageView anim.start(); } //停止动画 private void init_stopAnim() { if (anim != null) { anim.stop(); } }2. 补间动画本文很多参考这篇文章,有兴趣的小伙伴,可以点击详细查看(1) 定义

指的View可以是TextView,Button等等 可以让指定的View进行缩放,旋转,位移,透明度的变化 (对前面的4个效果可以组合实用)

(2)属性讲解

属性名称

作用

Alpha

透明度

Rotate

旋转

Canle

缩放

Translate

位移

Set

组合

先有个概念,后续会对每个属性详细讲解。。。

(3)使用创建res/anim的文件夹 , 在anim中定义指定标签的布局文件在动态代码中加载补间动画找到指定的View播放动画

还有比我还细心的嘛

anim_test中的属性

动画属性的介绍,这里很重要(4) 属性讲解

Animaton属性讲解(上诉的动画都有这些属性,是父类)

属性名称

作用

备注

duration

动画执行的时间

以毫秒为单位

fillEnabled

动画结束时,是否还原到开始动画前的状态

true或者false

fillBefore

与fillEnabled相同

fillAfter

动画结束时,是否将保持动画最后时的状态

true或者false

repeatMode

重复类型

reverse:表示倒序回访,restart:表示重新放一遍,这个属性必须与repeatCount联合使用,因为牵扯到重复,即重复播放时的播放类型。

repeatCount

动画重复的次数

infinite:表示无限循环

interpolator

设定的插值器,它主要用来为动画设置一些特殊的效果,比方说:加速运动、减速运动、动画结束的时候弹起等等。

下面会详细介绍

alpha属性详解

属性名称

作用

备注

fromAlpha

动画开始时的透明度

变化范围为0.0-1.0,0.0表示完全透明,1.0表示完全不透明

toAlpha

动画结束时的透明度

同上

rotate属性详解

属性名称

作用

备注

fromDegrees

动画开始时旋转的角度位置

float类型;正值代表顺时针方向度数,负值代码逆时针方向度数

toDegrees

动画结束时旋转到的角度位置

同上

pivotX

旋转点X轴坐标

排版问题,请看下面的备注

pivotY

旋转点Y轴坐标

同上

pivotX:float类型,可以是数值、百分数、百分数p三种样式,比如50、50%、50%p; 当为数值时,表示在当前View的左上角,即原点处加上50px,做为旋转点X坐标,如果是50%;表示在当前控件的左上角加上自己宽度的50%做为旋转点X坐标;如果是50%p,那么就是表示在当前控件的左上角加上父控件宽度的50%做为旋转点X坐标

canle属性详解

属性名称

作用

备注

fromXScale

起始的X方向上相对自身的缩放比例

型float,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍

toXScale

结尾的X方向上相对自身的缩放比例

类型float

fromYScale

起始的Y方向上相对自身的缩放比例

类型float

toYScale

结尾的Y方向上相对自身的缩放比例

类型float

pivotX

缩放起点X轴坐标

可以是数值、百分数、百分数p

pivotY

缩放起点Y轴坐标

取值及意义与pivotX一样

Translate属性详解

属性名称

作用

备注

fromXDelta

起始点X轴坐标

可以是数值、百分数、百分数p 三种样式

fromYDelta

起始点Y坐标

同上

toXDelta

结束点X坐标

toYDelta

结束点Y坐标

Set属性详解

他没有特殊的属性,因为他的作用只是将所有属性融合在一起

例如

interpolator插值器

这篇文章对interpolator,讲解的比较深入

interpolaotor定义了动画变化的速率,它允许基础动画(alpha, scale, translate, rotate)加速,减速,重复变化等等。在补间动画中,我们一般只定义关键帧(首帧和尾帧),然后由系统自动生成中间帧,生成中间帧的这个过程可以成为“插值”。插值器定义了动画变化的速率,提供不同的函数定义变化值相对于时间的变化规则,可以定义各种各样的非线性变化函数,比如加速、减速等。下面是几种常见的插值器:

Interpolator对象

功能作用

属性讲解

AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator

先加速再减速

AccelerateInterpolator @android:anim/accelerate_interpolator

加速

android:factor 浮点值,加速速率,默认为1; android:tension浮点值,起始点后退的张力、拉力数,默认为2

AnticipateInterpolator @android:anim/anticipate_interpolator

先回退一小步然后加速前进

AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator

先回退一小步然后加速前进,超出终点一小步后再回到终点

android:tension 同上; android:extraTension 浮点值,拉力的倍数,默认为1.5(2 * 1.5)

BounceInterpolator @android:anim/bounce_interpolator

最后阶段弹球效果

CycleInterpolator @android:anim/cycle_interpolator

周期运动

android:cycles整数值,循环的个数,默认为1

DecelerateInterpolator @android:anim/decelerate_interpolator

减速

android:factor 浮点值,减速的速率,默认为1

LinearInterpolator @android:anim/linear_interpolator

匀速

OvershootInterpolator @android:anim/overshoot_interpolator

快速到达终点并超出一小步最后回到终点

tension浮点值,超出终点后的张力、拉力,默认为2

插值器的使用

animation.setInterpolator(new OvershootInterpolator());(5)代码中如何使用补间动画Animation animation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.rotate); ivGirl.startAnimation(animation);3. 属性动画推荐这文章,讲的真的挺好的(1)定义

通过改变任何对象的属性,在属性改变的过程当中产生的动画 (3.0以后提出的) 比如:颜色 字体的颜色是红色 最后最后的颜色是绿色 (属性动画体现该变化效果) 更改控件的宽度高度等等,和补间动画相比他是改变了Object的属性,而补间动画不会改变View的属性

ValueAnimatorprivate void init_ValueAnimator() { ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,100); valueAnimator.setDuration(200); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float value = (Float) animation.getAnimatedValue(); img.setTranslationX(value); } }); valueAnimator.start(); }ObjectAnimatorprivate void init_ObjectAnimator() { ObjectAnimator oa = ObjectAnimator.ofFloat(img, "rotationY", 0f, 360f); oa.setDuration(3000);//设置时间 oa.start();// 播放动画 }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3