ΠΠ²Π° Π΅ ΠΎΡΠΈΡΠΈΡΠ°Π»Π½Π°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° DpadRecyclerView, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½Π° ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΎ Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΈ ΠΈ Π½Π°Π²ΠΈΠ³ΠΈΡΠ°ΡΠΊΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ Π½Π° Android TV. ΠΠ²Π°Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π΄Π° Π³ΠΈ ΡΠ΅ΡΡΠΈΡΠ°Π°Ρ, ΠΏΠΎΡΠ²ΡΠ΄Π°Ρ ΠΈ ΠΈΡΡΡΠ°ΠΆΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° DpadRecyclerView ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½Π° Π·Π°ΠΌΠ΅Π½Π° Π·Π° BaseGridView Π½Π° Leanback ΠΈ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ Π½Π° Compose.
Π¦Π΅Π»Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°: Android TV ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ, Kotlin ΠΈ Jetpack Compose UI ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ, ΡΠΎΡΠ°Π±ΠΎΡΠ½ΠΈΡΠΈ Π½Π° Open Source
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π½ΠΈ ΠΊΠ»ΡΡΠ½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ: ΠΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ ΡΠ° ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°, Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΡΠΈ ΠΈΠΌ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°Π°Ρ ΡΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π½ΠΈΠ²Π½ΠΈΡΠ΅ Android TV ΡΡΠ΅Π΄ΠΈ:
Leanback Replacement: ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ ΠΌΡΠ΅ΠΆΠΈ ΠΈ Π»ΠΈΡΡΠΈ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π±Π΅Π· Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠ° ΠΎΠ΄ Π·Π°ΡΡΠ°ΡΠ΅Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Leanback.
Jetpack Compose Interoperability: ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° DpadComposeViewHolder Π·Π° Π±Π΅ΡΠΏΡΠ΅ΠΊΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ Π½Π° Compose UI Π²ΠΎ RecyclerViews.
ΠΠ°ΠΏΡΠ΅Π΄Π½ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠΎΠΊΡΡ: ΠΠΈΠ·ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ° ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠΎΠΊΡΡ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ OnViewHolderSelectedListener, ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΏΠΎΡΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈ ΡΠΊΡΠΎΠ»ΡΠ²Π°ΡΠ΅ ΠΏΠΎΡΠ°ΠΌΠ½Π΅ΡΠΎ ΡΠΎ Π·Π°Π΄Π°ΡΠΈ.
ΠΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΎ ΡΡΠΎΠ³Π»Π°ΡΡΠ²Π°ΡΠ΅: ΠΡΡΡΠ°ΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π·Π° ΡΡΠΎΠ³Π»Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΠ²ΠΈΡΠ΅, ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ Π±ΡΠ·ΠΈΠ½ΠΈ Π½Π° ΡΠΊΡΠΎΠ»ΡΠ²Π°ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΡΡΠΎΠ³Π»Π°ΡΡΠ²Π°ΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»-Π΄Π΅ΡΠ΅.
Π Π°ΡΠΏΠΎΡΠ΅Π΄ΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΈ: ΠΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΈ ΡΠΎ Π½Π΅Π΅Π΄Π½Π°ΠΊΠ²ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½ΠΈ Π½Π° ΡΠ°ΡΠΏΠΎΠ½ ΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ: ΠΠΊΠ»ΡΡΡΠ²Π° Π΄Π΅ΠΌΠΎ-Π²Π΅ΡΠ·ΠΈΠΈ Π·Π° Π±Π»Π΅Π΄Π½Π΅Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΠ²ΠΈ, Π»ΠΈΠ·Π³Π°ΡΠΊΠΈ Π»Π΅Π½ΡΠΈ, ΠΎΠ±ΡΠ°ΡΠ½ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π·Π° Π²Π»Π΅ΡΠ΅ΡΠ΅ ΠΈ ΠΏΡΡΡΠ°ΡΠ΅ Π½Π° D-pad ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ.
DpadRecyclerView ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π΅ ΡΠΎΡΡΠ²Π΅Ρ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ°Π½ ΡΠΏΠΎΡΠ΅Π΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° Apache 2.0. ΠΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π²ΠΎ Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π·Π° ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ ΠΈ ΡΠ΅Π»ΠΎΡΠ½Π°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π½Π° GitHub Π½Π° https://github.com/rubensousa/DpadRecyclerView
ΠΠ΄ΡΠ΅ΠΊΡΠ²Π°ΡΠ΅ ΠΎΠ΄ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ: ΠΠ²Π°Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎΠ΄ΡΠΆΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½ΠΈ ΠΌΠ΅ΡΡΠ° (ΡΠ»ΠΈΠΊΠΈ ΠΈ ΡΠ΅ΠΊΡΡ) ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΈΡΠΊΠ»ΡΡΠΈΠ²ΠΎ Π·Π° ΡΠ΅Π»ΠΈ Π½Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΎΡ. ΠΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° Π·Π° Π²ΠΈΠ΄Π΅ΠΎ ΡΡΡΠΈΠΌΠΈΠ½Π³ ΠΈΠ»ΠΈ ΠΌΠ΅Π΄ΠΈΡΠΌΡΠΊΠΈ ΡΡΠ»ΡΠ³ΠΈ.
ΠΠΆΡΡΠΈΡΠ°Π½a Π½Π°
8 Π΄Π΅ΠΊ. 2025β―Π³.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π΄Π΅ΠΌΠΎ