React Native动画总结

  最近在使用react native进行App混合开发,相对于H5的开发,RN所提供的样式表较少,RN中不能使用类似于css3中的动画,因此,RN提供了Animated的API

  1.写一个最简单的动画

  

import React, { Component } from ‘react‘
import { Animated, Text, View } from ‘react-native‘

Class DropList extends React.Component {    constructor(props) {
    suoer(props)
this.state = {
            showMenu: false,
            transVal: new Animated.value(0)
        }
this.switchMenu = this.switchMenu.bind(this)
    }
// 菜单展开动画
    stratAni() {
        Animated.timing(
            this.state.fadeAnim,
            {
                toValue: 50,
                duration: 500,
                useNativeDriver: true //  <-- 加上这一行 是否启用原生动画
                // 启用后,动画一开始就完全脱离了 JS 线程,因此此时即便 JS 线程被卡住,也不会影响到动画了
                // 动画值在不同的驱动方式之间是不能兼容的。因此如果你在某个动画中启用了原生驱动,那么所有和此动画依赖相同动画值的其他动画也必须启用原生驱动
                // 启用原生动画后,仅支持opacity和transform属性变化
            }
        ).start()
    }
    // 菜单收起动画
    closeAni() {
         Animated.timing(
             this.state.menuTransform,
             {
                 toValue: 0,
                 duration: 0,
                 useNativeDriver: true
             }
          ).start()
    }
    // 菜单展开与折叠
    switchMenu() {
         if (this.state.showMenu) { // 收起
             this.setState({
                 showMenu: false
             })
             this.closeAni()
         } else { // 折叠
             this.setState({
                 showMenu: true
             })
             this.stratAni()
         }
    }    render() {        let {            showMenu,            transVal        } = this.state        return(            <View>           <Text onPRess={this.switchMenu}>Switch Menu</Text>                <Animated.View style={{ height: 50, backgroundColor: ‘red‘, position: ‘absolute‘, top: -50, transform: [ translateY: transVal ] }}>

          </Animated.View>                </View>        )    }
}         

2.插值动画(loading旋转动画)

this.state = {

  aniVal: new Animated.Value(0)

}

this.aniVal = 0

componentDidMount() {

  this.state.aniVal.setValue(0);

  Animated.timing(this.state.aniVal, {

    toValue: 1,

    duration: 200

  }).start();

}

<Animated.View

style={{

    transform: [

      {

        translateY: this.state.aniVal.interpolate({

          inputRange: [0, 1],

          outputRange: [100, 0]

        })

      }

    ],

    opacity:this.state.aniVal.interpolate({

      inputRange: [0, 1],

      outputRange: [0.2, 1]

    })

  }}>

  <Text>加载中...</Text>

</Animated.View>

原文地址:https://www.cnblogs.com/Yicoding/p/10118099.html

时间: 2024-10-11 07:07:30

React Native动画总结的相关文章

React Native动画-Animated

动画类型: spring:基础的单次弹跳物理模型 timing:从时间范围映射到渐变的值 decay:以一个初始速度开始并且逐渐减慢停止 创建动画的参数: value:AnimatedValue | AnimatedValueXY(X轴或Y轴 | X轴和Y轴) config:SpringAnimationConfig | TimingAnimationConfig | DecayAnimationConfig(动画的参数配置) 值类型: AnimatedValue:单个值 AnimatedVal

React Native Android 应用层实战沦陷记

[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 一眨眼又一年快要过去了,原计划今年的最后一个小目标(React Native)看样子要留尾巴到明年了,React Native 想说爱你不容易.怎么评价你呢?应用层 JSX 编写还是很友好的,尼玛框架接入的各种锅却让人痛哭不已,万事开头难,对于 React Native 的接入可以说大量工作可能都需要投入到框架接入中(各种灰度实验的兼容性.各种锅),一旦接入稳定以

[]H5、React Native、Native应用对比分析

目录(?)[-] 一React Native的出现 二3款应用效果 三工程方案 四对比分析 开发方式 性能 体验 更新 维护 开发方式 性能 体验 更新 维护 五综合 开发方式 性能 体验 更新 维护 @王利华,vczero “存 在即合理”.凡是存在的,都是合乎规律的.任何新事物的产生总要的它的道理:任何新事物的发展总是有着取代旧事物的能力.React Native来的正是时候,一则是因为H5发展到一定程度的受限:二则是移动市场的迅速崛起强调团队快速响应和迭代:三则是用户的体验被放大,用户要求

React Native超棒的LayoutAnimation(布局动画)

该文翻译自:https://medium.com/@Jpoliachik/react-native-s-layoutanimation-is-awesome-4a4d317afd3e#.6syi2v6yh 刚创建的React Native技术交流群(282693535),欢迎各位大牛,React Native技术爱好者加入交流!同时博客右侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送! 如果你是用React Native进行开发,然而还没有尝试过使用LayoutAnimation的话,

前端知识 | React Native Animated动画浅谈

在移动开发中,动画能有效的提高用户体验.在 React Native 中,也有相应的 API 供我们做动画.这里着重说一下 Animated 动画库,它可以让我们非常简便的去实现各式各样的动画和交互方式,而且具备很高的性能.Animated 目前只封装了四个可以动画化的组件:View.Text.Image.ScrollView,不过你也可以用 Animated.createAnimatedComponent() 来封装你自己的组件. 话不多说,我们来举个栗子: 步骤拆解 1.创建 Animate

谈谈APP架构选型:React Native还是HBuilder

原文链接 导读:最近公司的一款新产品APP要进行研发,老大的意思想用H5来做混合APP以达到高效敏捷开发的目的.我自然就开始进行各种技术选型的调研,这里重点想说的是我最后挑选出的2款hybrid app开发技术方案:RN(react native),HBuilder.React Native是大名鼎鼎的Facebook的开源技术框架,而HBuilder是国内的H5工具开发公 司DCLOUD的产品.我自己先总结下吧:这两个技术框架在开发效率上基本上可以媲美WEB开发的速度,RN强调的是“Learn

菜鸟窝React Native 视频系列教程

菜鸟窝React Native 视频系列教程 交流QQ群:576089067 Hi,我是RichardCao,现任新美大酒店旅游事业群的Android Developer.15年加入饿了么即时配送BU,后负责蜂鸟众包Android端,期间引入react-native技术,作为国内react-native 与 Android混合开发的早期商业项目,具有一定经验,同时也是react-native开源项目reading(https://github.com/attentiveness/reading)

【REACT NATIVE 系列教程之五】NAVIGATOR(页面导航)的基本使用与传参

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2248.html 今天介绍一种应用开发中常用的负责页面切换及导航功能的组件:Navigator 一:Navigator 对于页面导航其实主要功能就是:每个页面都知道本身应该切换到哪个页面,并且切到的页面会记录从哪里来,如果要返回的话,知道返回到哪个页面.这一切都不需要再用逻辑管理!而且每个页面之间也可以进行参数传递,

React Native专题-江清清

本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶相关讲解. 刚创建的React Native交流8群:533435865  欢迎各位大牛,React Native技术爱好者加入交流!同时博客右侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送! 关于React Native各种疑难杂症,问题深坑总结方案请点击查看: Mac和Windows安装搭建React Native环境教程如下: Mac OS X版本:Mac OS X安装R