-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
入坑RN #267
Comments
Animation背景更新state方式的动画不可行的,性能太差。如果像ReactJs里那样可以直接操作DOM最好了。 RN提供两种动画系统:
|
当前Input | 上次Input | Diff(当前Input - 上次Input) | 上次Output | 当前Output | |
---|---|---|---|---|---|
1 | 0 | - | - | - | 0 |
2 | 2 | 0 | 2 | 0 | 2 |
3 | 8 | 2 | 6 | 2 | 8 |
4 | 10 | 8 | 2 | 8 | 10 |
5 | 11 | 10 | 1 | 10 | 10 |
6 | 20 | 11 | 9 | 10 | 10 |
7 | 15 | 20 | -5 | 10 | 5 |
第5,6步因为大于最大值10,所以被限制为10。
一般用于实现可折叠导航栏。
Animated.Value
是什么
Standard value for driving animations
驱动动画的标准值(即动画过程中变化的值)。一个Animated.Value
可以以同步方式驱动多个属性,但一次只能由一种机制驱动(目前3种)。
绑定/映射:
-
mapped to this animated value
-
Bind opacity to animated value
一个Animated Value可以绑定任意数量的其他属性/其他Animated Value。
Animated.Value
实例对象可以绑定到多个style属性或者其他属性。
- 绑定指的是什么操作?
- 什么节点建立的映射?
- 其他属性是什么?
Animated.Value
实例对象作为state还是成员变量比较合适?
看文档Demo里都是作为成员变量使用,并且只实例化一次。文档里有说明:
- 对于函数组件:
Don't modify the animated value directly. You can use the useRef Hook to return a mutable ref object. This ref object's current property is initialized as the given argument and persists throughout the component lifecycle.
- 对于类组件:
Don't modify the animated value directly. It is usually stored as a state variable in class components.
类组件为啥要用state, 可以用作成员变量吗?【可以,本质是要求避免re-render时重新创建】
组合Animated.Value
利用一个或者多个Animated.Value
产生新的Animated.Value
。
- 算术运算
- 插值(Interpolation)
插值(Interpolation)
所谓插值就是将一个区间值(inputRange
)映射到一个新的区间值(outputRange
)。
这里需要注意两点:
- 如何映射?
- 区间外的输入值如何处理?
Issues:
- 区间片段数量必须一致?【是的,即
inputRange
和outRange
数组长度必须一致】 - 哪些字符串可以作为区间节点?【颜色,角度】
Animation type(驱动机制)
Animated.timing
Animated.spring
Animated.decay
编排动画
串行,并行
跟踪动态值(Tracking dynamic values)
动画的中间值处理可以通过timing函数生成外,还可通过其他Animated.Value
值生成。
如何建立映射
toValue
属性指定
跟踪手势(Tracking gestures)
类似跟踪动态值,跟踪手势是指直接将滑动、滚动事件产生的变化映射Animated.Value
值。
如何建立映射
- 同构方式声明
useNativeDriver
- 为什么使用
useNativeDriver
? - 什么情况下不能用
useNativeDriver
?
- 非布局属性【Why】
- 非冒泡事件【Why】
Using Native Driver for Animated
Issues/Concern
获取当前Value
可序列化与性能 TODO
Animated is designed to be fully serializable
可序列化
完全通过Plain Object声明动画。这样可将动画信息传给Native并让Native执行。
Issues:
- 每个动画只能有一个执行Driver
副作用
有时候可能会根据Animated.Value
值执行一些操作。可以利用addListener
绑定事件。
参考:
样式 TODO
Density-independent pixels
Density-independent pixels ? 科普概念
what dimension units are used in React Native? Size Matters: How I used React Native to make my App look great on every device 响应式布局?TODOhttps://www.npmjs.com/package/react-native-responsive-dimensions#why-responsive-dimensions PK WEB CSS不支持
|
利用
|
用JS可以开发媲美native用户体验的APP。
从此你是个native开发者了。
Issues
TouchableHighlight
和TouchableOpacity
如何选择几个概念
布局:
flex
布局,只支持flexbox布局。相当于容器的display
属性(其实没有display
属性)有且只有一个枚举指flex
。position
**Start
,**End
**Vertical
,**Horizontal
宽高:
“声明”样式:
RN里应该是定义样式,只能通过
style
属性定义样式。样式定义是个普通的JS对象。The text was updated successfully, but these errors were encountered: