Ответ
Да, работал. Основные особенности:
- UI/UX: Учитываю ограничения TV (10-foot UI), фокус на навигации с D-pad/пульта.
- Leanback Library: Использовал
Leanbackдля стандартных TV-компонентов (BrowseFragment, DetailsFragment). - Фокус и навигация: Обрабатываю
KeyEvent(например, KEYCODE_DPAD_CENTER) и управляю фокусом черезrequestFocus().
Пример обработки нажатия:
override fun onKeyEvent(event: KeyEvent): Boolean {
return when (event.keyCode) {
KeyEvent.KEYCODE_DPAD_CENTER -> {
// Действие при нажатии OK
true
}
else -> super.onKeyEvent(event)
}
}
Также учитываю рекомендации Google (HDMI-CEC, рекомендации по размерам элементов).
Ответ 18+ 🔞
А, ну да, работал, конечно. Ты ж понимаешь, это же телевизоры, тут не просто пальцем по стеклу тыкать. Тут целая наука, ёпта.
Первое и главное — интерфейс. Это ж не телефон, где можно менюшки в три этажа лепить. Это 10-foot UI, понимаешь? Диванный режим. Пользователь сидит в трёх метрах, пультом тыкает. Всё должно быть овердохуища большое, читаемое, и навигация — строго вверх-вниз-влево-вправо. Никаких свайпов, только D-pad. Иначе народ просто ебанько сядет, пытаясь курсор на кнопку навести.
Ну и, естественно, без Leanback Library — никуда. Это ж святое. Там всё готовое: BrowseFragment для списков контента, DetailsFragment для описания фильма. Не надо велосипед изобретать, бери и пользуйся. Хотя иногда их стандартные виджеты такие... манда с ушами, хочется переделать, но в целом — живём.
Самое интересное — это управление фокусом. Вот тут терпения ноль, ебать. Представь: у тебя сетка постеров. Пользователь нажимает "вправо", а фокус хуй знает куда улетел — на какую-нибудь невидимую кнопку сбоку. Кошмар! Поэтому везде requestFocus() и обработка KeyEvent. Вот смотри, простой пример, но без него — пиzда рулю:
override fun onKeyEvent(event: KeyEvent): Boolean {
return when (event.keyCode) {
KeyEvent.KEYCODE_DPAD_CENTER -> {
// Действие при нажатии OK
true
}
else -> super.onKeyEvent(event)
}
}
Казалось бы, ерунда. Но если это не прописать, то нажатие "ОК" на пульте просто игнорируется, и пользователь будет орать на весь дом, что приложение глючит, сука.
Ну и по мелочи: рекомендации Google соблюдаем как священное писание. Размеры текстов, отступы, поддержка HDMI-CEC (чтобы с одного пульта всё управлялось). В общем, задача такая: сделать так, чтобы тётя Люба с дивана могла всё найти и включить, не вызывая внука-айтишника. Если она начинает бздеть, что не понимает, как фильм запустить — значит, ты где-то спизднул в логике. Всё должно быть до безобразия просто. Телевизор — он для отдыха, а не для квестов.