In Android applications, Swipe, Scroll, and Fling are all swipes performed by users on the touch screen, but there are some slight differences in technical definition and user perception.
Swipe (slide)
- Definition: The user swipes his finger quickly on the screen and then releases it.
- Features:
- The movement is relatively short and the speed is faster.
- Emphasize the displacement between the starting point and the end point.
- Commonly used for switching pages, opening drawers, etc.
- Technical implementation:
- The onFling() method in the interface can detect Swipe gestures.
- By calculating the distance and speed between the starting point and the end point, it can be judged whether it is a Swipe gesture.
Scroll (scroll)
- Definition: The user continuously slides his finger on the screen, and the view content follows the fingers.
- Features:
- The action can last for a long time and the speed can change.
- Emphasizes continuous scrolling of content.
- Commonly used to browse long lists, web pages, etc.
- Technical implementation:
- ScrollView, ListView, RecyclerView and other controls provide built-in scrolling functions.
- The onScroll() method in the interface can detect Scroll gestures.
Fling
- Definition: The user swipes his finger on the screen quickly and then releases, and the view continues to slide for a distance.
- Features:
- The movement is longer, faster, and has inertia.
- Emphasize sliding speed and direction.
- Commonly used to achieve inertial rolling, parabolic effects, etc.
- Technical implementation:
- The onFling() method in the interface can detect Fling gestures.
- By calculating the speed between the start point and the end point, you can determine whether it is a Fling gesture.
- The system calculates the inertial scroll distance of the view based on the speed and direction.
The difference between the three
feature | Swipe | Scroll | Fling |
---|---|---|---|
action | Short and fast | Continuously sliding | Fast sliding with inertia |
emphasize | Start and end points | Content scrolling | Speed and direction |
User perception | Switch, slide | Browse | Parabola, inertial roll |
Technology implementation | onFling() | ScrollView and other controls, onScroll() | onFling(), calculate inertia |
Code Example (Fling)
GestureDetector gestureDetector = new GestureDetector(this, new () { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // Determine whether it is a Fling gesture if ((velocityX) > SWIPE_THRESHOLD_VELOCITY) { // Handle Fling gestures if (velocityX > 0) { // Swipe right } else { // Swipe left } return true; } return (e1, e2, velocityX, velocityY); } });
Summarize
Swipe, Scroll and Fling are common touch gestures in Android, and they have their own characteristics in user experience and technical implementation. Developers can choose the appropriate gesture type according to different needs and combine it withGestureDetector
and other tools to achieve various interactive effects.
When to use Swipe:
- Switch page
- Open the drawer
- Other sliding operations that require fast and precise control
When to use Scroll:
- View the long list
- View the web page
- Other scenarios that require continuous scrolling
When to use Fling:
- Realize inertial rolling
- Create a parabola effect
- The user needs to perceive the continuity of the sliding action
Notice:
-
SwipeThresholdVelocity
It is an experience value that needs to be adjusted according to actual needs. - Apart from
onFling
Methods, GestureDetector also provides other methods to detect different gestures, such asonScroll
、onLongPress
wait.
Through an in-depth understanding of Swipe, Scroll and Fling, a smoother and more natural user interaction experience can be developed.
Related reference
/develop/ui/compose/touch-input/pointer-input
This is the end of this article about the difference between Swipe, Scroll and Fling in Android. For more related content on Android, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!