`

Android Interpolators

 
阅读更多

Android Interpolators

定义动画一般是通过定义关键帧(首帧或是尾帧)然后由系统自动生成中间帧,生成中间帧的过程可以称为“插值 interpolate”。Android Animation 支持多种插值算法:Interpolators (可以翻译成插值器)。

所有Interpolators 都实现Interpolator 接口(实际上为TimeInterpolator接口),这个接口定义了一个方法:

public abstract float getInterpolation(float input)

  • input 为正规化后动画的时间,值域总之0-1之间。 0代表开始时间,1代表结束时间。
  • 返回值也是正规化后的值,可以代表平移的时间,旋转的角度,Alpha值变化,标准值域为0-1之间,但允许值小于0或大于1,表示插值到标准区域两边。

总的来说,Interpolator定义了动画变化的速率,提供提供不同的函数定义变化值相对于时间的变化规则,可以定义各种各样的非线性变换函数,比如加速,减速等。

Android 系统自带了多种Interpolator 可以通过多种动画变化效果:

  • AccelerateDecelerateInterpolator   先加速再减速
  • AccelerateInterpolator  加速
  • AnticipateInterpolator  先回退一小步,然后再迅速前进
  • AnticipateOvershootInterpolator  先回退一小步,然后再迅速前进,在超过右边界一小步
  • BounceInterpolator  实现弹球效果
  • CycleInterpolator   周期运动
  • DecelerateInterpolator 减速
  • LinearInterpolator 匀速
  • OvershootInterpolator  快速前进到右边界上,再往外突出一小步

这些Interpolator 可以应用于任意的Animation中,如TranslateAnimation, RotateAnimation, ScaleAnimation ,AlphaAnimation 等,其插值的对象随Animation 种类不同而不同。比如对于TranslateAnimation来说,插值的对象是位移,对应的动画是平移的速率。对于RotateAnimation来说插值的对象为旋转角度,对应的动画为旋转的速率。

本例介绍使用多种Interpolator 给一个TextView 添加动画。

<TextView
android:id=”@+id/target”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:textSize=”26sp”
android:text=”@string/animation_3_text”/>

本例对应的示例类为Animation3,使用了如下几种Interpolator:

1 private static final String[] INTERPOLATORS = {
2  "Accelerate""Decelerate""Accelerate/Decelerate",
3  "Anticipate""Overshoot""Anticipate/Overshoot",
4  "Bounce"
5 };

采用的Animation 类型为TranslateAnimation 平移动画移动TextView:

1 final View target = findViewById(R.id.target);
2 final View targetParent = (View) target.getParent();
3  
4 Animation a = new TranslateAnimation(0.0f,
5  targetParent.getWidth() - target.getWidth()
6  - targetParent.getPaddingLeft() -
7  targetParent.getPaddingRight(), 0.0f, 0.0f);
8 a.setDuration(1000);
9 a.setStartOffset(300);
10 a.setRepeatMode(Animation.RESTART);
11 a.setRepeatCount(Animation.INFINITE);
12  
13 ...
14  
15 a.setInterpolator(AnimationUtils.loadInterpolator(this,
16  android.R.anim.accelerate_decelerate_interpolator));
17 ...
18  
19 target.startAnimation(a);

你也可以自定义Interpolator,只要实现Interpolator接口即可。

From 引路蜂网站(http://www.imobilebbs.com/wordpress/archives/1735)

分享到:
评论

相关推荐

    Android-安卓动画Interpolators的可视化

    Android提供了丰富的动画系统,其中包括了Interpolators,也就是插值器。插值器是用来控制动画时间进程的工具,它决定了动画从开始到结束的速度变化。本篇文章将深入探讨Android动画中的Interpolators,并通过可视化...

    EaseAnimationInterpolator, 用于Android的动画插值器 可以使用更多的Interpolators.zip

    EaseAnimationInterpolator, 用于Android的动画插值器 可以使用更多的Interpolators EaseAnimationInterpolator用于Android的动画插值器。 可以使用更多的Interpolators 。由 AnimationEasingFunctions 和简化功能。...

    Android代码-EasingInterpolator

    Twenty-eight different easing animation interpolators for Android. It does not use the standard 4 param ease signature. Instead it uses a single param which indicates the current linear ratio (0 to 1)...

    Android代码-三十种不同的缓动动画(给代码家丢肥皂可不能缓动)

    Thirty different easing animation interpolators for Android. Demo Installation In order to use the library, there are 2 options: 1. Add jar file as library(Recommend) Download the ease-interpolator-...

    android-custom-animation0.2.rar

    6. **动画插值器(Interpolators)**:插值器决定了动画的速度变化,例如线性插值器(LinearInterpolator)让动画匀速进行,加速减速插值器(AccelerateDecelerateInterpolator)让动画开始和结束时慢,中间快。...

    Android 动画Interpolator和自定义涟漪效果和百分比布局

    默认的 interpolators如LinearInterpolator(线性插值器)提供均匀的速度,而AccelerateDecelerateInterpolator则使得动画在开始和结束时加速减速。开发者可以通过实现`android.view.animation.Interpolator`接口...

    Android Animation

    在Android平台上,动画效果是构建用户界面和提升用户...同时,Android还提供了各种插补器(interpolators)来改变动画的时间速度,如加速减速插补器(accelerate_decelerate_interpolator),使得动画更加自然流畅。

    Android之Animation<2>

    - **动画插值器(Interpolators)**: 插值器决定了动画时间的进度如何映射到实际的变化。Android提供了多种内置插值器,如线性、加速、减速等,也可以自定义插值器。 - **属性动画的ValueAnimator与AnimatorSet**: `...

    android按钮菜单(动画展开关闭)

    同时,可以设置不同的 interpolators(插值器)以改变动画速度曲线,如AccelerateInterpolator(加速)和DecelerateInterpolator(减速),以获得更自然的动画效果。 此外,如果你想要更复杂的动画效果,比如旋转或...

    android动画

    **补间动画(Interpolators)** 无论是视图动画还是属性动画,都可以使用插值器(Interpolator)来改变动画的速度曲线,比如匀速、加速、减速等效果。Android提供了多种预定义的插值器,如LinearInterpolator、...

    android动画大全 自己总结的

    5. Interpolators(插值器):决定动画变化的速度曲线,例如线性插值器(LinearInterpolator)使得动画均匀速度变化,而加速减速插值器(AccelerateDecelerateInterpolator)则让动画开始和结束时慢,中间快。...

    android官网demo之animations。zip

    7. **插值器(Interpolators)**: - 控制动画的速度曲线,如线性、加速、减速等效果。 8. **属性集动画(ValueAnimators with PropertySets)**: - 自Android 4.0起,可以使用PropertySet动画改变对象的多个...

    Android 控件抖动效果源码.zip

    6. **线性插值器(Interpolators)**:为了使抖动看起来更自然,可能使用了不同的插值器来控制动画的速度变化。例如,`LinearInterpolator`将保持恒定的速度,而`AccelerateDecelerateInterpolator`则会在开始和结束...

    安卓Android源码——动画顺序播放源码.zip

    此外,可以通过 interpolators(插值器)调整动画的速度曲线,使其具有加速、减速等动态效果。 总之,这个源码项目提供了一个很好的学习平台,让开发者了解如何在Android中创建并顺序播放多个动画。通过研究这个...

    Android 触摸屏幕产生小气泡的效果应用源码.zip

    这可以通过改变气泡的透明度、大小和位置来实现,可以使用ValueAnimator或ObjectAnimator配合 interpolators 来控制动画的缓动效果。 5. **性能优化**:为了保证流畅的用户体验,需要考虑性能优化。例如,避免在...

    Android应用源码仿Iphone抖动效果Shake Icon.zip

    3. **Interpolators**(插值器): 插值器决定了动画的变化速率,例如匀速、加速或减速等。在抖动效果中,可能需要一个自定义插值器来控制图标移动的加速度和减速度,使抖动更加自然。 4. **监听器**: 动画执行...

    ViewHelper依赖包nineoldandroids-2.4.0

    6. **时间插值器(Time Interpolators)**:通过使用不同的时间插值器,可以改变动画的速度曲线,例如匀速、加速、减速等效果。 7. **监听器(Listeners)**:提供动画开始、结束、重复等事件的监听接口,方便...

    Android代码-RotatingText

    Rotating text is an Android library that can be used to make text switching painless and beautiful, with the use of interpolators, typefaces and more customisations. Usage Just add the following ...

    animation的结合蝴蝶飞的动画,使用动画里面的几种类型.zip

    此外,开发者还可能使用动画监听器(AnimationListener)来监听动画的开始、结束和重复事件,或者使用 interpolators(插值器)来改变动画的速度曲线,使其看起来更自然。如果是在布局文件中定义动画,可以使用标签...

Global site tag (gtag.js) - Google Analytics