Vlad
Привет, можете подсказать в каком направлении искать? Нужно сделать так, чтобы тулбар был абсолютно прозрачным, когда экран на самом верху, и когда юзер будет скролить вниз, то он становится черным, к примеру, и появляется текствью на нем?
karvinok
Скажите как сделать двойную навигацию в приложении? Есть активити с контейнером для трех фрагментов, они переключаются с помощью NavHostFragment. В третьем фрагменте содержится Bottom Navigation с тремя айтемами, как у этого фрагмента сделать навигацию для переключения в нём фрагментов?
это очень хороший вопрос)) я пытался сделать вложенный navHost в parentFragment, но jetpack видимо пока к такому не готов. сразу начали сыпаться проблемы с получением и правильной обработкой VM. да и сам navHost не хотел нормально работать в таких условиях (ред.) по итогу я пришел к активити для того экрана
Vlad
Попробуй collapsing toolbar
Я тоже о нем думал, но хз как его юзать. Там же нет свойств, которые говорят ему например стать прозрачным, ну и наоборот. Но видел такую логику во многих приложениях, например в вк есть такое, так что думаю должно что-то быть
Ory
Всем привет! Врываюсь с вопросом) Oauth2 (web - fusion, android - app-auth lib) response type value - CODE, scope - OFFLINE_ACCESS проблема: 1. запускаем аус2 2. открывается Хром (таб/браузер) 3. юзер выбирает продолжить с гугл аккаунтом 4. подтверждает аккаунт (успешно залогинились) 5. нас перенаправляет на страницу логина, которую мы открывали изначально(fusion) и врубается вечная загрузка (лоадер на Ui) Хром не редиректит назад в приложение (хотя redirect_uri в линке есть) (если использовать логин\пароль все работает нормально и наше приложение открывается и получает токен) кто с таким сталкивался? Решали ли на андроид подобную проблему? может бэкендеру пошуршать или бага внутри хрома и точно ничего не поделать?
mentarey
Мб минимальную высоту сделать 0 и он будет скрываться просто.
Vlad
Мб минимальную высоту сделать 0 и он будет скрываться просто.
Ага, хорошая идея, но черт там на тулбаре всего три айтема(текствью, бэкап и настройки), и в начальном состоянии(когда тулбар прозрачный) должны быть видны бэкап и настройки, чего не будет, если высота ноль, или я ошибаюсь?
mentarey
Мб просто тогда кастомную вью сделать аля тулбар и все станет много проще..
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
это очень хороший вопрос)) я пытался сделать вложенный navHost в parentFragment, но jetpack видимо пока к такому не готов. сразу начали сыпаться проблемы с получением и правильной обработкой VM. да и сам navHost не хотел нормально работать в таких условиях (ред.) по итогу я пришел к активити для того экрана
я сделал два файла навигации, один, который для активити я сделал app:defaultNavHost="true", второй файт навигации, который для фрагмента с bottom navigation bar без этого параметра. Выходит что у меня navGraph разные но одинаковый—- android:name="androidx.navigation.fragment.NavHostFragment"... у меня запускается приложение, но переключение фрагментов в фрагменте с bottom navigation не происходит...
mentarey
Так-то да, но дико сложно это реализовать
Просто выставить бэкграунд в трансперент и назад. И проанимировать это дело через transition, например.
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
karvinok
сделали активити вместо фрагмента на том месте)
karvinok
но мне кажется можно еще поковырять.
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
😫😫😫я хочу сингл активити)
Egor
Ребята, привет. Есть тут андроид и иос девы в одном?
karvinok
😫😫😫я хочу сингл активити)
SingleActivity по моему мнению все равно очень условная штука. для авторизации - в моих случаях активити все равно пришлось делать отдельно некоторые модули все равно нужно было выносить в активити, кроме основного, и так уже не один проект поправьте меня, если не прав
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
SingleActivity по моему мнению все равно очень условная штука. для авторизации - в моих случаях активити все равно пришлось делать отдельно некоторые модули все равно нужно было выносить в активити, кроме основного, и так уже не один проект поправьте меня, если не прав
да я днище, ещё учусь, я не могу объективно оценивать такие вопросы) просто я решил для себя сингл пилить, вот и учусь, мне кажется не зря такое понятие введено у разработчиков, иначе если бы все делали как ты говоришь, выносили что то в другие активити, то не было бы разговоров про сингл) Или приложение в сингл активити это утопия и таких проектов нет что ли?) конечно есть)
Egor
nometa.xyz
Юзаю кордату в айосе. Нужна лайвдата + вьюмодель только в айосе. Чтобы подписаться на изменения в базе данных. Не подскажете, куда порыть?
Egor
В сторону @ios_ru
Ну я там уже написал как раз, просто тут и андроид и айос. Малоли в группе есть такие люди. Поэтому и спросил.
Tino
В сторону @ios_ru
Он и там написал мету)
Andrey
Привет, подскажите как можно упростить маппинг данных ? Вот код: https://pastebin.com/EK9HtQMf Здесь есть две модели, одна для работы внутри приложения, другая для работы с бд и репозиторием. Для них сделал два метода которые маппят их друг на дргуа. Как можно упростить процесс маппинга ? До этого пробовал использовать mapStruct, но так и не разобрался как маппить если в модели которая используется в приложение имеет вложенную модель как на примере TFColor и TFIcon.
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
сделали активити вместо фрагмента на том месте)
я подумал о том, что бы вклеить bottom navigation в активити, а не фрагмент, но по дефолту скрыть его и делать его visibility когда перейду на нужный фрагмент😅но это походу вообще колхоз да?)
Andrey
единственный способ улучшить маппинг — уничтожить его накорню
И использовать единую модель для Room, Retrofit И так далее ?
Mike
Mike
Если поля сходятся и никакой дополнительной логики не нужно, то можно через сериализацию, например в json
Чаво? Взять объект, заджейсонить его, а потом распарсить в такой же класс?
Andrey
Ретрофит тут причём? Да, именно так.
К примеру получаю данные с сервера, и хочу сохранить в room, и как-то промежутком обработать внутри, то с одной моделью тут не выйдет
karvinok
и всё нуллабельное — это ужасно
у меня большинство задач решалось без маппинга, общими моделями, но иногда приходилось. а как быть с общими моделями в мультимодульном приложении?
Eugene
Чаво? Взять объект, заджейсонить его, а потом распарсить в такой же класс?
Ну у меня недавно кейс был, мне нужно было мапить мапу 😄 с firebase в data class. Я мапу перекинул в json, а json в data class
karvinok
А что там с ними?
хранить модели только в domain?
karvinok
если для отображения списка мне нужна простенькая, а в data модуле я получаю огромную уродливую модель
karvinok
сделай не уродливую, значит)
так ведь сервер шлет, что поделать)
Mike
так ведь сервер шлет, что поделать)
в десериализаторе исправить формат
Eugene
А в firebase оно в каком виде? Решение пиздец, конечно.
C firestore приходит map. Думаешь лучше было бы писать на каждое поле if(map.containKey)....?)
karvinok
в десериализаторе исправить формат
мне кажется более просто написать маппер, чем сериализатор писать
Mike
мне кажется более просто написать маппер, чем сериализатор писать
смотря что ты понимаешь под написанием сериализатора
karvinok
про свой gson адаптер? или ты не об этом
karvinok
так в data мне нужны определенные данные, которые описывают нарпример сущность "UserProfile" он большой, решает какие-то задачи в data и domain а в presentation должен выглядеть как маленький список пользователей например, мне кажется маппер тут самым простым решением
Eugene
± эскобар.jpg
fun serialaze(profileDocument: ProfileDocument) = profileDocument.serializeToMap() fun deserialaze(map : Map<String, Any>) = map.toDataClass<ProfileDocument>() Имхо, компактно и удобно, плюс, что самое главное, работает)
karvinok
нужные я беру перед мапингом, и фильтрую более легкие, да
Mike
нужные я беру перед мапингом, и фильтрую более легкие, да
А смысл фильтровать, если ты уже извлёк данные в память?
karvinok
чтоб потом в ui их не фильтровать
Mike
чтоб потом в ui их не фильтровать
Зачем их вообще фильтровать?
karvinok
для более легкого использования) зачем UI слою знать про какие-то room entity
Mike
для более легкого использования) зачем UI слою знать про какие-то room entity
А, понятно, абстракции ради абстракций, трансформации ради трансформаций.
karvinok
нет, меня туда не приписывай) я и сам не любитель
Mike
Имеет смысл сразу извлекать из базы маленький subset данных.
Mike
Тем более, там SQL, который умеет вертеть данными как угодно.
Nikolai
Как из room извлечь субсет. Он не только с entity умеет работать?
karvinok
для этого можно создать entity по-меньше и заполнять😁
Mike
Как из room извлечь субсет. Он не только с entity умеет работать?
Если никак, то надо закопать его обратно.
karvinok
в смысле паралельно хранить оба, и для data, и для ui, (это шутка была)
karvinok
по всей видимости я их не знаю
Kirill
Товарищи, подскажите, на чем это делалось? Что-то я ничего не могу найти..
Maks
Ребята, вопрос не по теме, но дайте совет пожалуйста. У меня дома андроид тв. Решил я проверить как-то через телик скорость в speedTest . Тест начал показывать просто запредельные скоростя, больше гигабита, а дома интернет у меня 20 мегабит. Оказалось, что в телик как-то вшит ВПН. Как отключить не знаю. Программ нет, настройки скинул то же самое. Для чего у меня установлен ВПН, как думаете?
Ярослав🇺🇦
Там все на кастомных вьюхах:)
Ярослав🇺🇦
Трудно сказать, что точно там
Kirill
Типа прогресс бар + таймер😑
Да как-то покопавшись в исходниках, на прогресс барах не нашел этого
Nikolai
Товарищи, подскажите, на чем это делалось? Что-то я ничего не могу найти..
https://github.com/DrKLO/Telegram/blob/dbf81a34affcd1c24d78e1403347ea8b3a186154/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java