移动跨平台ReactNative动画组件Animated【14】,开发web应用


  1. 首先,一般给要创建动画的组件设置一个初始的样式,这个通过 style 属性来解决。

例如下面的代码为某个 box 组件设置了初始化的 背景色

const styles = StyleSheet.create({

box: {

backgroundColor: ‘blue’,

width: 50,

height: 100

}

})

  1. 其次,在组件即将加载的生命周期函数 componentWillMount() 中初始化动画。

componentWillMount = () => {

this.animatedWidth = new Animated.Value(50)

this.animatedHeight = new Animated.Value(100)

}

初始化动画使用 Animated.Value()Animated.ValueXY() 来实现。

例如

new Animated.Value(50)

这是什么意思呢? 比如我们要实现动画:长从 50 变化到 100。 那么动画初始化的时候就需要把值 50 传递给 Animated.Value(50)

  1. 使用动画类型来定义动画滑动的过程。这个一般包装在某个函数里面

animatedBox = () => {

Animated.timing(this.animatedWidth, {

toValue: 200,

duration: 1000

}).start()

Animated.timing(this.animatedHeight, {

toValue: 500,

duration: 500

}).start()

}

Animated.timing() 用于定义随时间变化的函数。它的函数原型如下

static timing(value, config)

各个参数说明如下

| 参数 | 说明 |

| — | — |

| value | 要实现缓动的值。也就是我们第一步中初始化的动画 |

| config | 配置动画缓动的各种参数 |

config 可配置的参数如下

| 参数 | 说明 |

| — | — |

| toValue | 用于设置动画结束的值 |

| duration | 动画时长,单位为 毫秒,默认值是 500。 |

| easing | 时间缓动曲线函数。默认值为渐入渐出 Easing.inOut 别名 Easing.ease |

| delay | 延迟多少毫秒才开始动画,默认值是 0 |

| isInteraction | 此动画是否在 InteractionManager 上创建 “交互句柄”。默认为 true |

| useNativeDriver | 是否使用原生动画来实现,默认值是 false。 |

.start() 方法用于开始一个动画。

  1. 将初始化的动画和属性包装成一个样式。我们后面会用这个样式去覆盖动画组件的默认样式。

const animatedStyle = { width: this.animatedWidth, height: this.animatedHeight }

  1. 重点来了,接下来我们要使用 `` 组件定一个自定义动画组件。然后把这个自定义动画组件包裹在想要设置动画的组件里。

<Animated.View style = {[styles.box, animatedStyle]}/>

`` 是我们想要实现的动画的组件。onPress = {this.animatedBox} 设置表示当点击的时候才开始动画。

是系统内置的可添加动画的组件。它的实际意思就是说这个动画其实是一个针对 组件属性的动画。它的 style 属性有两个值。

style = {[styles.box, animatedStyle]}

这两个值是合并的意思,就是 animatedStyle 里设置的样式会覆盖 styles.box 设置的样式。

范例


下面的代码,我们使用 Animated 动画组件动态改变 `` 视图的

相关代码逻辑我们前面已经讲述了,我们就不再详细展开,直接上代码.

App.js

import React, { Component } from ‘react’

import { View, StyleSheet, Animated, TouchableOpacity } from ‘react-native’

class App extends Component {

componentWillMount = () => {

this.animatedWidth = new Animated.Value(50)

this.animatedHeight = new Animated.Value(100)

}

animatedBox = () => {

Animated.timing(this.animatedWidth, {

toValue: 200,

duration: 1000

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

html5

cript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

html5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值