正如@Gil正确指出的那样,您必须处理自定义Interpolator实现.好消息是你实际上并不需要自己实现所有东西.您可以组合2种不同的插值公式:加速/减速主动画,减速插补器取消.

基本上这就是你要找的东西:

正常加速/减速动画:

在中间的某处取消它时的动画:

这是我的快速插补器实现:

static class MyInterpolator extends AccelerateDecelerateInterpolator {

private float phaseShift = 0f;

private boolean isCancelled = false;

private float lastInput = 0f;

/**

* Maps a value representing the elapsed fraction of an animation to a value that represents

* the interpolated fraction. This interpolated value is then multiplied by the change in

* value of an animation to derive the animated value at the current elapsed animation time.

*

* @param input A value between 0 and 1.0 indicating our current point

* in the animation where 0 represents the start and 1.0 represents

* the end

* @return The interpolation value. This value can be more than 1.0 for

* interpolators which overshoot their targets, or less than 0 for

* interpolators that undershoot their targets.

*/

@Override

public float getInterpolation(float input) {

lastInput = input;

if(!isCancelled)

{

return super.getInterpolation(input);

}

else

{

return getCancellationInterpolation(input) - phaseShift;

}

}

public void cancel()

{

isCancelled = true;

this.phaseShift = getCancellationInterpolation(lastInput) - super.getInterpolation(lastInput);

}

private float getCancellationInterpolation(float input)

{

return (1.0f - (1.0f - input) * (1.0f - input));

}

}

如您所见,我使用默认插值进行普通动画,并在取消动画时切换减速.显然这段代码并不完美(它不会重置phaseShift值和isCancelled标志,如果你使用重复模式会导致错误计算),但这是你希望自己能够找到的东西:)

我创建了示例项目on GitHub,因此您可以看到它的外观

跟进

我用公式玩了一下,并采用了DecelerateInterpolator实现的第二部分.我介绍了因子参数,它可以帮助您控制取消发生的速度(某种牵引力).设定因子为1.5给我这个:

正如你所看到的,当我在~0.5点点击取消时,动画会更快地被取消(因此它不会像前面的例子那样一直到0.7的距离).它给人一种更好的真实感觉.更高的因素 – 动画停止的速度更快.

这是一个更新的插补器:

static class MyInterpolator extends AccelerateDecelerateInterpolator {

......

private float factor = 1.5f;

.......

private float getCancellationInterpolation(float input)

{

if(factor == 1)

{

return (1.0f - (1.0f - input) * (1.0f - input));

}

else

{

return (float)(1.0f - Math.pow((1.0f - input), 2 * factor));

}

}

}

取消android所有动画,android – 动画取消动画相关推荐

  1. android jason动画,Android 动画之Lottie动画使用

    Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...

  2. android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧

    转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...

  3. android 上下扫描动画,Android扫描雷达动画

    很简单的一个组合动画,用好基本动画啥子效果都不怕 老规矩先上图 效果图.gif ok 来 既然往下翻那就看看如何实现的吧 首先效果分为两部分 第一部分中间指针(其实这里就是一张图片) 第二部分就是波纹 ...

  4. Android动画之Property属性动画

    2019独角兽企业重金招聘Python工程师标准>>> 为什么引入属性动画? 大家都知道Android常见的动画有tween动画,frame动画.但是随着人们对动画的要求不断提高, ...

  5. android 尺寸变化动画,Android ScaleAnimation类:尺寸变化动画类

    ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类. ScaleAnimation类中的很多方法都与Animation ...

  6. android常用窗口动画,android 自定义dialog,窗口动画,

    自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画 Java代码: package com.sunxu.org.IndividualityDialog; import ...

  7. Android动画完全解析--属性动画

    一.概述 上篇博客介绍了View动画的简单使用和基本工作原理原理,这篇来学习下属性动画.和View动画不同的是,属性动画不再简单的使用平移.旋转.缩放.透明度这4种变换,代替它们的是ValueAnim ...

  8. Android移动应用开发之制作动画基础

    文章目录 帧动画 主要文件目录 MainActivity frame.xml activity_main.xml 运行 补间动画 主要文件目录 MainActivity alpha.xml rorat ...

  9. Android动画之AnimatorSet联合动画用法

    动画入门和进阶文章列表: Animation动画概述和执行原理 Android动画之补间动画TweenAnimation Android动画之逐帧动画FrameAnimation Android动画之 ...

  10. android 开红包动画,Android实现红包雨动画效果

    本文介绍了Android实现红包雨动画效果,分享给大家,希望对大家有帮助 红包雨 关于实现上面红包雨效果步骤如下: 1.创建一个红包实体类 public class RedPacket { publi ...

最新文章

  1. 通过Spring配置文件中bean中的property赋值
  2. Spring Cloud Stream 学习小清单
  3. Vim强制写入w!的分析
  4. SAP BOPF和ESF2这两个框架有什么区别
  5. 高阶函数-语法糖-lambda(三分钟读懂)
  6. ios入门之消息推送详解
  7. 用Portainer或UI for Docker可视化管理树莓派容器
  8. java人脸识别Demo(数据库mongo)
  9. 自学者福利!腾讯Java开发面试记录,砥砺前行!
  10. nothing else left on those streets
  11. Web前端知识点总结(持续更新中...)
  12. 如何在计算机自动开机时选择用户,电脑如何设置自动开机
  13. 30天完成700万营业额,这家珠宝店的营销模式,值得借鉴!
  14. 外包干了三年,废了。
  15. Unity中ComputeShader入门
  16. 看懂oracle trc文件,oracle 的 debug 工具 和 分析 trc 文件工具 ass.awk
  17. 预防域名dns劫持和解决
  18. django 连接oracle的坑和解决方法
  19. 点云深度学习系列2——PointNet/PointCNN代码比较(变换矩阵部分)
  20. UES:地域有界,资产无国界

热门文章

  1. 通用软件滤波算法-前序
  2. 神经网络硕士就业前景,计算神经科学就业前景
  3. 进销存excel_超实用Excel完整进销存管理系统,多功能实现,轻松套用赶GET
  4. viper4android哪个版本好,ViPER4Android FX蝰蛇音效下载-ViPER4Android FX蝰蛇音效 v2.7.0.0_手机乐园...
  5. xshell如何设置选中复制_Xshell
  6. Android APP启动图标尺寸
  7. atmega328p引脚图_【ATMEGA328P-PU PDF数据手册】_中文资料_引脚图及功能_(爱特美尔 ATMEL)-采芯网...
  8. 电子元器件选型——MOSFET
  9. 关于intel六代/七代CPU安装win7系统解决USB3.0驱动的镜像文件
  10. python web全栈工程师招聘_【笔记】Web全栈工程师的自我修养(上)