about summary refs log tree commit diff
path: root/src/view/com/util/TabBar.tsx
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-03-17 15:02:43 -0500
committerPaul Frazee <pfrazee@gmail.com>2023-03-17 15:02:43 -0500
commit93b334cce4f0d658a1573cda172695f44610b0e5 (patch)
tree43d879ef7a8098f284d2167c1f2ea8f14dd8e353 /src/view/com/util/TabBar.tsx
parent4a16b179e2e22b606568f59783190dbfa9933cf0 (diff)
downloadvoidsky-93b334cce4f0d658a1573cda172695f44610b0e5.tar.zst
Use the native driver on the tabbar indicator to improve perf
Diffstat (limited to 'src/view/com/util/TabBar.tsx')
-rw-r--r--src/view/com/util/TabBar.tsx24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/view/com/util/TabBar.tsx b/src/view/com/util/TabBar.tsx
index ac1814685..d3fe54830 100644
--- a/src/view/com/util/TabBar.tsx
+++ b/src/view/com/util/TabBar.tsx
@@ -44,14 +44,20 @@ export function TabBar({
     backgroundColor: indicatorColor || pal.colors.link,
     bottom: indicatorPosition === 'bottom' ? -1 : undefined,
     top: indicatorPosition === 'top' ? -1 : undefined,
-    left: panX.interpolate({
-      inputRange: items.map((_item, i) => i),
-      outputRange: itemLayouts.map(l => l.x),
-    }),
-    width: panX.interpolate({
-      inputRange: items.map((_item, i) => i),
-      outputRange: itemLayouts.map(l => l.width),
-    }),
+    transform: [
+      {
+        translateX: panX.interpolate({
+          inputRange: items.map((_item, i) => i),
+          outputRange: itemLayouts.map(l => l.x + l.width / 2),
+        }),
+      },
+      {
+        scaleX: panX.interpolate({
+          inputRange: items.map((_item, i) => i),
+          outputRange: itemLayouts.map(l => l.width),
+        }),
+      },
+    ],
   }
 
   const onLayout = () => {
@@ -116,6 +122,8 @@ const styles = StyleSheet.create({
   },
   indicator: {
     position: 'absolute',
+    left: 0,
+    width: 1,
     height: 3,
     borderRadius: 4,
   },