
Alexey
04.12.2016
08:28:26
В какую корзину и т д

Максим
04.12.2016
08:29:13

Google

Quarx2k ?
04.12.2016
08:35:21


Dmitrii
04.12.2016
08:52:22
Столкнулся с проблемой, в общем есть очень сложый экран, там много элементов которые можно так или иначе таскать пальцем. От его положения зависят состояния соседних + еще в фоне анимации, которые реагируют на это. В общем вся проблема в том, что если тач-события происходят очень часто и так происходит, что я пытаюсь запустить одно и тоже дважды то вся анимация в принципе слетает и движения получаются супер-резкие.
Отсюда у меня вопрос, правильно ли я понимаю, что в такой ситуации мне надо сделать отдельный тред, который будет "разгребать" очередь тач ивентов с анимациями и предотвращать повторный запуск, если такой тип анимации уже в проессе? Или это решается как то иначе?


Quantum Harmonizer
04.12.2016
08:54:34
Столкнулся с проблемой, в общем есть очень сложый экран, там много элементов которые можно так или иначе таскать пальцем. От его положения зависят состояния соседних + еще в фоне анимации, которые реагируют на это. В общем вся проблема в том, что если тач-события происходят очень часто и так происходит, что я пытаюсь запустить одно и тоже дважды то вся анимация в принципе слетает и движения получаются супер-резкие.
Отсюда у меня вопрос, правильно ли я понимаю, что в такой ситуации мне надо сделать отдельный тред, который будет "разгребать" очередь тач ивентов с анимациями и предотвращать повторный запуск, если такой тип анимации уже в проессе? Или это решается как то иначе?
Тред можно, если работаешь с SurfaceView. Иначе тебе всё равно большинство действий придётся постить в мейн.

Dmitrii
04.12.2016
08:57:13

Quantum Harmonizer
04.12.2016
08:58:30
Постить — handler.post(...). Ставить в основной лупер на выполнение.
Мне сложно представить управляющий анимациями код, который положит основной поток. Вероятно, дело в самих анимациях и UI.
Можно попробовать упрощать лейауты, отлавливать overdraw, заглядывать в systrace.

Dmitrii
04.12.2016
09:00:35
Просто если запустить анимацию движения кнопки даже дважды на антач, то будет виден эффект о котором я говорю. Анимация пропадает и кнопка передвигетс туда, куда ей было сказано - немедленно

Quantum Harmonizer
04.12.2016
09:01:20
Почему не проверить. запущена ли анимация?

Deni
04.12.2016
09:01:22
Всем привет, подскажите в чем различие в использовании overridePendingTransition и Window transitions, вроде Window.setEnterTransition()?

Dmitrii
04.12.2016
09:02:57
У меня примерно такая проблема. Я уже отдебажил, и это действительно происходит если на элементе запускать дважды анимацию. В коде анимаций FAB кнопки есть костыли типа запущена ли такая-то анимация. Но я так делать уже не могу, у меня есть разные анимации на разные типы тач событий. И если у меня идет анимация на он-мув и сразу происходит он-ап и я чекну на то, идет ли анимация или нет, то мой шанс запустить анимацию на он-ап будет просран, т.к.больше он-ап событий не будет.

Deni
04.12.2016
09:03:16
хочу сделать slide up activity transition, в сети рекомендуют overridePendingTransition. Смотрю Plaid, там AboutActivity анимируется через window transactions (причем беру его xml-ки, а у меня фон активити размывается и получается выезд с прозрачностью, хотя у него не так, сразу непрозрачная активити выезжает)

Quantum Harmonizer
04.12.2016
09:06:12

Google

Dmitrii
04.12.2016
09:06:39
Но мне нужна предыдущая. На экране будет ад если я сделаю cancel ей.
Я бы так и сделал, если бы мог :)
Собственно я и спросил в самом начале про вынесение запуска анимаций в отдельный тред, чтобы там код ожидал, когда ему свалятся новые "таски" на запуск анимаций и контролировал дубли не блокируя главный UI.

Quantum Harmonizer
04.12.2016
09:09:34
Так тебе нужно запустить следующую анимацию когда текущая закончится?

Dmitrii
04.12.2016
09:10:34
Да. Но сразу говорю что я не могу использовать AnimationSet. Потому что я еще не знаю какое тач-событие может произойти в будущем, поэтому положить нужную анимацию в сет не представляется возможным.
Использовать onAnimationEnd в листнере анимаций не могу по тем же причинам.

Quantum Harmonizer
04.12.2016
09:12:03
Повесь ArrayQueue на View через setTag, а в onAnimationEnd проверяй эту очередь на наличие следующих анимаций.

Dmitrii
04.12.2016
09:17:25
Проблема в том, что у меня параллельно запускаются анимации для трех разных элементов в от-тач событии. Если использовать onAnimationEnd то придется делать по такой "очереди" на каждый элемент, который имеет анимацию. Но по факту, у меня эти 3 анимации это группа анимаций, и следующие анимации можно запускать только тогда, когда все 3 закончат свою работу. А они имеют разные тайминги... :( Короче тлен.
Что-то мне подсказывает, что тема с handler.post и отдельным потоком решит все мои проблемы. Потому что у меня реально там адский экран )

Quantum Harmonizer
04.12.2016
09:24:53
Можно одну очередь на всех завести. Не могу представить, что ты будешь делать в отдельном потоке.

Dmitrii
04.12.2016
09:26:40
Как раз разгребать ее непрерывно и ставить флаги о том, какого типа сейчас анимация в процессе.
В общем если суммировать все это, у меня есть куча элементов на экране, например 3 штуки, на каждом надо запускать анимацию во время он-тач события. Он-тач события могут быть разные, и если тип события сменился, то "намерение" запустить анимацию для этого он-тач события надо поставить в очередь даже если анимации из предыдущего еще не завершились, но запускать надо только тогда, когда все анимации закончат свою работу (на всех элементах)

Quantum Harmonizer
04.12.2016
09:36:06
Ну попробуй. Мне кажется, фоновый поток будет главным образом спать :)

Dmitrii
04.12.2016
09:36:38
Согласен.

balolam
04.12.2016
09:41:03
Если их можно таскать, то может тут нужно не анимации юзать?
Столкнулся с проблемой, в общем есть очень сложый экран, там много элементов которые можно так или иначе таскать пальцем. От его положения зависят состояния соседних + еще в фоне анимации, которые реагируют на это. В общем вся проблема в том, что если тач-события происходят очень часто и так происходит, что я пытаюсь запустить одно и тоже дважды то вся анимация в принципе слетает и движения получаются супер-резкие.
Отсюда у меня вопрос, правильно ли я понимаю, что в такой ситуации мне надо сделать отдельный тред, который будет "разгребать" очередь тач ивентов с анимациями и предотвращать повторный запуск, если такой тип анимации уже в проессе? Или это решается как то иначе?
Анимации придуманы же не для таких вещей, в таких случаях тебе свой ViewGroup писать нужно и использовать андроидовские хелперы для плавного перетаскивания и инертной агимации движения объектов


Dmitrii
04.12.2016
09:42:49
Таскать можно некоторые элементы, они и генерят тач события
А другие элементы должны анимироваться от этого. Начиная от типа тач события заканчивая тем как далеко палец в тач событии от него

balolam
04.12.2016
09:43:43
Т.е. возможно ты не исправишь ничего, ведь подход в принципе неверен

Google

balolam
04.12.2016
09:44:32

Dmitrii
04.12.2016
09:49:33
Ну Дак все это реализуемо через собственный ViewGroup
А как он решает проблему когда у мне надо запускать анимации на элементах, которые длиннее по времени, чем интервал между срабатыванием тач событий, и как я выше писал, когда тип тач события меняется, а те анимации еще в процессе, то надо ждать пока все они выполнятся?

balolam
04.12.2016
09:51:32
Ты же когда NumberPicker скроллишь - он останавливается плавно. Или ListView, не моментально же дергается

Vitaly
04.12.2016
09:54:47
Ребята, можно ли как то во viewpager сменить фрагмент, находящийся в одном табе?
Погуглил, везде что то сложно как то

Dmitrii
04.12.2016
09:55:25

Toshk
04.12.2016
09:59:25
Добрый день, не специалист, мимо пробегал, но есть план в скором времени пилить андроид читалку картинок с сайтов/с памяти. Надеюсь, что в будущем тут смогут помочь на возникшие при работе вопросы.

Quantum Harmonizer
04.12.2016
10:00:18

Vitaly
04.12.2016
10:00:41
Да, нужно поменять его
Ок, поищю, спс

Quantum Harmonizer
04.12.2016
10:56:44
Кто-нибудь пробовал парсить markdown в Android? Нужно получить на выходе примерно то, что выдаёт PegDown, но он работает с ASM и на андроиде падает.
Хочется всего-лишь нативно отрендерить отформатированный текст, и при этом не изобретать свой формат.

Ⓜ️ᵃʳᵃᵗ
04.12.2016
11:13:52
какое хранилище взять, если нужно просто 10 параметров сохранить.
но нужна сортировка и активный параметр не активный.
я бы бросил в преф. но апи от 9.
хотя, может просто json в преф. втыкать.
хотя ладно в префы воткну, просто в массиве ключи так де генерить буду

Alexey
04.12.2016
11:29:15
@Harmonizr видел в plaid парсилку markdown - свой форк bypass

Quantum Harmonizer
04.12.2016
11:31:50
Но код же никто просто так не даст?)

Alexey
04.12.2016
11:32:33
@Harmonizr plaid. https://github.com/nickbutcher/plaid

Quantum Harmonizer
04.12.2016
11:32:56
О, класс. Спасибо.

Edgar Khimich
04.12.2016
11:34:31
всем привет
скажите, а как правильно вставлять код в стековерфлоу ?
чтоб так было к примеру
int a = 1;
int b = 1

Google

Timur
04.12.2016
11:39:04
Как вариант Ctrl + K.

Alexey
04.12.2016
11:42:53
@Khimich_Edgar там справа в форме редактирования кнопка "?" есть. 4 пробела перед каждой строкой кода

Edgar Khimich
04.12.2016
11:42:54

Lily
04.12.2016
13:15:39
Всем здравствуйте, а здесь помогают по вопросам и обсуждают андроид? Если нет, подскажите пожалуйста такие чаты. Очень нужно.

Timur
04.12.2016
13:16:01

I
04.12.2016
13:18:06
кстати, чатец по java подкиньте? у меня есть вопрос к ним)

Lily
04.12.2016
13:18:07
Хм, спасибо я читала, но в основном здесь про разработку андроида.

Владислав
04.12.2016
13:18:10

Сергей
04.12.2016
13:20:00

Leonid
04.12.2016
13:40:16
Напоминает бессмертное
— Здравствуйте, это канал об аниме?
— Да.
— Как мне пропатчить KDE2 под FreeBSD?

Artyom
04.12.2016
14:20:30
Чуваки! Кто шарит в тестах? Вот самый банальный вариант. У меня есть конструктор у класса, который внутри обрабатывает exception. Как мне протестировать конструктор? Допусти
public DBHelper(String dbHost, String dbUser, String dbPassword, Logger logger) {
this.logger = logger;
this.dbHost = dbHost;
this.dbUser = dbUser;
this.dbPassword = dbPassword;
try {
Class.forName(JDBC_DRIVER);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
Пока у меня одна мысль. Выдвинуть все содержимое конструктора в метод Init() throws SqlException и протестировать его на наличие валится exception или нет. Но создавать отдельный метод для этого, как то фу.. или все норм?

J
04.12.2016
14:26:38


Vitaliy
04.12.2016
14:59:10
Была книжка по Java с таким

Anton
04.12.2016
15:00:02
да это во всех книжках вроде описано
по джаве

Google

Vitaliy
04.12.2016
15:00:06
Там еще очень хорошо про extends и super писали для wildcard
Во всех, но тут особая была. В ней писалось именно о том, как правильно готовить все в Java.

Максим
04.12.2016
15:01:56
Философия Java,
?

J
04.12.2016
15:02:14

Anton
04.12.2016
15:02:15
Thinking in Java

Vitaliy
04.12.2016
15:02:32
Вроде да. Или она, или другая была, с похожим названием

Anton
04.12.2016
15:02:47
ну вот эта оч хорошая

Vitaliy
04.12.2016
15:02:53
Если там есть про in/out wildcard -- она

Anton
04.12.2016
15:02:57
там про вайлкарды много например раз уж вспомнили
про дженерики страниц 30

Vitaliy
04.12.2016
15:03:23
О том, какие слова применять для входящих и исходящих параметризаций
Да, но там обычная вода была
Поэтому не уверен
Посмотрите сами