Trying to mimic Wear OS scrolling scaling with drivers

This is the effect I’m trying to replicate, the part I’m struggling with is just the expressions with the drivers, since I’m pretty new to using them. I have a bone attached to the object so I can animate it. It’s also so I can have the driver be attached to it, so when it moves up or down, it scales and scrolls. I was able to wing it a bit and do the expression ‘max(0.1, 1 - (var * 0.5))’, but it only shrunk it when moving in one direction, and it also shrank too fast.

Here’s my blend file.

untitled.blend (1.3 MB)

This would work if you’d have one element in the list:

min(1, max(0.5, 1.5 - (abs(var) / 7)))

1 and 0.5 are max and min scale factors. So scale 1 at it’s biggest and 0.5 at it’s smallest.
At what point the scaling starts and ends is determined by the other values (1.5 and 7), but not really straightforward…
abs(var) “mirrors” it so it works in both directions.

However, I notice that you have 5 elements in the list. And it’s one object.
I don’t think this method is suitable then. All elements would scale at the same time and around the same pivot point. It wouldn’t look alright.

Maybe you can use a lattice instead?

That expression worked perfectly. I just had to separate the objects and make it so there was a bone for each of them, and then changed the drivers to reflect that. Thanks!