Future Franklin
Ivansuper
Ты пошел программировать. Так что это твои проблемы. И тебе их надо решать, ибо с ними ты не сможешь нормально работать
Future Franklin
Окей
Ivansuper
Я не силён в этом
Ты мог просто загуглить "как считать среднее арифметическое" вместо написания "я не силен в этом"
Спелыйяблоко
Добрый вечер
Спелыйяблоко
Думаю вопрос не раз поднимался.Буду благодарен ответам.
Спелыйяблоко
Джава ведь не вся нужна для анроид разработки
Спелыйяблоко
Какую книгу ресурсы и т.д вы посоветует именно для джавы под андроид?
Владимир
Всем привет. Может есть у кого экспириенс, чтобы помочь мне с конкретной задачей:
Есть скролвью, и есть алгоритм, меняющий расположение вьюх внутри него. Проблема: если скролить скролвью, не отпуская пальца, все окей, но как только отпустить и скролвью начинает самостоятельно докручиваться по инерции, возникает проблема - он каким-то образом кеширует внутренности себя и не вызывает ни под каким соусом layout. Лейаут не производится вплоть до полной остановки. Из-за этого вьюхи, которые были в одном месте и которые я хочу сдвинуть - не сдвигаются пока не произойдет остановка. Однако! Если создать новую вьюху и добавить вовнутрь - она расположится как надо. Но только если это новая вьюха, а не старая.
Исследование показало, что дело в том, что лейаутпарамс уже посчитаны и задали положение и размер, а если их (парамс) еще не было, то происходит первичный рассчет. Есть какой-то способ заинвалидировать вьюху, будто бы она еще не была никуда приаттачена?
requestLayout или invalidate пробовала?
Andrey
Кто-то встречался с подобным поведением TabLayout? При скролле и выделение объекта, скрол идёт обратно от выбранного объекта, разве так и должно быть? Просто вроде всегда сам индикатор переезжал без видимых анимаций со скроллом.
https://pastebin.com/8MPkpjsc
Спелыйяблоко
планирую сначала джаву потом плавно на котлин перейти
Anna
Anna
Минимального нет 😊 Но сделать очень легко - в скроллвью засовываем огромный релейтив, внутрь релейтива - любую вью. И вот последнюю двигать по условию, например, если вышла за экран, то сдвинуть вниз на Х пикселей.
Ivansuper
Сдвиг как делается? Изменением LayoutParams у вью?
Future Franklin
Ivansuper
Тебе надо поместить между ДВУМЯ. Так что в выражение рассчета должны попасть X обоих углов
Ivansuper
По одному ты не рассчитаешь позицию между ДВУХ
Anna
Сдвиг как делается? Изменением LayoutParams у вью?
Да. Но я кажется нашла интересный кейс - он вызывает у меня недоумение, но я забыла деталь уточнить. Ловлю скролл переопределением onScrollChanged. И в нем, получается, все действия. Но если добавить post { } все начинает работать.
Future Franklin
Future Franklin
Я думал x ,y берётся из моей фигуры
Ivansuper
Всмысле от экрана а не от моей фигуры?
У тебя есть экран. Его верхняя левая точка это 0х0. Твоя фигура всегда имеет больше Х У у своих точек, которые принадлежат пространству координат канваса
Ivansuper
Если ты поделишь просто на 2, то получится уменьшение точки относительно верхнего левого угла экрана
Ivansuper
Если точнее — не от физического угла экрана, а от угла вью, в которой рисуешь
Ivansuper
Потому что если отображать панель уведомлений, канвас рисования будет меньше экрана (например)
Ivansuper
Ivansuper
Ivansuper
Оно не должно провоцировать ничего кроме invalidate() и layout pass не должен быть проблемой
Александр
По скольку все layout pass проходят асинхронно
Жесть я прозрел сейчас
Ivansuper
Оно работает на юай треде, а пост не гарантирует выполнения на следующий кадр. Для этого лучше использовать всякие onLayout. В конкретном случае - пост вызовется позже, и лейаут вьюхи произойдет через кадр. В моем случае приемлемо, однако неприятно 😊 Кроме того, если скрол не в состоянии fling, то все ок. В общем, спасибо, товарищ! Родина тебе благодарна.
Если затрагивать эту тему, то тогда надо делать пост в этот, блин, как его. Хро-чего то там
Ivansuper
Он еще помоему называется похожим образом на слово, которым описывают процесс постановки танца
Ivansuper
Он умеет делать пост задач на самое время отрисовки следующего кадра
Ivansuper
https://developer.android.com/reference/android/view/Choreographer
Anna
Anna
А, хореографер.
Anna
С ним ну очень уж геморно получается. Смирюсь с сайд эффектами
Ivansuper
Костыльпромисс между решениями, норм
Ivansuper
Ivansuper
Ты всего лишь отправляешь запрос, ставится условно флаг, и на следующий отклик Loop обработки сообщений с основного потока запускается relayout
Anna
Александр
м?
Я не думал об этом раньше просто, а сейчас как подумал.
Александр
Ra
Ra
Ra
Ra
Ярослав🇺🇦
О, да это отдельное извращение кидать код фоткой моника
Александр
Max
Андрей
Всем привет! Скажите, а как перехватить push уведомления?
Андрей
Вроде как firebase для этого используют.
Андрей
А, понятно!
Master
Ярослав🇺🇦
Артем
Артем
нужно зарегать сервис, правда разрешение от юзера нужно
Артем
notificationlistenerservice вроде
Master
Пока ты один такой. Другим было видно. 😏 Но конечно учту, чтобы было видно всем🤓. Удачи
Master
Valeriy
кто знает как программно поменять цвет иконок в тулбаре?
Дмитрий Рыбалкин
При запуске на телефоне приложение падает, а на эмуляторе работает нормально. Можно ли в телефоне открыть консоль, чтобы увидеть ошибку, или еще каким-то способом посмотреть что там происходит?
awawa
Ленар
Logcat
Дмитрий Рыбалкин
А, туплю, сорян. Нашел
ℕo ℕame
Андрей
Turalllb
Подскажите, а мы можем в SQLiteOpenHelper работать с двумя разными базами?
Viktor
Ребята, привет. Надеюсь, кто-нибудь прочитает эту простыню и поможет мне, вы моя последняя надежда, сижу уже 2 дня.
Мне нужно заполнить выпадающий список, используя Room и RxJava и MVVM.
ViewModel фрагмента выглядит так:
fun getData(): Single<List<Kotlin>> {
return dataSource.getAll()
}
В фрагменте делаю так:
private fun prepareDataList() {
viewModel.getData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : SingleObserver<List<Kotlin>> {
override fun onSuccess(t: List<Kotlin>) {
kotlinDataList = t
}
override fun onSubscribe(d: Disposable) {}
override fun onError(e: Throwable) {}
})
}
kotlinDataList должен заполнится данными, далее я их рассовываю по вьюхе выпадающего списка.
Проблема в том, что лист ВНЕ onSuccess всегда пустой, данные генерируются внутри onSuccess, но не выходят наружу.
При дебагинге данные не выходят наружу и в конце бесконечно горит "application is running".
Я все перегуглил, испробовал и всякие Flowable, Maybe и еще кучу приемов, пересмотрел все примеры, которые нашел в гугле, не могу понять, что у меня не так.