首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关键帧(首帧或尾帧),然后由系统自动生成中间帧,生成中间帧的这个过程可以成为“插值”。插值器定义了动画变化的速率,提供不同的函数定义变化值相对于时间的变化规则,可以定义各种各样的非线性变化函数,比如加速、减速等。下面是几种常见的插值器:
- Interpolator对象 资源ID 功能作用
- AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator 先加速再减速
- AccelerateInterpolator @android:anim/accelerate_interpolator 加速
- AnticipateInterpolator @android:anim/anticipate_interpolator 先回退一小步然后加速前进
- AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator 在上一个基础上超出终点一小步再回到终点
- BounceInterpolator @android:anim/bounce_interpolator 最后阶段弹球效果
- CycleInterpolator @android:anim/cycle_interpolator 周期运动
- DecelerateInterpolator @android:anim/decelerate_interpolator 减速
- LinearInterpolator @android:anim/linear_interpolator 匀速
- OvershootInterpolator @android:anim/overshoot_interpolator 快速到达终点并超出一小步最后回到终点
插值器使用法:
<set android:interpolator="@android:anim/accelerate_interpolator">
...
</set>
个性化插值器:
如果系统提供的插值器不能满足需要,可以通过修改插值器的属性优化,比如修改AnticipateInterpolator的加速速率,调整CycleInterpolator的循环次数等。
常见的插值器可调整的属性:
<accelerateDecelerateInterpolator> 无
<accelerateInterpolator> android:factor 浮点值,加速速率,默认为1
<anticipateInterploator> android:tension 浮点值,起始点后退的张力、拉力数,默认为2
<anticipateOvershootInterpolator> android:tension 同上 android:extraTension 浮点值,拉力的倍数,默认为1.5(2 * 1.5)
<bounceInterpolator> 无
<cycleInterplolator> android:cycles 整数值,循环的个数,默认为1
<decelerateInterpolator> android:factor 浮点值,减速的速率,默认为1
<linearInterpolator> 无
<overshootInterpolator> 浮点值,超出终点后的张力、拉力,默认为2
使用修改插值器属性法
在/res/anim下创建一个XML文件(以修改overshootInterpolator属性为例)命名为my_overshoot_interpolator.xml
<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:tension="7.0"/>
引用到自定义的插值器
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/my_overshoot_interpolator"
.../>
自定义插值器
如果以上的修改系统插值器属性仍无法满足需要,可以自定义插值器。
分享到:
相关推荐
Android动画,读取AE生成的JSON播放动画,提高动画运行效率,Android使用Lottie-Android插件
本源码中包含三个时钟代码:更改系统时钟__Runable实现;更改系统时钟__TimerTask实现;自定义动画时钟__RotateAnimation实现
bsc-slider是一款带17种内置过渡动画的jquery轮播图插件。该jquery轮播图插件可以制作最基本的轮播图效果,并内置17种过渡动画效果,还可以自定义动画的easing效果。
Android应用中的动画评分视图库,可根据所选评级显示相应的情绪
Android充电动画Demo
Airbnb出了个移动端的动画库Lottie,可以和一个名叫Bodymovin的AE插件结合起来,把在AE上做好的动画导出为json文件,然后以Android/iOS原生动画的形式在移动设备上渲染播放。
给大家提供一款AE上的插件资源:bodymovin,把在AE上做好的动画导出为json文件,然后以Android/iOS原生动画的形式在移动设备上渲染播放。如果电脑上没有AE的话,需要安装AE CC2014或更高版本。 以下是安装步骤: 1....
Photo Motion v1.3 - 照片中的动画和背景中的运动android studio动态壁纸app java项目源码 Photo Motion - Animation in Photos and Motion in backgrounds 动画创建器具有直观的箭头设置照片运动方向。带有令人惊叹...
Android 显示GIF动画源码.zip
MUI卸载是的那个崩溃动画看着很爽对不对,这个demo动画效果和MUI完全一致。
Animating an SVG Menu Icon with Segment Demo for the tutorial on how to animate an SVG menu icon based on Tamas Kojo's Dribbble shot hamburger menu and implemented Segment. By Luis Manuel ...
Android视频字幕滚动逐字显示效果控件,视频字幕逐字滚动显示效果,类似K歌歌词逐字播放效果,最近几年视频越来越火爆,大家对视频对字幕也要求比较高,很多需求类似K歌的歌词播放效果,也就是字幕逐字播放显示效果,...
一个Intellij&Android Studio插件,可将实时模板添加到您的IDE中,从而节省了在Flutter中编写样板的时间。 可用片段 通用的 捷径 展开式 描述 Flutter Docs animatedBldr 动画制作器 创建一个动画生成器。 子...
android软件页面跳转,动画,旋转等资源
android翻页时钟,类似于htc时钟插件那种效果
2 1 Android中的布局 2 2 布局使用技巧 2 2 1 FrameLayout布局 2 2 2 LinearLayout布局 2 2 3 RelativeLayout布局 2 2 4 TableLayout布局 2 2 5 AbsoluteLayout布局 2 2 6 将布局存成图像 2 2 7 设置渐变背景色 2 3 ...
动画UI编辑的相关代码,是关于CCArmature在cocosStudio的运用
AdPlayBanner是一个Android平台基于ViewPager实现的轮播图插件,主要用以自动或者手动地播放轮播图,提供了Fresco、Picasso、Glide等图片加载方式供用户使用,以及多种图片切换动画,设置轮播时间,设置数据源顺序,...
由Airbnb开发的Lottie是一个将After Effects动画提供给任意一个iOS,macOS,Android还有React Native原生APP的文件库。这些动画通过一个叫Bodymovin的开源After Effects插件,以JSON文件的形式进行输出。Lottie通过...
Mega-Fiers一个完整的网格变形,动画和变形系统,包括超过50种修改器,如弯曲,扭曲,FFD,Displace,锥度。它们可以以任何组合进行堆叠,并且任何数量的修饰剂可以应用于网格以实现复杂的结果,需要Unity 3.5.0或更...