Работал ли с Material Design

Ответ

Да, работал с Material Design, включая компоненты из библиотеки com.google.android.material. Использовал основные элементы: BottomNavigationView, FloatingActionButton, Snackbar, TextInputLayout с TextInputEditText, CardView. Также настраивал темы с атрибутами colorPrimary, colorSecondary и применял Material Motion для анимаций.

Пример кода для TextInputLayout с валидацией:

val textInputLayout = findViewById<TextInputLayout>(R.id.text_input_layout)
val editText = findViewById<TextInputEditText>(R.id.edit_text)

editText.doAfterTextChanged { text ->
    if (text.isNullOrEmpty()) {
        textInputLayout.error = "Поле не может быть пустым"
    } else {
        textInputLayout.error = null
    }
}

Слежу за обновлениями Material 3 (MaterialComponents), включая динамическую цветовую схему (dynamicColor) и новые компоненты, такие как SearchBar.

Ответ 18+ 🔞

А, ну так это ж классика, ёпта! Работал, конечно, с этим самым Material Design, со всей этой библиотекой com.google.android.material. Ну знаешь, эти ихние штуки: BottomNavigationView внизу болтается, FloatingActionButton этакий наглый, торчит посередь экрана, Snackbar выскакивает как назойливое напоминание... В общем, полный набор, блядь.

И TextInputLayout с TextInputEditText внутри — это вообще отдельная песня, ядрёна вошь! Чтобы красиво ошибку показывать, а не просто красным текстом в углу. Карточки эти, CardView, настраивал, тени там, скругления... Чистая магия, а не работа.

Темы, блядь, возился — colorPrimary, colorSecondary. Потом ещё анимации эти Material Motion подключал, чтобы всё плавненько так перетекало. Выглядит, конечно, овердохуища, но иногда хочется просто впендюрить этот дизайн от гугла, когда всё ломается из-за какой-нибудь ерунды.

Вот, смотри, как я с этим TextInputLayout изголялся, чтобы ошибку динамически показывать:

val textInputLayout = findViewById<TextInputLayout>(R.id.text_input_layout)
val editText = findViewById<TextInputEditText>(R.id.edit_text)

editText.doAfterTextChanged { text ->
    if (text.isNullOrEmpty()) {
        textInputLayout.error = "Поле не может быть пустым"
    } else {
        textInputLayout.error = null
    }
}

Просто, да? А нет, блядь! Потому что если ты это в Fragment засунешь или в RecyclerView, то начинается цирк с конями. NullPointerException вылезает как чёрт из табакерки, и волнение ебать — терпения ноль ебать.

И да, слежу я за ихними апдейтами, за этой Material 3. Говорят, там теперь dynamicColor — цвета под обои телефона подстраиваются. Выглядит, вроде, хитрая жопа, но доверия ебать ноль, что не сломается на половине девайсов. Новые компоненты пробовал, типа SearchBar — вроде ничего так, но ощущение, что опять накосячат где-нибудь. В общем, работа и есть работа, чувак.