Linearity
📄️ Definition
Consider the case of ListView scrolling by inertia. Even if it is 60FPS, it can still be uncomfortable for the users if the shifting amount changes abruptly instead of smoothly. For example, if in frame 1 it shifts 20px, but in frame 2 it shifts 5px and frame 3 for 35px, the user will feel a weird jump.
📄️ Result from video
By manually looking at each frame of the video, I feel it satisfy the linearlity definition, excluding those jank frames (since they have zero shift and the next frame has doubled shift).
📄️ Result from tracing
By using the visualize_scroll.py script, we see the following figure. Shortly speaking, the blue curve is the time-vs-offset, and the orange curve is the time-vs-delta-offset, i.e. time-vs-velocity.