A görgetés egy olyan tartalom-áttekercselési mechanizmus, amely lehetővé teszi a felhasználó számára a mobileszköz képernyőjén túlmutató információk megtekintését. Az Apple Developer Documentation, 2024 szerint az UIScrollView az alapvető elem a görgetés megvalósításához iOS-en. Androidon hasonló szerepet tölt be a RecyclerView, amely feldolgozza a gesztusokat és kezeli az adatok megjelenítését. Görgetés nélkül a modern mobil interfészek lehetetlenek lennének — a hírfolyamok, névjegyzékek és szöveges oldalak másodpercenként használják.
Főbb pontok
Görgetés egy interaktív mechanizmus a tartalom látható területének mozgatására a mobileszköz nézőablakán belül. A felhasználó az ujjával áthúz a képernyőn, és a tartalom a gesztus irányába mozog, felfedve a felület rejtett részeit. A görgetés alapvető interakciós minta: a Nielsen Norman Group (2023) kutatása szerint a felhasználók a mobilalkalmazásokban töltött idejük 78%-át tartalom görgetésével töltik.
A mobilfejlesztésben a görgetés speciális komponenseken keresztül valósul meg — ScrollView iOS-en és RecyclerView Androidon. Ezek a komponensek nemcsak az érintéseket dolgozzák fel, hanem kezelik az elemek újrafelhasználását, az animációt és a tehetetlenséget is. A fejlesztőnek csak el kell helyeznie a gyermek nézeteket a tárolóban, a görgetés teljes mechanikáját a platform veszi át.
A Google I/O 2024 szerint a modern görgetési implementációk gesztuskompozíciót használnak: a rendszer meghatározza a pöccintés irányát, sebességét és az ujj gyorsulását, majd egy fizikai modellt alkalmaz a fokozatos lassításhoz. A görgetés tehetetlenségét a súrlódási együttható alapján számítják ki, amely platformonként eltér — iOS Quadratic easing-et, Android Spline-based interpolációt használ.
Függőleges görgetés a leggyakoribb görgetési típus, amelyet hírfolyamokban, chat listákban és profilokban használnak. A teljes tartalom fentről lefelé van rendezve, és a felhasználó felfelé vagy lefelé húzva navigál. A függőleges görgetés intuitív, és alapértelmezés szerint minden mobilplatformon támogatott.
Vízszintes görgetés karusellekhez, képgalériákhoz és kategória lapokhoz használatos. iOS-en ehhez UICollectionView-t használnak vízszintes elrendezéssel, Androidon — HorizontalScrollView-t vagy RecyclerView-t LinearLayoutManager.HORIZONTAL-lal. A vízszintes görgetés óvatos használatot igényel, mivel ütközik a rendszer vissza- és alkalmazásváltó gesztusaival.
Végtelen görgetés egy olyan technika, ahol az adatok automatikusan betöltődnek, ahogy a felhasználó a lista végéhez közeledik. Amikor az utolsó elem megjelenik, az alkalmazás automatikusan kéri a következő adatrészt a szervertől. Az UX Collective (2025) szerint az Infinite Scroll 40%-kal növeli az elköteleződést a tartalomalkalmazásokban, de csökkenti a konverziót az e-kereskedelemben a lábléchez való navigálás nehézsége miatt.
Parallaxis görgetés mélységhatást kelt: a háttérréteg lassabban mozog, mint az előtér a görgetés során. Ezt a technikát gyakran használják landoló oldalakon és profilokban vizuális hatás eléréséhez. A megvalósítás több réteg egymásra helyezését igényli különböző sebességi együtthatókkal — iOS-en ez UIScrollViewDelegate-en és a háttér nézetek offset-jének módosításán keresztül történik.
iOS-en a görgetés az UIScrollView osztályon keresztül valósul meg, amelyet a UITableView, UICollectionView és UITextView örököl. Az UIScrollView elfogja az érintéseket, elemzi az érintési mintát és kiszámítja az elmozdulás deltáját. Ha a felhasználó hirtelen mozdulatot tesz, a rendszer elindít egy tehetetlenségi animációt — deceleration, amely a következő képlet alapján számítódik: velocity * decayFactor ^ t. A WWDC 2023 szerint az Apple paraméteres lassítást használ 0.998-as együtthatóval, ami természetes súrlódási érzetet ad.
Androidon a görgetést a ViewDragHelper és az OverScroller kezeli. A rendszer megkapja a MotionEvent.ACTION_MOVE eseményt, kiszámítja az elmozdulást és alkalmazza azt a scrollY vagy scrollX értékre. A tehetetlenséget az OverScroller osztály számolja ki, amely Spline-interpolációt használ egy fizikai modell alapján, állítható súrlódással. Az alapértelmezett súrlódási együttható 0.015 — minél magasabb az érték, annál gyorsabban megáll a görgetés.
A platformok közötti kulcsfontosságú különbség — a bounce effektus. Az iOS alapértelmezés szerint rugalmas deformációt ad hozzá a tartalom határain túli görgetéskor (bounce), ami jelzi a felhasználónak a vég elérését. Az Android a 12-es verzió előtt explicit módon kellett bekapcsolni az overscroll effektust, a Material Design 3-tól pedig natív támogatást kapott a stretch-overscroll-hoz. Mindkét platform különbözik a scroll chaining kezelésében is — a görgetés átadásában a beágyazott tárolótól a szülő tárolóhoz a határ elérésekor.
| Komponens | Platform | Görgetés típusa | Virtualizáció | Elrendezés |
|---|---|---|---|---|
| UIScrollView | iOS | Függőleges / vízszintes | Nem | Content size |
| UICollectionView | iOS | Függőleges / vízszintes | Igen | UICollectionViewLayout |
| RecyclerView | Android | Függőleges / vízszintes | Igen | LayoutManager |
| ScrollView (Android) | Android | Függőleges | Nem | LinearLayout |
| HorizontalScrollView | Android | Vízszintes | Nem | LinearLayout |
UIScrollView az alap tároló iOS-en, amely nem támogatja a cellák újrafelhasználását. 1000 nézet hozzáadásakor mindegyik létrejön a memóriában, ami kritikus a teljesítmény szempontjából. Az UICollectionView megoldja ezt a problémát a dequeuing mechanizmuson keresztül — a látható cellák újrafelhasználásra kerülnek, a rejtettek pedig eltávolításra a hierarchiából. Az Apple Engineering (2023) szerint az UICollectionView Compositional Layout-tal akár 50%-kal simább FPS-t biztosít nagy adathalmazokkal való munka során az UIScrollView-hoz képest.
RecyclerView a szabványos görgetési komponens Androidon, amely a ViewHolder mintát használja az elemek újrafelhasználásához. A RecyclerView rugalmas architektúrával rendelkezik: a LayoutManager határozza meg az elhelyezést (Linear, Grid, Staggered), az ItemAnimator kezeli az animációkat, az ItemDecoration pedig margókat és elválasztókat ad hozzá. Az Android Developer Summit 2024 szerint a RecyclerView DiffUtil-lal képes feldolgozni 10.000 elem listafrissítését 16 ms alatt — egyetlen animációs képkockában.
A görgetés simaságát FPS (képkocka/másodperc) értékben mérik — a célérték 60 FPS a normál kijelzőkhöz és 120 FPS a ProMotion-hoz. Minden képkockát 16 ms (60 FPS) vagy 8 ms (120 FPS) alatt kell feldolgozni. Ha a görgetés jank-ot (képkockák kihagyását) okoz, a felhasználó mikro-késleltetéseket érez, amelyek negatívan befolyásolják az alkalmazás minőségének érzékelését. A Google Android Performance (2024) szerint a felhasználók 75%-a törli az alkalmazást rendszeres görgetési lagok esetén.
A görgetési lagok fő okai — layout thrashing és túlzott allokációk. A layout thrashing akkor fordul elő, amikor a fejlesztő az elrendezési paramétereket (getWidth, getHeight) olvassa a tulajdonságok módosítása után, kényszerített újraszámítást okozva. Minden ilyen hívás visszaállítja az elrendezési gyorsítótárat, és arra kényszeríti a rendszert, hogy újra végrehajtsa a Measure és Layout műveleteket. A megoldás az olvasási és írási műveletek csoportosítása: először az összes mérés, majd az összes módosítás.
A virtualizáció a kulcsfontosságú optimalizációs technika nagy listákhoz. iOS-en az UICollectionView automatikusan csak a látható elemekhez hoz létre cellákat. Androidon a RecyclerView újrafelhasználható viewHolder-ek készletét használja. Ezenkívül prefetching alkalmaznak: a rendszer 1–2 képernyővel előre betölti az elemeket, hogy a cellák készen álljanak a görgetés pillanatában. Androidon a GapWorker, iOS-en a prefetchDataSource felelős ezért.
A képek külön optimalizálást igényelnek. Háttérben történő betöltés egy külön szálon történő dekódolással megakadályozza a UI szál blokkolását. A Glide (Android) és Kingfisher (iOS) könyvtárak beépített lemez/memória gyorsítótárat, lusta betöltést és helyőrzőt biztosítanak a betöltés idejére. Az SDWebImage benchmarks (2024) szerint a képgyorsítótár használata 60%-kal gyorsítja a galériák görgetését a hálózatról történő közvetlen betöltéshez képest.
Egy másik gyakori probléma a nehéz elrendezési hierarchia. Minden beágyazott nézet növeli a Measure/Layout időt. Az ajánlott mélység legfeljebb 5 beágyazási szint. Androidon a ConstraintLayout lapos hierarchiák létrehozását teszi lehetővé, iOS-en pedig a Stack Views és a SwiftUI automatikusan optimalizálja az elrendezést. A Shadow és CornerRadius használata nagy számú elemen szintén lassítja a görgetést — ezeket csak szükség esetén szabad alkalmazni.
Gyakran Ismételt Kérdések
Görgetés a készülék képernyőméretét meghaladó tartalom áttekercselési mechanizmusa. A felhasználó az ujjával húz a képernyőn, és a tartalom a gesztus irányába mozog, felfedve a rejtett részeket. A görgetés az UIScrollView komponensen keresztül iOS-en és a RecyclerView-n keresztül Androidon valósul meg.
ScrollView (Android) az összes gyermek elemet egyszerre tölti be a memóriába — 500 elem esetén mind az 500 nézet egyszerre jön létre. A RecyclerView virtualizációt használ: csak a látható cellákat hozza létre, és újrahasználja azokat görgetés közben. Dinamikus adatokkal rendelkező listákhoz mindig a RecyclerView-t válassza.
Infinite Scroll egy olyan technika, ahol az új adatok automatikusan betöltődnek a jelenlegi lista végének elérésekor. Amikor a felhasználó az alsó határhoz görget, az alkalmazás kérést küld az API-nak és új elemeket ad hozzá. Ez javítja a felhasználói élményt a közösségi hálózatokban és tartalomfolyamokban.
A görgetés optimalizálása magában foglalja az elemek virtualizációját cella-újrafelhasználással, a képek lusta betöltését gyorsítótárazással, lapos elrendezési hierarchiákat (legfeljebb 5 szint), adatok előzetes betöltését 1–2 képernyővel előre és a layout thrashing elkerülését. iOS-en használja a prefetchDataSource-t, Androidon a GapWorker-t.
Görgetési tehetetlenség a hirtelen ujjmozdulat utáni fokozatos lassulás hatása. A rendszer megjegyzi az ujj mozgásának sebességét, és folytatja a görgetést a sebesség fokozatos csökkentésével, utánozva a fizikai súrlódást. iOS-en Quadratic easing-et, Androidon Spline-interpolációt használnak 0.015-ös súrlódási együtthatóval.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is