【Animations】使用一个动画动画移动视图(6)

原文

概要


基于飞掷的动画使用与物体速度成比例的摩擦力。使用它来动画化一个对象的属性,并且想要逐渐结束动画。它有一个最初的势头,大部分是从手势速度收到的,并逐渐减慢。当动画的速度足够低以至于在设备屏幕上没有可见的变化时,动画即告结束
【Animations】使用一个动画动画移动视图(6)
要了解相关主题,请阅读以下指南

添加支持库


要使用基于物理学的支持库,您必须按如下方式将支持库添加到您的项目中:

  1. 打开build.gradle您的应用程序模块的文件。
  2. 将支持库添加到该dependencies部分。
  dependencies {
      implementation 'com.android.support:support-dynamic-animation:27.1.1'
  }

创建一个动画


在FlingAnimation类,您可以为对象创建一扔动画。要构建一个动画动画,请创建一个FlingAnimation类的实例并提供一个对象以及您想要进行动画处理的对象的属性。

FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);

设定速度


起始速度定义了动画属性在动画开始时的变化速度。默认启动速度设置为每秒零像素。因此,您必须定义开始速度以确保动画不会立即结束。

您可以使用固定值作为起始速度,也可以将其基于触摸手势的速度。如果您选择提供固定值,您应该以每秒dp的值定义值,然后将其转换为每秒像素数。以每秒dp定义值允许速度独立于设备的密度和形状因子。有关将起始速度转换为每秒像素数的更多信息,请参阅 Spring Animation中的“ 每秒转换为每秒像素数”部分 。

要设置速度,请调用该setStartVelocity()方法并以每秒像素为单位传递速度。该方法返回设置速度的投掷对象。

注意:使用 GestureDetector.OnGestureListener和 VelocityTracker类分别检索和计算触摸手势的速度。

设置动画值范围

如果要将属性值限制在一定范围内,可以设置最小动画值和最大动画值。当为具有固有范围的属性(如alpha(从0到1))设置动画时,此范围控件特别有用。

注意:当动画动画的值达到最小值或最大值时,动画结束。

要设置最小值和最大值,分别调用setMinValue() 和setMaxValue()方法。两种方法都会返回您设置了该值的动画对象。

设置摩擦

该setFriction()方法可以让您更改动画的摩擦。它定义了动画中速度下降的速度。
注意:如果您未在动画开始时设置摩擦,则动画使用默认摩擦值1。

该方法返回其动画使用您提供的摩擦值的对象。
示例代码
下面的例子说明了一个水平投掷。从速度追踪器捕获的速度是velocityX,滚动边界被设置为0和maxScroll。摩擦力设置为1.1。

FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);
fling.setStartVelocity(-velocityX)
        .setMinValue(0)
        .setMaxValue(maxScroll)
        .setFriction(1.1f)
        .start();

设置最小可见变化

当您为未以像素定义的自定义属性设置动画时,应设置用户可见的动画值的最小更改。它决定了结束动画的合理阈值。

动画时不需要调用此方法, DynamicAnimation.ViewProperty因为最小可见变化是从属性派生的。例如:

  • 默认最小可见的变化值是用于视图性能如1个像素TRANSLATION_X,TRANSLATION_Y, TRANSLATION_Z,SCROLL_X,和 SCROLL_Y。
  • 对于使用旋转动画,如ROTATION, ROTATION_X,和ROTATION_Y,最小可见变化MIN_VISIBLE_CHANGE_ALPHA,或1/10像素。
  • 对于使用不透明度的动画,最小可见变化为 MIN_VISIBLE_CHANGE_ALPHA1/256。

要设置动画的最小可见变化,请调用该 setMinimumVisibleChange()方法,并传递最小可见常量或您需要为自定义属性计算的值。有关计算此值的更多信息,请参阅 计算最小可见更改值 部分。

anim.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE);

注意:只有在为像素定义的自定义属性制作动画时,才需要传递值。

计算最小可见变化值

要计算自定义属性的最小可见更改值,请使用以下公式:

最小可见变化=自定义属性值的范围/以像素为单位的反转范围

例如,要进行动画制作的属性从0进步到100.这对应于200像素的更改。根据公式,最小可见变化值是100/200等于0.5像素。

Lastest Update:2018.05.23

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Animations】使用一个动画动画移动视图(6)

转载于:https://blog.51cto.com/4789781/2120981

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值