博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Animations】使用一个动画动画移动视图(6)
阅读量:6850 次
发布时间:2019-06-26

本文共 2175 字,大约阅读时间需要 7 分钟。

概要


基于飞掷的动画使用与物体速度成比例的摩擦力。使用它来动画化一个对象的属性,并且想要逐渐结束动画。它有一个最初的势头,大部分是从手势速度收到的,并逐渐减慢。当动画的速度足够低以至于在设备屏幕上没有可见的变化时,动画即告结束

【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

微信打赏:

公众号推荐:

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

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

你可能感兴趣的文章
搜狗的好玩用法
查看>>
docker run 参数含义
查看>>
Java操作Excel之POI简单例子
查看>>
Docker学习笔记_使用Dockerfile创建flask的一个镜像
查看>>
PHP用户注册邮箱验证激活帐号
查看>>
CSS优先级规则与权重计算的探讨
查看>>
如何删除谷歌(或者搜狗)输入法中存储的错误词组
查看>>
Struts2 Action多方法调用
查看>>
12.21
查看>>
算法导论读书笔记-第十二章-二分检索树
查看>>
Django - 基于orm实现用户增删改查
查看>>
Application Security Per-Engagement
查看>>
MVC 自定义HtmlHelper
查看>>
毕向东_Java基础视频教程第19天_IO流(06~10)
查看>>
彻底修改eclipse中项目的名称
查看>>
python 类属性初始化
查看>>
hdu2886 Lou 1 Zhuang 数学/快速幂
查看>>
读书笔记之:鸟哥的Linux私房菜——基础学习篇(第三版) (18-26章)
查看>>
angular6 + ng-zorro鹿途后台管理系统(三)项目升级改造 01 升级ng-zorro-antd到1.8+...
查看>>
2.新建一个Angular项目
查看>>