react-native-animated-rolling-numbers
是一个 React Native 组件,它通过可定制的样式和动画来对数字和紧凑符号(K、M、B、T)进行动画处理。它旨在在数值之间创建平滑、引人注目的过渡。
视频中显示的示例可在此处找到。
npm install react-native-animated-rolling-numbers
# or
yarn add react-native-animated-rolling-numbers
确保您的项目中安装了react-native-reanimated
。请遵循此处的官方安装指南:react-native-reanimated 安装。
基本示例
import React , { useState } from "react" ;
import { View , StyleSheet , Button } from "react-native" ;
import { AnimatedRollingNumber } from "react-native-animated-rolling-numbers" ;
import { Easing } from "react-native-reanimated" ;
const App = ( ) => {
const [ value , setValue ] = useState ( 1200 ) ;
return (
< View style = { styles . container } >
< AnimatedRollingNumber
value = { value }
showPlusSign
showMinusSign
useGrouping
enableCompactNotation
compactToFixed = { 2 }
textStyle = { styles . digits }
spinningAnimationConfig = { { duration : 500 , easing : Easing . bounce } }
/ >
< Button
onPress = { ( ) => setValue ( value + Math . floor ( Math . random ( ) * 1000 ) ) }
title = "Increase"
/ >
< Button
onPress = { ( ) => setValue ( value - Math . floor ( Math . random ( ) * 1000 ) ) }
title = "Decrease"
/ >
< / View >
) ;
} ;
const styles = StyleSheet . create ( {
container : {
flex : 1 ,
justifyContent : "center" ,
alignItems : "center" ,
} ,
digits : {
fontSize : 32 ,
fontWeight : "bold" ,
paddingHorizontal : 2 ,
color : "#4A90E2" ,
} ,
} ) ;
export default App ;
视频中显示的示例可在此处找到。
value: number
要显示和动画的数值。
showSign?: boolean
是否显示数字的符号(例如“+”或“-”)。默认为false
。
showMinusSign?: boolean
是否显示负数的减号。默认为true
。
showPlusSign?: boolean
是否显示正数的加号。默认为false
。
toFixed?: number
以正常表示法显示的小数位数。默认为undefined
。
useGrouping?: boolean
是否在数字格式中包含逗号/点(例如,1000987 -> 1,000,987)。默认为false
。
formattedText?: string
要显示的自定义格式文本而不是数值。
locale?: Intl.LocalesArgument
用于数字格式化的区域设置。默认为"en-US"
。
enableCompactNotation?: boolean
对大数字启用紧凑表示法(例如,1K、1M、1B、1T)。默认为false
。
compactToFixed?: number
以紧凑表示法显示的小数位数。默认为undefined
。
fixedOnlyForCompact?: boolean
如果为 true,则仅对紧凑表示法应用小数精度 (K/M/B/T)。默认为true
。
例子:
fixedOnlyForCompact
为true
且compactToFixed
为2
,则数字1500
将显示为1.50K
,但数字999
将显示为999
(没有小数位)。fixedOnlyForCompact
为false
且compactToFixed
为2
,则数字1500
将显示为1.50K
,数字999
将显示为999.00
。containerStyle?: StyleProp
包裹动画数字的容器的样式。
digitContainerStyle?: StyleProp
包装每个动画数字的容器的样式。
textProps?: React.ComponentProps
主要文本组件的道具。
numberTextProps?: React.ComponentProps
数字文本组件的道具。
commaTextProps?: React.ComponentProps
逗号文本组件的道具。
dotTextProps?: React.ComponentProps
小数点文本组件的道具。
compactNotationTextProps?: React.ComponentProps
紧凑符号文本组件(K、M、B、T)的道具。
signTextProps?: React.ComponentProps
符号文本组件的道具(如果使用)。
textStyle?: StyleProp
主要文本组件的样式。
numberStyle?: StyleProp
数字文本组件的样式。
commaStyle?: StyleProp
逗号文本组件的样式。
dotStyle?: StyleProp
小数点文本组件的样式。
compactNotationStyle?: StyleProp
紧凑符号文本组件的样式。
signStyle?: StyleProp
符号文本组件的样式。
spinningAnimationConfig?: object
数字动画的配置。支持:
duration: number
:动画的持续时间(以毫秒为单位)。reduceMotion: boolean
: 是否减少运动以实现可访问性。easing: EasingFunction
:动画的自定义缓动函数。animationCallback?: AnimationCallback
动画完成时调用的回调函数。
animateToNewValue?: (newValue: number, variant?: DigitVariant) => number
用于动画值变化的自定义函数。默认为弹跳动画。
如果您发现这个项目有用并且愿意支持其持续开发,请考虑给我买杯咖啡!您的支持有助于保持创造力的酝酿,并使我能够继续改进和维护这个项目。谢谢你! ☕?