多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 实现首页四个顶部按钮的布局 通过定位 和 flex 布局 技术可以实现页面的布局。 ![](https://img.kancloud.cn/6b/a2/6ba223accbbb1c404aa08c80bb6ac66b_2196x1622.png) # 封装文字按钮 项目中有些按钮是一个文字,那么我们需要封装一个文字按钮组件。 文字要想能点击,需要使用 `TouchableWithoutFeedback` 组件套起来: ![](https://img.kancloud.cn/d3/e5/d3e501c23b73320a934548ccb3a42019_1368x568.png) 封装好之后,就可以这样使用了: ![](https://img.kancloud.cn/63/f5/63f579a1cf0c104d873e40e13829622c_2162x1446.png) # 按钮下面的白色条 ![](https://img.kancloud.cn/67/f3/67f3f2f369dca688ecf4c0ab8cb21472_702x420.png) ## 先制作白线 ![](https://img.kancloud.cn/d7/98/d798cadd9fe8b7d71540ec23902f6eea_2210x1690.png) ## 制作白线的移动动画 ![](https://img.kancloud.cn/41/a9/41a948351c50fb0e5f209cbca39fb57b_1234x1724.png) ## 使用转换实现动画 我们刚刚使用了 `left` 这个属性实现的动画,但是使用这个属性实现动画时,无法启用原生动画驱动功能 `useNativeDriver={false}`,性能不是特别好。 所以我们可以使用转换中的 translateX 来实现平移的动画,这个属性可以应用原生动画驱动,所以动画改写为: ![](https://img.kancloud.cn/86/9c/869c4aa2b31a89668043e1a00d09de97_1376x1414.png) 总结:实现动画时,尽量使用转换 (transform) 中的属性,因为这些属性可以启用 RN 的原生动画驱动以提高性能。 ## 在左右滑动时,白线也移动 现在只有点击两个按钮时白线才会移动,我们应该让左右滑动屏幕时白线也随着一起移动。 ViewPager 这个组件上有一个事件 `onPageSelected` ,这个事件会在每次滑动完成之后调用,所以我们就可以在每次滑动完之后获取当前的下标,然后让白线移动。 ![](https://img.kancloud.cn/a2/23/a223d8baec25c5545c87024264be57e4_1202x918.png) 加了代码之后在滑动时白线也会随之移动。