sadr0b0t / yashlang

PeerTube and YouTube player for Android with local playlists and whitelisted recommendations
GNU General Public License v3.0
52 stars 3 forks source link

Переезд на ViewPager2 #154

Closed sadr0b0t closed 1 year ago

sadr0b0t commented 1 year ago

Во-первых, androidx.viewpager.widget.ViewPager не развивается, а предназначенный для него androidx.fragment.app.FragmentPagerAdapter из типовых примеров уже deprecated

https://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html https://developer.android.com/jetpack/androidx/releases/viewpager2 https://developer.android.com/develop/ui/views/animations/vp2-migration#java

The primary reason to migrate is that ViewPager2 is receiving active development support and ViewPager is not. However, ViewPager2 also offers several other specific advantages.

Во-вторых, словил ровно вот этот глюк с радио-кнопками и вторым табом (если таб первый в списке, то баг не воспроизводится): https://stackoverflow.com/questions/43248414/setting-radiobutton-setchecked-with-multiple-fragments

Рабочих решений в коментах нет, поэтому вариант попробовать обновить TabLayout и ViewPager, а значит и повод сразу заменить ViewPager на ViewPager2 (спойлер: проблема, действительно, пролечилась, не ясно только, обновлением meterialui:TabLaoyout или переездом на ViewPager2, сейчас лень проверять точно).

TabLayout+ViewPager2 https://stackoverflow.com/questions/55372259/how-to-use-tablayout-with-viewpager2-in-android https://developer.android.com/develop/ui/views/animations/vp2-migration#tablayout https://developer.android.com/guide/navigation/navigation-swipe-view-2

sadr0b0t commented 1 year ago

Для интеграции с ViewPager2 TabLayout нужно тоже было обновить. Искал, где бы было написано, какая у него самая свежая версия (ахуенная космическая АндроидСтудия их показыать в build.gradle, например, по автокомплиту, не умеет - нужно лесть в интернеты или гадать).

Где найти информацию по установке и обновлении библиотеки, в которой определен этот TabLayout, - это тот еще квест долбаный.

на странице с документацией https://developer.android.com/reference/com/google/android/material/tabs/TabLayout слева пэкэдж com.google.android.material, но это везде ссылки на javadoc для конкретных классов, нельзя кликнуть так, чтобы попасть в корень с описанием этой библиотеки.

Ок, кликаю наверху Android Developers > Docs > Reference, на Reference https://developer.android.com/reference

Там среди прочих ссылка Other Libraries > Material Components > User Guide https://developer.android.com/develop/ui/views/theming/look-and-feel

Там где-то в тексте ссылка на material design support library https://developer.android.com/topic/libraries/support-library/features#material-design , которая вся deprecated

На плашке "deprecated" написано, что рекомендуют переходить на проект Jetpack без уточнений, где там искать замену materialui

На сайте Jetpack https://developer.android.com/jetpack сука идём в раздел Libraries (я так решил) https://developer.android.com/jetpack/androidx/explorer

и там внизу списка находим Material Design Components https://m2.material.io/develop/android/ , которая, бля, ведет еще на новый отдельный сайт, где есть упоминание компонентов MaterialUI и Android https://m2.material.io/develop/android

И вот там на заглавной странице, сука, можно найти ссылку Get started with MDC for Android (не нужно даже мотать вниз! эргономика!) https://m2.material.io/develop/android/docs/getting-started

и там есть инструкция, как этот materialui в новой инкарнации в проект добавить и обновить. Рекомендуют номер последней версии смотреть в репозитории maven https://maven.google.com/web/index.html#com.google.android.material:material

Visit Google's Maven Repository or MVN Repository to find the latest version of the library.

Ну и там не врут - последнюю версию, действительно, видно (на текущий момент самая свежая 1.8, получилось обновиться максимум до 1.4, т.к. на 1.5 уже не компилируется с текущими настройками).

Чтобы посмотреть документацию, вкладку "Components" на этом же сайте (на наверху, ни слева) кликать не нужно - там будет документация на JavaScript+node.

Ссылка на Javadoc внизу страницы "Getting started" - Class documentation (среди прочих), ведёт на тот же старый developer.android.com https://developer.android.com/reference/com/google/android/material/classes

сука, сука, сука

все актуальные ссылки: https://m2.material.io/develop/android/docs/getting-started https://maven.google.com/web/index.html#com.google.android.material:material https://github.com/material-components/material-components-android https://developer.android.com/reference/com/google/android/material/tabs/TabLayout

sadr0b0t commented 1 year ago

https://github.com/sadr0b0t/yashlang/commit/b26007077bdd668caa195a7b5b988afb98627819