М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 6 мая 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

43 Кб, 400x267

Android Development Thread 2.1.0 25 Янв, 23:31 #919538 В конец треда | Веб

Android Development Thread 2.1.0

> Хочу вкатиться в разработку под Android! С чего начать?
Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно установить Android Studio, открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.

> Мануалы?
- Официальная документация: http://developer.android.com/
- Полезный гайд для начинающих и продвинутых: http://guides.thecodepath.com/android
- Бесплатный видеокурс от Google для новичков: https://www.udacity.com/course/android-development-for-beginners--ud837
- Два ресурса, единственный плюс которых — русский язык: http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
- Классика, способная дать ответ на почти любой вопрос "Как сделать xyz?": http://stackoverflow.com/

> Не хочу писать на Java!
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. Можно использовать в проекте вместе с кодом на Java.

> Есть что-то кроме нативных приложений на Java/Kotlin?
- Qt — кросс-платформенный фреймворк на C++. Используется в основном для игры и для приложений с высокими требованиями к производительности (обработка изображений, звука, ГИС-системы). Спрашивать в C++ треде.
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
- PhoneGap/Ionic/Titanium/ReactNative — имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.

> Хочу писать игры!
LibGDX или Unity. Спрашивать в /gd/.

> Что нужно, чтобы взяли джуниором? Что учить в первую очередь?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library, shared preferences, SQLite), знание популярных библиотек типа Retrofit + Glide/Picasso. И хотя бы оно готовое приложение.

Предыдущий тред: https://2ch.hk/pr/res/902606.html (М)

Ответы922720923337923739924141924222927124927209928494933361

25 Янв, 23:34 #2 #919541

Принимаются варианты для следующих ОП-пиков

Ответы919734919934919937

58 Кб, 489x604

26 Янв, 00:42 #3 #919573

>>919117
>Это не учебник а скорее справочник. Но годный. Не повторяй моих ошибок - не вкатывайся начиная с него.

Почему? Он идеально по типу От простого к сложному. Может ты реально Справочник Шилда использовал.
Потому что у него по языкам есть как учебники так и справочники.
Я по Шилду шарп изучал немного. Теперь буду использовать как справочник потому что у них очень много общего с Джавой.

Ответы919733919898

26 Янв, 00:58 #4 #919581

Анон, что значит "application is idle"
Что оно в onPause()?

Ответы919584919595

26 Янв, 01:03 #5 #919584

>>919581
Вагина тваей мамашки защемила хуй маги.

26 Янв, 01:22 #6 #919595

>>919581
Откуда это?

26 Янв, 12:22 #7 #919733

>>919573
Может сначала лучше человеку с неокрепшей психикой Эккеля почитать, дабы вкатиться ?

Ответы919807

26 Янв, 12:23 #8 #919734

>>919541
Трапы закончились ?)

26 Янв, 12:37 #9 #919746

Катаны, теряюсь в догадках, а решить нужно быстро: что бы вы рассказывали людям первым делом, когда знакомили их с разработкой под ведро ? Пока что думаю рассказать базовую информацию по Gradle, манифесту, соответственно перечислить основные компоненты приложений - Application, Activity, Service, IntentService, BroadcastReceiver, ContentProvider. Потом уже после введения на первой лекции думаю рассказать более детально об Activity. Вопрос - насколько детально, и правильный ли я подход выбрал ? Люди знакомы с ООП, скорее всего на уровне джунов владеют шарпами.

Ответы919747920889

26 Янв, 12:40 #10 #919747

>>919746
Вкратце программа на ближайшие лекции четыре-пять выглядит так:

1) Сборка проекта. Управление зависимостями​
2) Стандартные компоненты. Составляющие приложения​
3) Проектирование UI и верстка​
4) Пакет java.util.concurrent. Асинхронное выполнение задач​
5) Работа с базами данных. Пакет android.database​
6) Обращение к сети. Пакет java.net​
7) Шаблоны проектирования. Архитектура приложений​
8) Unit-тестирование. Функциональное тестирование

Ответы919797

26 Янв, 13:54 #11 #919784

Аноны, как вы работаете с OAuth? Юзаете какие то либы?

Ответы919788

26 Янв, 14:01 #12 #919788

>>919784
retrofit, okhttp

Ответы919809

26 Янв, 14:09 #13 #919793

Как создать таймер по типу секундомера?

26 Янв, 14:12 #14 #919797

>>919747
Добавь

0) Kotlin

А вообще взял бы современную книжку по android с хорошими отзывами и заюзал бы ее оглавление

Ответы919802

282 Кб, 375x604

26 Янв, 14:33 #15 #919802

>>919797

26 Янв, 14:47 #16 #919807

>>919733
Хуйня какая то для хипстеров.

26 Янв, 14:53 #17 #919809

>>919788
ну это же только для получения токена, а открыть браузер и получить от туда "code"

Ответы919873

26 Янв, 15:02 #18 #919814

привет, аноны, у меня к вам такй вопрос, что вроде как и кажется, что элементарное, но и не совсем. В общем, как реализовать TextView так, что при задавании ему слишком большого текста (например, более 3 строк) в конце ставилось троеточие и текст остальное обрезался?

Да, я знаю, что есть ellipsize="end", но оно не подходит тем, что может обрезать слово посередине. Например : "слишком длинный те...". А мне нужно, чтоб все слова оставались целыми, если уже и приходится обрезать, то часть слова не оставалась.

Кто-то такое реализовывал или возможно знает как такое сделать?

26 Янв, 16:14 #19 #919873

>>919809
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(%юрл сюда пихай%));
startActivityForResult(intent, 228)

26 Янв, 17:10 #20 #919898

>>919573
Реально попутал. Один фиг там сначала этот учебник встроен.

26 Янв, 18:10 #21 #919922

Анон, я тот нуб-кун из Киева. За недельку склепал аппу на 1500 строк юзающаю retrofit для openweather, picasso, Google maps api. Из корного: лоадеры, адаптеры, анимации, фрагменты и ещё кучу всякой мелкой дичи типа пермишинов, мультипотточности и тд. Что бы ещё сделать для портфолио что бы вкатиться джуном в киев.

Ответы920211920504920564920885

26 Янв, 18:13 #22 #919925

Анон, как лучше всего организовать хранение данных? Суть токова: в приложении должен быть телефонный справочник и некая справочная информация. Причём, должна быть возможность и то и другое редактировать централизовано.
Я пока додумался вот до такого: есть фтп-сервер, на котором лежит справочник в виде xml, справочная информация в виде html-страниц. При каждом запуске или по таймеру приложение коннектится к этому серваку и скачивает эти данные, если они изменились.
Делаю своё первое относительно большое приложение практически с нуля, поэтому не знаю, как вообще подобные штуки реализуются. Этот способ мне показался наиболее простым.
Или может как-нибудь по-другому это можно реализовать?

Ответы944887

26 Янв, 18:24 #23 #919934

>>919541
Вебемкой вот это видео
https://www.youtube.com/watch?v=tVl2fkUY5PI

Кек.

64 Кб, 480x305

26 Янв, 18:27 #24 #919937

>>919541

26 Янв, 19:36 #25 #919959

Как делать модульные приложения? Например как Total Commander для которого можно скачать модули в виде отдельных apk, которые расширяют функционал.

Ответы919977

26 Янв, 20:31 #26 #919977

>>919959
смотри что такое productFlavours

Ответы920007920036

26 Янв, 20:50 #27 #920007

>>919977
>смотри что такое productFlavours
Product flavours это для сборки разных версий одного приложения. А нужно: базовое приложение + модули расширений. Например у меня есть com.example.app и я хочу что бы пользователь мог поставить модуль расширения com.example.app.extension с возможностью вызывать методы из этого пакета в основном приложении com.example.app

Ответы920024

26 Янв, 21:07 #28 #920024

>>920007
Bind Service AIDL IPC.
ContentProvider

26 Янв, 21:24 #29 #920036

>>919977
Ебал тя в глотку.

133 Кб, 340x340

27 Янв, 10:14 #30 #920211

>>919922
>За недельку
>склепал аппу на 1500 строк юзающаю retrofit для openweather, picasso, Google maps api. Из корного: лоадеры, адаптеры, анимации, фрагменты

Представляю какое у тебя там месиво и спагетти из г####-кода :)

Ответы920217920493

27 Янв, 10:40 #31 #920217

>>920211
Да ладно тебе, в 1,5k строк наврядли реально месиво сделать, даже если в одном классе все. Это нужно талант иметь (не иметь)

27 Янв, 17:58 #32 #920356

Как организовать с rx подобную шляпу:
1) На определенном экране подписываюсь на обновление конкретной таблицы в базе (storIo);
2) Получая обновления отображаю их;
3) По клику на кнопку делаю всякие другие штуки;

Вроде как с первым и вторым пунктом все понятно, проблемы возникают с третьим, вот наивный вариант:
http://pastebin.com/LLVfvWdS

Я попробовал с сабжектами, гляньте может где ненужная аллокация новых обсервеблов, или можно проще:
http://pastebin.com/AwKSsQ9C

11 Кб, 272x364

27 Янв, 18:25 #33 #920368

Прочитал первый том хорстманна. Стоит ли что-то из второго читать?

27 Янв, 22:08 #34 #920493

>>920211
Нуб то нуб. Но кодю года три, олимпиадник да и кто такая банда четырех знаю. Просто до этого кодил лабы, всякую херь да курсачи/дипломы.

Ответы920496920524920803

27 Янв, 22:15 #35 #920496

>>920493
upd: Может ли кто то заодно подсказать куда копать что бы при удалении элемента карточки из ресайкла запилить анимации передвижения карточек. notifyDataSetChanged просто перезапускает адаптер как я понимаю.

Ответы920532920730

27 Янв, 22:29 #36 #920504

>>919922
Что за аппа-то?

Ответы920518

27 Янв, 22:42 #37 #920518

>>920504
Вот то что выше в прямом смысле - карточки мест с картинкой, дистанцией до заданной локации и погодой в этом месте. Их можно добавлять, да модифицировать - указывать ссылку нахождения пикчи или выбирать ее с помощью файлового менеджера. Локацию вводить гмапс апи. Все правослано через провайдеры/лодеры/адаптеры. Настолько что точно пойду учить реакт ради нахваленого выше сторио.

393 Кб, 650x650

27 Янв, 22:47 #38 #920524

>>920493
>олимпиадник
уженеШкольничек-властелин-laba1, пытается кого-то удивить

Ответы920528

27 Янв, 23:10 #39 #920528

>>920524
Не школьные олимпиады. И отъебись ты уже от меня если сказать нечего.

Ответы920572

27 Янв, 23:13 #40 #920532

>>920496
И могут ли быть на собеседовании вопросы про внутрянку HTTP(Не только что такое гет/пост а и расписать что еть что в запросе и как его сформировать , можно ли вкратце рассказать про OkHttp?) или внезапно HTML(стоит ли повторять, разметку я то прочитать могу, а вот с ходу написать что то нет)

27 Янв, 23:19 #41 #920541

Написал пару крудов, одно чуть более сложное приложение.
Хотелось бы угореть по MVP, собрал за некоторое время кучу статей. К сожалению, большинство из них очень короткие и описывают в общих чертах что это за архитектура и потом набрасывают пример который и без MVP бы не умер.
Некоторые ещё и предлагают использовать свои какие-то васянские либы-реализации MVP использовать (в туториалах обучающих MVP).
Короче, я хотел бы изучить вопрос в минималистичном сеттинге, где все интерфейсы пишутся и реализуются с нуля, и если используется хуйня типа Rx, event bus, DI или ещё чего-то, то только после того как появились проблемы а не сразу блядь всё.
Проходил какой-то мини-туториал от гугла что-то там про тестирование. Сделали годно, но может есть что-то более развёрнутое?

Ответы920927

27 Янв, 23:38 #42 #920564

>>919922
Много там в киеве джунопозиций? Я что-то по объявлениям не сказал бы. Сам думаю вкатываться джуном по весне, но мне надо будет переезжать.
Вообще, не хотел бы ехать в киев, предпочёл бы одессу или львов.
Впрочем, судя по количеству вакансий может ещё никуда не поеду и пойду работать на стройку. Кто что может пояснить за джунские позиции в украине?

sage 27 Янв, 23:45 #43 #920572

>>920528
>Не школьные олимпиады
А ну это другое дело, так домашку уже сделал?

Ну честно, я понял - ты можешь препод тебя натаскал решать стандартные задачки из учебников.
Плюс ты пролистал GoF и вызубрил ты же олимпиадник паттерны aka фиксы ущербности ООП.
Хотя лучше бы SICP осил бы или Haskell.

Но с чего ты взял, что ты можешь стать хорошим программистом и писать понятный и поддерживаемый код?

Ответы920583920584

28 Янв, 00:00 #44 #920583

>>920572
Потому что мне нравиться кодить, мне интересна платформа и я хочу изучать ее. Или у нас в кодерах только те у кого на левой ягодице метка, спец службы находят их и они в яслях пишут проекты на миллион? Я не ебаный избранный Нео. Но я хочу въёбывать над тем что мне интересно.

Ответы920615921092

28 Янв, 00:02 #45 #920584

>>920572
С зубрежкой хуево кстати.

28 Янв, 00:48 #46 #920615

>>920583
Кодь и не обращай ни на кого внимания, можешь даже код понятный не писать. Про олимпиады, впрочем, никому не рассказывай в контексте разработки.

122 Кб, 297x283

28 Янв, 02:55 #47 #920665

Правильно ли я понял что для каждого типа экрана следует клепать свою формочку?
https://developer.android.com/training/basics/supporting-devices/screens.html

Ответы920744

28 Янв, 11:48 #48 #920730

>>920496
notifyItemRemove? можно еще в сторону diffUtill посмотреть, люди его советуют юзать. Но у меня пока руки не дошли

28 Янв, 11:52 #49 #920739

Гайс, а че тут все так на стор ио дрочат? Нативный sqlite уже не котируется?

28 Янв, 12:01 #50 #920744

>>920665
Нет, делай сразу растягиваемые формочки.

Ответы920928

28 Янв, 13:56 #51 #920788

Решил изучить разработку под мобильные усройства. Загрузил Андроид студио - и немного присел. Виснет "намертво" после долгой загрузки главного окна.
Какие ему нужны системные требования-то? Нет среды разработки полегче? Как мне быть то :(

2гига ram, 2 ядра на пассивном охлаждении, до этого момента с тормозами не сталкивался

Ответы920829

28 Янв, 14:18 #52 #920803

>>920493
олимпиадник в общем то может рассчитываться как оскорбление, ибо олимпиадный код всегда нарушает овердохуя правил нормального кода проекта

28 Янв, 15:21 #53 #920825

Слушайте, андроидокуны. А что вы все время разрабатываете? Вот реально интересно стало. У меня идей нет совсем, вот прям совсем. Всё ведь есть уже, а игори один кодер не сделает. Какое такое приложение можно сделать, чтоб заебись и не ебаться с нейросетями? Уже и парсеры всевозможные есть, и погодные аппы, и агрегаторы и справочники, и поисковики и пиздец. В общем, уже есть всё, так что же сделать такое, чего нет?

Ответы920832920880921040

28 Янв, 15:23 #54 #920827

Как поменять цвет фона в контекстной и бар-менюшке? Это делается через стили, я правильно понял?

Ответы927084

28 Янв, 15:42 #55 #920829

>>920788
>Виснет "намертво" после долгой загрузки главного окна.
Попробуй увеличить heap до 1Gb
>Нет среды разработки полегче?
Eclipse

28 Янв, 15:50 #56 #920832

>>920825
> А что вы все время разрабатываете?
Очередной клиент к рестопараше, тысячи их.
КАЧАЙ @ ПОКАЗЫВАЙ @ КАЧАЙ @ ПОКАЗЫВАЙ @ КАЧАЙ @ ПОКАЗЫВАЙ @ КАЧАЙ @ ПОКАЗЫВАЙ
Уже блевать охото.

28 Янв, 16:34 #57 #920880

>>920825
Что ты так боишься ебли с нейросетями, бля? Все эти распознавалки хуйни давно закодили.
А вообще, углубление обычно идёт в конкретную область. Например, какая-нибудь специфическая ебля с системными настройками, через всякие дырки в системе. Или там сетевой клиент по какому-нибудь протоколу. Или ещё какая хуйня со сложными вьюхами

28 Янв, 16:36 #58 #920885

>>919922
>вкатиться джуном в киев
Чувак, джуны в киеве не нужны уже как пару лет. Тебе надо думать об иммиграции

Ответы920924

28 Янв, 16:38 #59 #920889

>>919746
Я бы немного рассказал про процессы в юниксе, UI-поток в ведре. Потом структура приложения и схема его работы. Потом - активити и прочее

28 Янв, 17:43 #60 #920924

>>920885
а в иммиграции джуны нужны что ли?

28 Янв, 17:48 #61 #920927

>>920541
Просто осознай суть, и пили свой велосипед, который будешь на протяжении нескольких проектов подтачивать. MVP у каждого свой, вопрос предпочтений же. Можешь посмотреть статьи Mosby о его вариации

28 Янв, 17:50 #62 #920928

>>920744
фи, а кто будет делать разный дизайн для телефонов, 7' и 10' ?

28 Янв, 17:57 #63 #920930

Возвращается кэширование-очень-нужно-ананас из предыдущего треда. Вопрос следующий, насколько вменяема модель поведения в контексте мессенджера:
1) подключаемся на прослушку сокета после получения токена сессии, все сообщения полученные по этому каналу сплитим, в зависимости от данных в json-ах, приводя к нужным типам данных.
2) после получения обновления - пишем в базу, с использованием реактивной DAO обертки. Суть в том, что далее все подписчики по нужным эвентам будут извесчены что есть новые данные в таблице и будут получены с их стороны данные об измененном/добавленном ресурсе.
3) подписчик в лице презентера соответственно подписывается в начале жизни на нужный DAO, буфферит изменения, как только к нему байндится вьюха - сплевывает в нее свежие данные из бд. Так же обновляет в реальном времени.

Меня лично пугает немного сложность, когда расписываю это на словах. Но поскольку нужно, чтобы все быстро грузилось, и показывались обновления в реальном времени (а пинг до сервера около полутора секунд) - понятное дело нужно ввести кэш, и более вменяемой реализации его я не придумал.

Expiration будет скорее всего просто по количеству записей. То есть храним n-ное количество переписок, обновляя данные по ним, когда создается новая или старая выходит в топ - трем каскадно все таблицы связанные с перепиской последней по обновлению и вносим новую

Ответы921062

28 Янв, 20:25 #64 #921040

>>920825
> что же сделать такое, чего нет?
Найди работу ba dum tss*
тогда и не будешь задавать такие тупые вопросы

28 Янв, 21:00 #65 #921062

>>920930
>нужно, чтобы все быстро грузилось, и показывались обновления в реальном времени (а пинг до сервера около полутора секунд)
Для мессенджера как по мне похуй, мне тян не отвечают по полтора часа а потом пишут извини занята.

28 Янв, 21:34 #66 #921086

Допустим, есть служба, которая даже при всех закрытых activity делает что-то каждый час, например. И отображает счетчик в activity.

Если делать таймер через залупленный CountDownTimer - телефон не войдет в sleepmode так?

Я правильно понимаю, что такое нужно делать через AlarmManager?

Но ведь из AlarmManager нельзя вытащить прошедшее время, а мне нужно, чтобы при открытии activity отображался актуальный счетчик оставшегося до исполнения времени.

И при этом, чтобы телефон мог баиньки. Как усидеть на двух стульях?

Ответы921091

28 Янв, 21:49 #67 #921091

>>921086
Что думаете про такой вариант?
1) Activity сворачивается\умирает
-CountDownTimer останавливается записывается текущее время\дата ирл.
-Стартуется AlarmManager с оставшимся временем на счетчике

2.1) Если до конца таймера activity не возобновляется - AlarmManager делает свое черное дело до конца.
2.2) Если до конца таймера activity возобновляется - AlarmManager прибивается, вытаскивается сохраненное время\дата ирл и сравнивается с текущим время\дата ирл, чтобы определить сколько времени прошло.

Как еще можно сохранить счетчик, не насилуя батарею?

28 Янв, 21:50 #68 #921092

>>920583
Не слушай даунов, кодинг — примитивный макакинг (особенно когда идёт речь про мобилки или веб) и стать кодером может вообще любой, не нужно утруждаться вопросами «смогу ли я». Просто делай и всё будет хорошо.
А олимпиадник это даже плюс, довольно хорошо развивает как программиста и даёт некоторые навыки написания эффективного кода.

93 Кб, 470x585

28 Янв, 22:27 #69 #921103

Как убрать индексирование изображений в отдельной папке?
Создал файл .nomedia, почистил кэш, остановил службы, отвечающие за галерею (вроде как все), ребутнул смартфон и все-равно этот ебучий андроид добавляет мою порнуху с понями в галерею.

29 Янв, 00:17 #70 #921163

Ее-е а кто это на ОП пике?

Ответы921384

29 Янв, 03:30 #71 #921279

Вопрос про использование MVVM в андроиде.
В WPF он есть. В AngularJS он есть. В андроиде вообще нихуя нету? Только MVCP, только хардкор?

Ответы921388921595

29 Янв, 12:53 #72 #921384

>>921163
Так это ОП и есть. Ты ньюфаг что ли?

20 Кб, 500x251

29 Янв, 13:02 #73 #921388

>>921279
Хочешь MVVM — бери и делай MVVM.
> В андроиде вообще нихуя нету?
Архитектура в твоём приложении, а не в андроиде.

Ответы921414

29 Янв, 13:26 #74 #921400

Аноны, поясните: нахуя в clean architecture и им подобных используется отдельный набор сущностей для domain-слоя, если он управляет чисто обработкой? Алсо, когда вам нужен только один параметр из сущности, добываемой из репозитория (url из аудио или изображения, юзернейм из юзера и т.д.) - в каком слое вы разбираете эту сущность, и передаёте отдельный параметр дальше?

Ответы921588

29 Янв, 13:52 #75 #921414

>>921388
Архитектура может быть ограничена сдк ведра, тот же злоебучий контекст например.

Ответы921423

29 Янв, 13:56 #76 #921423

>>921414
Ну и какая тебе нахуй архитектура, если ты даже от контекста абстрагироваться не научился? Возвращайся, когда поумнеешь, тогда можно будет и архитектуру обсудить.

29 Янв, 18:24 #77 #921588

>>921400
Потому что он может содержать больше/меньше информации чем нужно пользователю. В presentation-слое у тебя должна быть модель со всей нужной информацией для показа на экране.
Пример: отобразить информацию о покупке приложения, в domain-слое у тебя будут отдельные TransactionInfo, ApplicationInfo, в presentation ты передаешь какой-нибудь ApplicationPurchaseInfo в котором будет только то что нужно для отображения на экране.
В случае изменений в TransactionInfo или ApplicationInfo они останутся в domain-слое.

На примеры лучше не смотри, они говно, вот например репозиторий с 7к звезд, найди два отличия:
https://github.com/android10/Android-CleanArchitecture/blob/master/domain/src/main/java/com/fernandocejas/android10/sample/domain/User.java
https://github.com/android10/Android-CleanArchitecture/blob/master/presentation/src/main/java/com/fernandocejas/android10/sample/presentation/model/UserModel.java

29 Янв, 18:29 #78 #921595

>>921279
В андроиде есть DataBinding - https://developer.android.com/topic/libraries/data-binding/index.html - тот же WPF но сильно упрощенный.
Но я считаю что писать код в xml это зло, если так хочется mvvm, смотри в сторону Rx bindings

Ответы921625

29 Янв, 19:44 #79 #921625

>>921595
Спасибо бро.
Зло, описывать всю логику взаимодействия контроллера с вьюхой через биндинги. Но для простецких задач, типа, привязки полей модели к инпутам вьюхи - вполне себе норм. Не нужно писать кучу ненужного кода и заняться решением бизнес задач.

29 Янв, 20:21 #80 #921662

А есть ли какой-то способ не используя ContentProvider получать уведомления об изменении контента в базе данных ?

Ответы921881921892

30 Янв, 10:11 #81 #921881

>>921662
В StorIO есть rx обертка над ним. А так - нет.

30 Янв, 10:24 #82 #921892

>>921662
Ну в общем то, была бы она на rx2 - я бы не рыпался, но увы. Поскольку проект висит на rxJava2 - то не могу позволить себе подключить первый только ради этого

Ответы921920

30 Янв, 10:42 #83 #921903

Хм, а как лучше организовать общую абстракцию для работы с сервером и с базой - предоставлять фабрики DAO для каждого из ресурсов из репозиториев и сводить к одному в модели c добавлением хэндлеров на случаи ошибки ?

Ответы921908921915921921

30 Янв, 10:57 #84 #921908

>>921903
А зачем тебе общая абстракция для сервера и базы? Это как-бы разные вещи. Или у тебя ремоут база с которой ты тоже по хттп общаешься?

30 Янв, 11:39 #85 #921915

>>921903
Пытаюсь попробовать на уровне модели разобраться со свичем между загрузкой с сервера и из базы с сохраненными ранее данными

30 Янв, 12:15 #86 #921920

>>921892
Просто подключаешь interop, тебе не нужно подключать первую.

Ответы921932

30 Янв, 12:15 #87 #921921

>>921903
Паттерн репозиторий

Ответы922784

30 Янв, 12:39 #88 #921932

>>921920
Что? Можешь попродробнее ?

Ответы921982

30 Янв, 14:04 #89 #921982

>>921932
https://github.com/akarnokd/RxJava2Interop/blob/master/README.md

30 Янв, 16:33 #90 #922077

А кто-нибудь делал тут unit-тестинг своих классов, использующий storIO ?

Ответы922311923025

30 Янв, 16:51 #91 #922087

В частности интересно как проверить работу sqlite триггеров

30 Янв, 18:43 #92 #922250

Приветствую. Читаю про Даггер вот это https://habrahabr.ru/post/279125/ и не могу понять как использовать конструкторы модулей.
Я так понял, модули ты пишешь не для себя, а для компонента, который будет их использовать. В смысле, ты в коде модулей вообще не касаешься. А как тогда использовать конструктор, чтобы передать тот ж контекст?
Или я все неправильно понял?

Ответы922467

30 Янв, 19:28 #93 #922297

Поясните про это гуглоподелие? Для теста компилятора брал таймзоны ftp://ftp.iana.org/tz,
вывод показал кучу несоответствий стандартам POSIX. Как Андроид работает с этой датабазой несоответствующей POSIX?

30 Янв, 19:35 #94 #922311

>>922077
Юниттестировать классы, работающие с бд - пердолинг, бесполезный, если все делать по правилам.
Куча ненужного кода, который уже реализован в тестируемом классе. А использовать уже написанный нельзя - ведь "азаза не независимый тест". В итоге тратишь на тесты времени больше, чем на тестируемый код.

Либо вертеть на хую фанатиков независимых тестов, и тестировать в качестве "интеграционных тестов", в определенном порядке.

Ответы922335

30 Янв, 19:48 #95 #922335

>>922311
Например, тебе нужно протестировать метод, который удаляет что-то из базы данных.

И чтобы это было юниттестом, ты не должен использовать уже написанный и оттестированный метод записи в бд.

Ты должен написать костыль записи тестового значения, который сфейлится при изменении структуры бд, или просто не будет работать так, как нужно - ведь никто не будет писать тест на тест.

В итоге то, что ты мог уместить в две строчки. используя готовый и оттестированный метод - будет раздуто в раздутую глючную хероту.

Но зато юнит-идеалисты будут довольны.

Ответы922343

30 Янв, 19:52 #96 #922343

>>922335
И опять же, при изменении структуры бд тебе всегда придется переписывать тесты вместе с методами.

Лучше и аккуратнее и менее ресурсозатратно - тестировать методы, работающие с бд, последовательно.
Создал, записал, вытащил, проверил, удалил.

30 Янв, 21:30 #97 #922459

Ничего не могу найти на этот вопрос. Виджеты разделяют с приложением экземляр application или нет?
То есть, общие глобальные переменные через него возможно делать?

Ответы922470

30 Янв, 21:39 #98 #922467

>>922250
Если у тебя есть модули с конструктором ты их сам создаешь и передаешь компоненту при его создании.
Пример из твоей же статьи:
[CODE]protected AppComponent buildComponent() {
return DaggerAppComponent.builder()
.appModule(new AppModule(this))
.build();
}[/CODE]

Ответы922485923084

30 Янв, 21:40 #99 #922470

>>922459
Да, applicationContext у вас один.

30 Янв, 21:49 #100 #922485

>>922467
спасибо

30 Янв, 22:02 #101 #922508

https://habrahabr.ru/post/320242/
Господа, кто-нибудь реально убирает ифы в своих адаптерах, и пишет подобный велосипед? Это же полный пиздец и код ради кода, нет?
Если, например, у вас адаптер работает в двух режимах отображения элементов, в зависимости от параметра X - придётся либо использовать ифы, либо устраивать велосипед из енамов енамов.

Ответы922786944915

30 Янв, 23:01 #102 #922613

Призываю тех кто много кодит приложух. Вот смотрите, в веб-программировании, нужно подгонять сайт под различные разрешения и браузеры. А как с этим обстоят дела в андроид? Нужно ли пердолить приложение под каждый телефон, версию андроида итд? Сильно ли это заебывает или всё просто? Казалось бы джавовское write once run anywhere, а на деле хуй.

Ответы922672922688922690

30 Янв, 23:35 #103 #922672

>>922613
Пиздуй в гугл, все это разжевано донельзя.
Write once run anywhere больше касается архитектуры, радуйся что тебе не нужно задумываться "так это x86, тут sequential consitency, а вот тут для arm, нужно добавить memory fence иначе процессор может поменять инструкции"

Ответы922680922689

30 Янв, 23:38 #104 #922675

Пиздец какой-то, зачем гугломакакии назвали widget пакет с различными классами view?
Нагуглить что-то путнее про сами виджеты очень сложно, как примеры так и статьи, 90% поиска забито херней уровня android.widget.TextView.

Ответы922679

30 Янв, 23:40 #105 #922679

>>922675
> зачем
Чтобы js-макакам было неприятно.

30 Янв, 23:43 #106 #922680

>>922672
Та нихуя там нету. Интересует мнение местных ананасов.

31 Янв, 00:00 #107 #922688

>>922613
>Казалось бы джавовское write once run anywhere, а на деле хуй.
Примеры приведи.

31 Янв, 00:01 #108 #922689

>>922672
Разные разрешения и версии дроида есвенно. Второе фиксица библиотеками поддержки которые дают в старые версии функцианал новый. Но иногда бывают нюансы. В 5 дроиде появился материал дизигн, в 6 безопасность слегка поменяли. Версии ниже 4 почти не поддерживают.

31 Янв, 00:02 #109 #922690

>>922613
У явы ток кор нормальный все потуги в гуи - фейл завязаный на платформе а не вм

31 Янв, 00:52 #110 #922720

>>919538 (OP)
Аноны, мне надо сделать тестовый компонент даггера, но в тестовой директории почему то не генерируется класс компонента, как быть?

31 Янв, 03:17 #111 #922784

>>921921
Двачую. А лучше Unit of work. А еще лучше CQRS, но это хайлевел.

31 Янв, 03:22 #112 #922786

>>922508
Забей хуй. Это для мамкиных GoF адептов, недавно прочитавших про хуяттерны и пытающихся внедрить их везде где можно и нельзя. Используй KISS и YAGNI.

31 Янв, 10:26 #113 #922866

Есть сайт с кривым недокументированным api. Есть android приложение которое это api пользует. Как бы мне посмотреть какие http запросы отправляет приложение?

Ответы922879922914922986

31 Янв, 11:08 #114 #922879

>>922866
Вот возьми и погугли это.

31 Янв, 12:18 #115 #922914

>>922866
поставь прокси в настройках wifi + Fiddler

31 Янв, 15:15 #116 #922986

>>922866
Если поставить запустить его через debag - там же будет url запроса в логах.

31 Янв, 16:00 #117 #923025

>>922077
Ну к слову, сейчас начал пробовать сделать это как у них в сэмпле, вроде как не нужно менять свои классы, с роболектриксом то. Пока что правда запустить не удалось, но это вроде бы у меня косяки с SQL синтаксисом

31 Янв, 16:50 #118 #923084

>>922467
А как сделать, чтоб DaggerAppComponent начал компилиться? Ребилд не помогает

Ответы923406

31 Янв, 18:44 #119 #923209

Народ, помогите.Я еще нуб. Пилю небольшое приложение, нужна помощь с SQlite. Можете подкинуть ссылки на проекты с ее использованием? Просто, много инфы с простыми примерами, которые я понимаю. Но мне надо например пример с использованием SQ-ных VIEW, триггеров и т.д. Когда много таблиц. А то что-то сижу и не вдупляю ни хрена.

Ответы923390

31 Янв, 20:28 #120 #923337

>>919538 (OP)
Как тестить метод презентера с rxjava? Понял, что надо менять оба scheduler'a на immediate, но при нем тест падает в throw new RuntimeException(...) хотя это должно обработаться в subscriber'е в onError

Ответы923410

31 Янв, 21:20 #121 #923390

>>923209
https://sqlite.org/lang_createview.html
https://www.tutorialspoint.com/sqlite/sqlite_views.htm

https://sqlite.org/lang_createtrigger.html
https://www.tutorialspoint.com/sqlite/sqlite_triggers.htm

http://zametkinapolyah.ru/zametki-o-mysql/tema-14-view-v-sql-na-primere-bazy-dannyx-sqlite-create-drop-update.html

Ответы923454

31 Янв, 21:31 #122 #923406

>>923084
Когда использовал его - замечал что нужно использовать где-то модуль, чтобы он начал билдиться. То есть отдельно модуль без компонент и без инжектов иногда билдиться не хотел

Ответы923409

31 Янв, 21:32 #123 #923409

>>923406
UPD: аналогично - с компонентами, нужно их использовать где-то

31 Янв, 21:33 #124 #923410

>>923337
Показывай код.

Ответы923418

31 Янв, 21:41 #125 #923418

>>923410
беру данные из инета, если IOException беру из бд, если там пусто делаю вот так:
if (data.isEmpty())
throw new RuntimeException(throwable);
т.е. просто пробрасываю дальше, на девайсе всё работает как надо, а тест падает именно тут - throw new RuntimeException(throwable);

Ответы923421

31 Янв, 21:44 #126 #923421

>>923418
Нормальную ошибку кидай, а не рантайм, может помочь. Если к слову кидаешь внутри какой-то функции - то нужно в ней же и отлавливать, вроде как. То-ли баг, то-ли фича, черт его разберет

Ответы923428

31 Янв, 21:46 #127 #923427

А есть ли какая-то возможность на время выполнения AFTER %OPERATION_NAME% SQLite-триггера отложить все запросы и выполнить после завершения запроса триггера ?

Ответы923435

31 Янв, 21:46 #128 #923428

>>923421
так если я его там отлавлю то в onError ничего не придет, а мне надо туда, это именно какая то хуйня с immediate шедулером, как мне кажется

Ответы923434923438

31 Янв, 21:52 #129 #923434

>>923428
попробуй observable конвертнуть в блокирующий - toBlocking()
А вообще вот эта хуйня с перекидыванеим это игрушка дьявола ежжи, надо оборачивать как все крутые посоны, возьми какую-нибудь имплементацию Try с гитхаба, или свою напиши по мотивам.

Ответы923436923441

31 Янв, 21:52 #130 #923435

>>923427
Что мешает заменить AFTER на BEFORE? Сначала срабатывает триггер, потом уже запрос.

Ответы923442

31 Янв, 21:56 #131 #923436

>>923434
>хуйня с перекидыванеим
>возьми какую-нибудь имплементацию Try с гитхаба
ты о чем?

Ответы923733923736

31 Янв, 21:57 #132 #923438

>>923428
Забей на immediate scheduler и используй TestSubscriber.

Ответы923439

31 Янв, 22:01 #133 #923439

>>923438
так где его использовать? вот у меня в презентере есть метод - получить данные, проверить их и послать вью, или послать во вью ошибку, и я хочу проверить какие методы вью вызываются

31 Янв, 22:02 #134 #923441

>>923434
Не слушай глупенького мальчика, не делай асинхронный код блокирующим

31 Янв, 22:03 #135 #923442

>>923435
То, что триггер должен срабатывать после INSERT-а, очевидно же, лол

Ответы923448

31 Янв, 22:13 #136 #923448

>>923442
>То, что триггер должен срабатывать после INSERT-а, очевидно же, лол
>А есть ли какая-то возможность на время выполнения AFTER %OPERATION_NAME% SQLite-триггера отложить все запросы и выполнить после завершения запроса триггера ?
Вот совсем не очевидно, знаешь ли.
Давай лучше пример покажи, что ты хочешь сделать. Например "Хачю штоб после вставки значения в столб INTEGER Рост, если Рост меньше 180 - в столб BOOLEAN Карлан-унтерменш записывалось True."

Ответы923489

31 Янв, 22:18 #137 #923454

>>923390
Спасибо! Но мне интересно как это в контексте андроид приложения описывается. Есть какие-то примерчики?

Ответы923472923486923491

31 Янв, 22:31 #138 #923472

>>923454
Есть. Который ты напишешь и над которым поколдуешь сам.
Тут вроде как нет отличий в применении от других SQL запросов в андроиде. А на практике такие вещи лучше усваиваются, после череды выстрелов в ногу.

31 Янв, 22:41 #139 #923486

>>923454
То есть, ты же любой пример по SQL в андроиде можешь взять, если не знаешь, как работать в нем с запросами. Зачем искать пример по каждому элементу запроса именно на андроиде, которых всегда будет недостаток, чем менее попсова нужда?

View и trigger это же уже из области проектирования структуры твоей бд под твои нужды, что от андроида зависит чуть менее, чем никак.

31 Янв, 22:43 #140 #923489

>>923448
Хочу чтобы после операции добавления проверялось количество записей по предикату и если оно превышает определенный размер - шло рекурсивное удаление записей по другому предикату, до тех пор пока общее число не станет равным капу

Ответы923509923595

31 Янв, 22:43 #141 #923491

>>923454
SQLiteDatabase.executeSQL(%вот сюда пихаешь свой ништяк%);

Ответы923610

31 Янв, 23:04 #142 #923509

>>923489
CREATE TRIGGER audit_log AFTER INSERT
ON COMPANY
BEGIN
....INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime('now'));
END;

Этоя просто выдернул из примера для наглядности синтаксиса.
По сути то, что между BEGIN и END - это обычный такой подзапрос. То есть, он строится может без оглядки на внешний блок.
То есть, нужно вычленить из
>Хочу чтобы после операции добавления проверялось количество записей по предикату и если оно превышает определенный размер - шло рекурсивное удаление записей по другому предикату, до тех пор пока общее число не станет равным капу
"Хочу чтобы проверялось количество записей по предикату и если оно превышает определенный размер - шло рекурсивное удаление записей по другому предикату, до тех пор пока общее число не станет равным капу"
И на этом строить запрос, словно никакого триггера нет. Как бы ты строил без него. Потом обернуть синтаксисом тригера.

Ответы923517

31 Янв, 23:16 #143 #923517

>>923509
Бойлерплейт ==> в пизду, в рот ебал каждый запрос на дцать строк ужирнять

Ответы923587

01 Фев, 01:13 #144 #923587

>>923517
Ну так не нцать должно выйти. Я сейчас поэкспериментировал и уменя получилось что-то вроде такого.

CREATE TRIGGER IF NOT EXISTS myTrigger
AFTER INSERT ON MyTable
WHEN ((SELECT COUNT(*) FROM MyTable) > 5)
BEGIN
...DELETE FROM MyTable;
END;

В итоге после превышения 5 записей в бд - все удаляется. Но можно заменить на удаление с условием, например.

Ответы923588

01 Фев, 01:27 #145 #923588

>>923587
Но я хз, что делать, если даже после всех удалений строк по условию останется больше строк в итоге, чем нужно.
Разве что по id или timestamp самые старые чистить, например.

Ответы923723

01 Фев, 01:45 #146 #923595

>>923489
Мне аж интересно стало, по какому критерию будешь удалять записи, чтобы их гарантированно стало определенное число?
Мне никакой вариант без сортировки в голову не приходит.

Ответы923724

01 Фев, 03:20 #147 #923610

>>923491
Вот! Спасибо! Это то что я спрашивал как раз.

01 Фев, 11:23 #148 #923723

>>923588
for each row с условием достаточно

01 Фев, 11:25 #149 #923724

>>923595
MIN(datetime(...))

Ответы923726

01 Фев, 11:26 #150 #923726

>>923724
причем с LIMIT 1 на случай одинаковых до мс штампиков

01 Фев, 11:39 #151 #923733

>>923436
Я говорю плохо в цепочке выкидывать какие-то левые исключения. А если обернуть в монадку то ты в onNext возьмешь и обработаешь верный результат одним макаром, ожидаемые ошибки (файл не найден) другим, а фатальные ошибки третьим способом, onError предназначен для фатальных ошибок.

Ответы923736

01 Фев, 11:43 #152 #923736

>>923436
>>923733
То есть для того же retrofit'a можно использовать и Observable<Response<?>> и Observable<Result<?>>, зависит от того где ты хочешь рбрабатывать IOException и HttpException

01 Фев, 11:55 #153 #923739

>>919538 (OP)
Поясните, не лучше ли для простых приложений
юзать веб-морду (на хтмл5+ксс) вместо
интрефейса на джаве?
Сервер на питоне.

Ответы923740923749

01 Фев, 11:58 #154 #923740

>>923739
Если тебе наплевать на качество, то да, лучше.

01 Фев, 12:16 #155 #923749

>>923739
>Сервер на питоне.
Хорошее приложение от этого (серверного языка) не зависит от слова никак.

Ответы923771

01 Фев, 12:54 #156 #923771

>>923749
Не скажи, при плохой серверной части от приложения требуется заметная оптимизация по запросам и политике обновления данных

Ответы924327

01 Фев, 21:08 #157 #924141

>>919538 (OP)
С Robolectric возможно тестировать recyclerview? Надо протестить scrollListener, че то он вообще не вызывается, хотя в адаптер recyclerview кладу данные и двигаю layoutmanager к концу

Ответы924618

49 Кб, 500x500

01 Фев, 22:35 #158 #924222

>>919538 (OP)
Сап, андроидач.
Есть одно клиент-серверное приложение. Веб-сервис на пхп, и два клиента - сайт и приложение. Авторизация происходит на клиентах через гугл.

ВНИМАНИЕ ВОПРОС
Сейчас пилю платную версию приложения, в которой будут доступны некоторые фичи. Необходимо на веб-сервисе запилить проверку что пользователь купил приложение. Api для этого не нашёл.
Какие варианты?

Ответы924255924310924311

01 Фев, 23:23 #159 #924255

>>924222
Проверять по логину? Раз все равно авторизация.

02 Фев, 00:17 #160 #924310

>>924222
http://stackoverflow.com/questions/23266196/get-gmail-profile-image-and-full-name/31538053#31538053

02 Фев, 00:20 #161 #924311

>>924222
https://developer.android.com/google/play/licensing/index.html

Ответы924313

02 Фев, 00:23 #162 #924313

>>924311
Хотя, это хуйня как по мне, потому что
>The licensing service generates a single licensing key pair for each application and exposes the public key in your application's Services & APIs page in the Developer Console. You must copy the public key from the Developer Console and embed it in your application source code. The server retains the private key internally and uses it to sign license responses for the applications you publish with that account.

Ответы924314924329

02 Фев, 00:30 #163 #924314

>>924313
В итоге твое приложение декомпилируют на следующий день, и каждый васян будет дрочить твой сервер нахаляву. А если там еще сторонние платные api используются при этом, типа гуглопереводчика - то это ж пиздец, доверять такое гугломартыханам ебучим.

02 Фев, 00:49 #164 #924327

>>923771
Плохо можно написать на любом язык/фреймворка.

02 Фев, 00:51 #165 #924329

>>924313
Это же типа для подписи. Приложение посылает запрос гуглу чекнуть привелегии текущего пользователя. Гугл присылает ответ. Без подписей какой нибудь васян может спокойно подменить ответ гугла своим (в том числе вообще и не пропустить запрос к гуглу). А так ответ подписан дохуя сикретным ключом гугла - и васян его подменить уже не может. А ключ в исходниках это открытый ключ - то что его достанут нихуя не даст. Если конечно у васяна не завалялся квантовый компьютер.

Ответы924447924524

02 Фев, 08:30 #166 #924447

>>924329
Тот же лаки патчер просто подделывает результат проверки.

02 Фев, 10:28 #167 #924524

>>924329
А что мешает провести тривиальный реверсинжиниринг и тупо убрать эту проверку?

02 Фев, 13:00 #168 #924618

>>924141
закинь код на pastebin, гляну

02 Фев, 13:38 #169 #924638

Аноны, кто-то работал с DBFlow? Есть один вопрос по one-to-many.

02 Фев, 19:09 #170 #924845

Котаны, подскажите либу с ручками-крутилками или бесконечный seekbar, который можно крутить и крутить.

02 Фев, 19:16 #171 #924856

Гугл не пустил в маркет, ссылаясь на unauthorized use of copyrighted content in your promotional screenshots.
В этих самых скриншотах только постеры фильмов и фотографии актеров, получается, дело в них.
При этом тысячи приложений используют их подобным образом, и они явно не получали для этого никаких дополнительный разрешений. Как выйти из ситуации?

Ответы924861

02 Фев, 19:20 #172 #924861

>>924856
То, что дозволено барину, не дозволено холопу. Смирись.

02 Фев, 19:27 #173 #924868

Поясните нюфагу:
где-то читал, что при оверрайдинге методов всегда надо вызывать super.*
Хочу в коде оверрайднуть onBackPressed();
но если я вызываю super.onBackPressed() то весь последующий код не работает, если я его не вызываю то все работает как надо.
Вопрос: есть ли в моем случае подводные камни?

Ответы924886924943924963

02 Фев, 20:06 #174 #924886

>>924868
Уверен, что не вызывается? Добавь после вызова super строчку с логом. Например
Log.d("MAAAM LOGI!!", "NU RABOTAET JE!")

Потом запусти приложение через debug и ищи строчку.

Ответы924969

02 Фев, 21:01 #175 #924943

>>924868
> где-то читал, что при оверрайдинге методов всегда надо вызывать super.*
Тебя наебали. Зависит от метода. В случае onBackPressed(); от конретной ситуации зависит.

Ответы924969

02 Фев, 21:26 #176 #924963

>>924868
Если я правильно понял сорцы - активити уничтожается при вызове onBackPressed(). То есть, ты вызываешь дефолтную имплементацию, а активити сдыхает раньше, чем ты пытаешься что-то сделать.

Ответы924965924969924987

02 Фев, 21:26 #177 #924965

>>924963
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/Activity.java

02 Фев, 21:32 #178 #924969

>>924963
Да, видимо так.

>>924943
>>924886
У меня интент возвращает значение, а потом я вручную финишу её, мб лучше вместо финиша вызвать супер? Или супер сам тем же финишем пользуется?

Ответы925045925052

02 Фев, 22:05 #179 #924987

>>924963
Что за бред? Подыхает активити или нет (я уверен, в родительском коде просто вызывается finish или что-то похожее происходит), код не может не исполняться после вызова метода родителя, если не бросается какое-то исключение.
Посиди с отладчиком или логгером, разберись, почему твой код не работает, а не делай такие безумные выводы.

Ответы925041

02 Фев, 22:54 #180 #925041

>>924987
Но чтобы послать intent через LocalBroadcastManager, нужна передать ему контекст.
Что там происходит, когда активити убито? Контекст чего передается и какой вообще?

Ответы925158

02 Фев, 22:58 #181 #925045

>>924969
Можно скопировать дефолтную реализацию, и вставить то что ты хочешь перед finishAfterTransition();

Дефолтную посмотри в сорцах выше.

Ответы925046

02 Фев, 22:58 #182 #925046

>>925045
Благодарю.

02 Фев, 23:06 #183 #925052

>>924969
Хотя, можно и сначала слать intent, потом вызывать super. Это же не конструтор, где это должна быть обязательно первая линия.

03 Фев, 00:04 #184 #925095

Является ли нормальной практикой класть в общий для всего приложения класс application какие-то долговременные результаты типа обработанных данных, которые потом можно вставить в разные activity или виджеты?

Ответы925117

03 Фев, 00:28 #185 #925117

>>925095
Нужен отдельный класс для хранения. Или вообще контент провайдер. На и на память смотреть нужно. Если данные легко получить заново, то лучше их не хранить (если они памяти много занимают). Или там настроить освобождение памяти в onLowMemory. Но в общем идея хорошая.

Ответы925133

03 Фев, 00:54 #186 #925133

>>925117
Все бы ничего, но виджет не только отображает данные, но и позволяет минимум манипуляций с ними. Пока он есть, сабкласс application может быть прибит? Я читал, что они находятся в одном процессе же.

А то выйдет, что виджет, допустим, текст отображает, а самой переменной нигде уже нет, application прибит.

Ну, грубо говоря, например виджет показывает число 5, и при нажатии на кнопку число должно возводиться в квадрат.

Вот если бы во время существования виджета у него был свой свой экземпляр класса в памяти, в котором можно было это число хранить - проблемы бы не было, наверное, но его нет, и за обновление отвечает AppWidgetProvider, который долго не живет.

Как вот сохранить это самое 5, чтобы передать его службе или activity при нажатии где-то на виджете? В файлике каждый раз при обновлении виджета записывать значение, может?

Либо я вообще зря себе мозг ябу и при смерти application виджет тоже схопнется?

Ответы925140

03 Фев, 01:02 #187 #925140

>>925133
Просто я наткнулся вот на это
http://www.developerphil.com/dont-store-data-in-the-application-object/
И если это правда, то там нельзя хранить что-то помимо констант, выходит, потому что в середине работы все кроме них может пропасть.

Ответы925154

03 Фев, 01:34 #188 #925154

>>925140
Хм, можно же поля в application задавать через setter, а в нем дублировать в файл.
Если application и перезапустится - то данные восстановятся через указание в onCreate() ручками. Так что не так уж тщетно бытие, видимо.

03 Фев, 01:50 #189 #925157

И все же, если виджеты и application работают в одном процессе - почему мы используем remote views и pending intent? Сдается мне, что тут что-то не так.
К тому же виджет рендерится отдельно хостом, не? При смерти application по-умолчанию не должны же с ним какие-то изменения происходить, не?

Ответы925159

03 Фев, 01:51 #190 #925158

>>925041
Контекст активити. В момент закрытия, активити жива. И остается жива долгое время, как минимум до окончания вызова onDestroy.
Далее уже точно не знаю, надёжнее всего считать, что активити не существует. Хотя наверняка можно будет ещё контекстом пользоваться.

03 Фев, 01:57 #191 #925159

>>925157
> И все же, если виджеты и application работают в одном процессе - почему мы используем remote views и pending intent? Сдается мне, что тут что-то не так.
Не работаем в одном процессе. В твоём процессе есть только бродкаст ресивер, который получает события для манипуляции с виджетом.

Ответы925161

03 Фев, 02:02 #192 #925161

>>925159
Хм. Так я и думал, что бы там на stackoverflow не писали.
В общем, контент виджета и активити никак не выйдет гарантированно держать синхронизированным без файла, выходит.

Ответы925167

03 Фев, 02:29 #193 #925167

>>925161
Выйдет. Просто надо виджет прямо в активити обновлять, когда нужно. Ты волен это делать где угодно и когда угодно.

Ответы925170

03 Фев, 02:35 #194 #925169

Допустим, приложение раз в час создает новый контент и создает notification о поступлении.

Так ли критично, чтобы пользователь при нажатии попал именно в activity с инфой из уведомления?

Могут ли подорваться до 1чек чьи-то жопы, если, допустим, уведомление висит нетронутым, пользователь получает все новую и новую инфу в самом приложении, потом жмет на уведомление и... Попадает на то же самое место, на котором остановился, а не на то, которое в уведомлении?

Является ли обратное удобной фичей, или же пустым пердолевом для аутистов?

Ответы925215

03 Фев, 02:37 #195 #925170

>>925167
Не, тогда он станет полностью бессмысленным. У него должна быть некоторая самостоятельность, а не просто плашка с отображением.

03 Фев, 08:47 #196 #925215

>>925169
Зависит от задач которые ты ставишь перед интерфейсом. Если, к примеру, ты хочешь чтобы он был "удобным" то одна из целей - минимизировать количество действий пользователя. Тоесть тебе нужно прикинуть возможные сценарии действий пользователя которые он захочет совершить после получения уведомлений и при нажатии пользователь должен попадать на активити которая позволит ему совершать минимум действий (в среднем). Если, к примеру, ты хочешь максимизировать показ рекламы - то после нажатия пользователь должен попадать на рекламу. Ну и так далее.

Ответы925343

03 Фев, 13:03 #197 #925343

>>925215
Вот от рекламы точно будут 1-чки

04 Фев, 10:15 #198 #926155

Java-тред удалён. Даже моча понимает, что Java не нужна, потому что есть Kotlin

Ответы926257

04 Фев, 13:36 #199 #926257

>>926155
Не нужен.

Scala-бог.

Ответы926261

04 Фев, 13:40 #200 #926261

>>926257
Не нужна.

Haskell-властитель-богов

Ответы926266

04 Фев, 13:52 #201 #926266

>>926261
Не, ну так-то да, но под андроид на хаскеле тяжеловато будет.

Ответы926297

04 Фев, 14:54 #202 #926297

>>926266
Вопрос желания извращаться же, как по мне, так можно на простых проектах использовать что нравится (хоть хаскелль, ей богу), а вот большие (больше 6-7 модулей, наверное, и тысяч за 150 строк кода в совокупности без тестов) уже только на java. Ибо на данный момент она банально менее багована и по ней больше доков + больше фичь есть (тот же Unsafe, ога)

05 Фев, 05:16 #203 #926874

onReceive в AppWidgetProvider реально перепилить на прием кастомных неявных intent'ов? Прописываю в манифесте, проверяю в самом методе - и никакой реакции.

Ответы926875

05 Фев, 05:47 #204 #926875

>>926874
В обсчем, как послать intent в AppWidgetProvider из activity?

05 Фев, 14:52 #205 #927054

Анон, в качестве практического опыта хочу сделать какую-нибудь приложение под андроид на react native.

Вопрос в том что лучше сделать. Можно и просто что-то на отъебись, можно попробовать интересное.

Думал вот сделать показ анекдотов категории б, но может есть еще какие интересные идеи?

Ответы927530

05 Фев, 15:38 #206 #927084

>>920827
Bump

05 Фев, 16:49 #207 #927124

>>919538 (OP)
У меня есть сервис(intent), который в фоне синхронизирует локальную бд с апи. И по окончанию этого процесса мне из сервиса нужно дернуть метод фрагмента, который обновит ui. Все что гуглится это какие-то костыли или непонятно что и я уже подумываю не заменить ли сервис на лоадер. Как-то по нормальному это сделать можно?

Ответы927126927159

05 Фев, 16:51 #208 #927126

>>927124
Очевидный bind.

Ответы927127

05 Фев, 16:53 #209 #927127

>>927126
Очень оперативный анон, я в доках прочитал, что "Привязанная служба обычно работает, пока другой компонент приложения привязан к ней"

а мне вроде как надо чтобы сервис отработал до конца в любом случае. Или этот как-то можно обойти?

Ответы927161930091

05 Фев, 17:34 #210 #927159

>>927124
Бросай локальный бродкаст

05 Фев, 17:38 #211 #927161

>>927127
Бинд может и к уже работающему сервису подключиться, в этом случае анбинд его не остановит. Разберись с сервисами.

05 Фев, 17:56 #212 #927167

Аноны, дайте тутор по Rx.

Ответы927172

05 Фев, 18:06 #213 #927172

>>927167
В примере из codepath .OnSubscribe горит красным. ЧЯДНТ

05 Фев, 19:08 #214 #927209

>>919538 (OP)
Сап, делаю простой текстовый квестик на ведройдике. Есть некий общий лейаут (информация об инвентаре, ранах, сломанных костях, порванных артериях етц) переход на который должен быть доступен с любой локации, с возможностью после просмотра инфы с этого лейаута вернуться на тот, с которого я совершал переход. Сначала хотел через setcontentview организовать, но потом подумалось, что просто натянуть новый лейаут сверху, а при выходе удолить будет проще. Только вот чем вот можно сверху его надеть?

Ответы927235930090

05 Фев, 19:56 #215 #927235

>>927209
гугли backstack.

06 Фев, 11:52 #216 #927530

>>927054
Джентельменский набор:
Todo App, синкающийся с календарем
Трекинг расходов/доходов, с синхронизацией через гугл драйв например
Погодное приложение

06 Фев, 14:54 #217 #927620

Надо сделать клас-обьект для бд. Одно из полей - icon, который в базе будет сохранятся в blob формате. Какой тип использовать для icon?

Ответы927629927880

06 Фев, 15:24 #218 #927629

>>927620
byte[], по крайней мере это то что можно достать их курсора, а так-то тебе наверное битмапка нужна. Но идея не очень.

06 Фев, 16:51 #219 #927702

Безопасно ли прикреплять к notification какой-то intent с рабочим объектом с данными?
С одной стороны, intent явный же, с другой - он летает между приложениями, он совсем не локальный.

Можно ли его спиздить и узнать кусочек внутренней реализации?

Ответы930089

06 Фев, 21:59 #220 #927880

>>927620
Не советую хранить картинки в бд. Но самое главное, не храни их в контент провайдере.

07 Фев, 13:15 #221 #928127

Есть сервис (расширяет Service), который стартуеся по интенту и начинает аплоад файла по апи, загрузка с помощью rx на io, по выполнению возвращается в мейн тред и кидает бродкаст с одним экшоном и результатом если все ок и с другим экшоном если вылетел эксепшн, ловлю ресивером во фрагменте. Ресивер регается в onResume и убирается в onPause. Проблема в том что бродкасты об ошибках до фрагмента доходят, а вот саксес - нет. Пробовал и локальные ресиверы и глобальные, даже в манифесте регал, до него тоже не доходит успешный интент. В чем соль?

Ответы928137928357

07 Фев, 13:43 #222 #928137

>>928127
Вопрос снят, хуй знает в чем проблема, переделал цепочку, теперь бродкаст шлется, но непонятно почему если до onNext доходит в обоих случаях, бродкаст шлется только в одном, мда.

Ответы928357

07 Фев, 15:58 #223 #928226

Репостну сюда, раз уж пилится мое говно все равно под ведро.
>>928197

Ответы928326

07 Фев, 19:50 #224 #928326

>>928226
юзай ретрофит, а там уж как с кукисами работать легко гуглится

Ответы928342

07 Фев, 20:31 #225 #928342

>>928326
Мне кажется, проблема не с куками а с самим запросом, потому что возвращается не страница "ошибка логина" или "логин успешен", а главная. Видимо, с передачей параметров в POST загвоздка.
Но за ссылку спасибо, посмотрю.

07 Фев, 21:04 #226 #928357

>>928137
>>928127
дело было в том, что я использовал setData, а там бывали uri file:// или content:// вот их видать и не пускало, чудно.

07 Фев, 21:16 #227 #928365

аноны как сделать нормально спиннер? обычным способом или можно как то с recyclerview?

Ответы928369930088

07 Фев, 21:19 #228 #928369

>>928365
По моему опыту спиннер не самым очевидным способом готовится. Чем тебе не подходит существующее апи?

07 Фев, 21:42 #229 #928388

Что скажете про долгосрочные курсы Гик Брейнс ? Заинтересовался Мобильной разработкой
https://geekbrains.ru/professions/mobile_developer
звучит красиво и цена неплохая, каково обоснованное мнение Анона?

Ответы928420928429

07 Фев, 22:34 #230 #928420

>>928388
если есть опыт в программировании то не стоит, сам во всем разберешься. Ежили нет, то зависит от упорства, желания или денег. Если есть первые 2 качества, то таки сам до всего дойдешь не потратив ни копейки, но если деньги не проблема - пройди курсы, промотивируй себя тем что заплатил

07 Фев, 23:08 #231 #928429

>>928388
Никогда не связывайтесь с этой конторами и прочими курсами от Васяна.
Годные курсы могут быть лишь у хороших университетов (курсера, едх, степик) и у технологических компаниях уровня Яндекса, JetBrains.
И всегда они бесплатные.

На курсах от Васяна вы будете слушать пересказ официальный документации и решать хеллоуворды из книг серии "ххх for doomies", получите меньше навыков и опыта, чем если бы потратили неделю на самообразование, и сертификат, которым можете подтереться.

08 Фев, 03:41 #232 #928494

>>919538 (OP)
юзаю андроид студию
так получчилось, что нужно использовать именно встроенный эмуль. пишет:
waiting to target device to come online
хотя эмуль запущенный, летает, запускается тоже быстро, анончик, как лечить?

Ответы930087

08 Фев, 17:00 #233 #928805

Посаны, не знаю где такое спросить. Есть android устройство на arm процессоре, есть разные ядра (версии 3.10) от васянов к этому устройству. Я хочу подключать wacom планшет через usb-otg. Планшет видно в dmesg, лампочки на нем горят, но ничего не работает. Стоит ли пердолиться и пробовать собрать ядро с вакомовскими модулями или это дохлый номер? Впустую тратить время не охото.

10 Фев, 12:00 #234 #930087

>>928494
Поясни, у тебя девайс запускается и нормально функционирует, но студия не видит этого и ждет, или же эмаль висит в загрузке ?

Ответы930622

10 Фев, 12:01 #235 #930088

>>928365
Хватит мозгов и выдержки - сделай свой кастом на базе ReyclerView, не хватит - юзай офф доки по спиннеру

10 Фев, 12:03 #236 #930089

>>927702
Можно, методом тыка все можно

10 Фев, 12:04 #237 #930090

>>927209
startActivityForResult ? Ну, если есть какие-то манипуляции с инвентарем, то вполне уместно выглядит

10 Фев, 12:05 #238 #930091

>>927127
Можно через IPC callback передавать, а сервис сделать started и вручную убивать по окончанию загрузки

10 Фев, 12:07 #239 #930092

Народ, а вообще с приходом чистого MVP, RxJava, Retrofit и прочего, помимо специфических юз-кейсов, используются ли Service-ы, BroadcastReceiver-ы и прочее ? Просто, как по мне, ведь все в рамках приложения спокойно реализуется без них, и, более того, данные компоненты лишь ухудшают читабельность кода, из-за обязательной привязки к контексту, следовательно, загрязняя активность/фрагмент.

Ответы930204

10 Фев, 16:16 #240 #930204

>>930092
Если можешь реализовать без них, то так и делай. Но как ты будешь например отправлять или получать данные в фоне (с закрытым приложением) без сервисов? никак

10 Фев, 16:57 #241 #930231

Как вызвать метод public void onButtonStopClick(View view) реагирует на нажатие кнопки в другом методе. Не знаю какой что передать в параметр "View view"

59 Кб, 877x624

10 Фев, 17:57 #242 #930263

Анон, помню в одном из тредов скинули тестовое задание для джунов.
А именно, требовалось создать приложение, которое берет данные с сайта вроде weather.com и отображает их.
У кого-нибудь сохранилась ссылка на это тестовое задание?
Где можно найти актуальное тестовое задание Российских компаний?

Ответы930264

149 Кб, 873x762

150 Кб, 775x740

10 Фев, 18:01 #243 #930264

>>930263
Лучше, сохранился рисунок.

Ответы930275931211

101 Кб, 400x400

10 Фев, 18:23 #244 #930275

>>930264
Люблю тебя, анон! Пусть всё у тебя будет хорошо.
А ты сам работаешь, или вкатываешься?

Ответы930278

10 Фев, 18:26 #245 #930278

>>930275
Вкатился на работу недавно, постоянно задаю тут глупые вопросы. Иногда отвечают

Ответы930283

165 Кб, 1280x960

10 Фев, 18:31 #246 #930283

>>930278
Можно я тебя поспрашиваю?
А какой лвл, если не секрет? Живешь в ДС?
Как вкатывался, что именно делал для вкатывания? Смотрели ли твой гитхаб?

Ответы930301

10 Фев, 18:46 #247 #930301

>>930283
20 лвл, живу в украине, львов.
Вакансий на трейнии мало, ходил только на одно собеседование, обычно всем нужны джуны с 1+ годом опыта. Потом один знакомый написал что ему нужны андроид пацаны и дал контакты чувака, который меня на работу и взял. Этот чувак собирается свою фирму открывать, спрашивал не сильно, в основном какую-то глобальную теорию типа: "как тянул инфу с сервера, как работают джсон обьекты, генерализацию джава", потом я показал свой курсач, там были sqlite и ретрофит, потом кинул гитхаб, на который по его просьбе закинул этот курсач и лабы, которые писал на андроиде в универе, штук 5-6 их было.
Пока что работаю дома, пилим апки для рекламы фирмы.
>что именно делал для вкатывания
ну вот курсач и лабы помогли, так то они говорили, что хотели тестовое задание дать, но т.к. у меня уже было свое говно, то не дали.

Ответы930366

10 Фев, 20:49 #248 #930366

>>930301
Понятно. Львов охуенный город, кстати.

11 Фев, 01:40 #249 #930622

>>930087
загрузился, но андроидстудио ждет пока загрузится. пишет типо вейт фо онлайн

11 Фев, 14:55 #250 #930869

Решил разрешить пересоздание activity при повороте экрана. В результате одна принципиально важная view, размеры которой match_parent, имеет размеры 0x0. Не знаю как сформулировать вопрос гуглу, так что спрашиваю об этом здесь
Есть цикл, который ждет пока размеры не станут нормальными, и пробует их раз в 10мс. Он ждет вечно
Почему такая херня?

Ответы931019931026

11 Фев, 16:23 #251 #930947

Проясните за Rx. Как привязать Observable например к ArrayList? Гуглю туторы - но они вроде устарели - так как на новых версиях либы много чего горит красным. ЧЯДНТ?

Ответы931026

11 Фев, 17:40 #252 #931019

>>930869
> Есть цикл, который ждет пока размеры не станут нормальными, и пробует их раз в 10мс.
Пиздец у тебя говнокод.

11 Фев, 17:48 #253 #931026

>>930947
> ЧЯДНТ
Используешь rx2
>>930869
> Есть цикл, который ждет пока размеры не станут нормальными
view.post { view в лэйауте и имеет размер }
Не говоря уже о том, что ты и сам можешь вызвать view.measure

Ответы931041

11 Фев, 18:04 #254 #931041

>>931026
Прояснилось за rx2

11 Фев, 21:11 #255 #931211

>>930264
Сука, у меня пригорает, это разве задание для джуна??

Ответы931213931220

11 Фев, 21:12 #256 #931213

>>931211
Слишком простое?

Ответы931250

11 Фев, 21:19 #257 #931220

>>931211
Мне тут на днях прислали задание на трейнии, надо сделать десктопоне говно, которое режет фотку на пазлы, сейвит N фоток в папке, а потом другой алгоритм это все собирает. Чтобы первый и второй алгоритмы не были связаны и ничего друг о друге не знали.

Ответы931250

11 Фев, 22:26 #258 #931250

>>931213
тянет на середнячкового миддла, но на джуна.
>>931220
а третий алгоритм в отдельном потоке должен пройти тест тьюринга

Ответы931267931271932417

11 Фев, 22:58 #259 #931267

>>931250
>>тянет на середнячкового миддла
лол, ты что поехавший?

11 Фев, 23:00 #260 #931270

Аноны, вот вам дают дезинг в psd, но без всяких размерностей в dp, как вы верстаете это?

Ответы931281931474

11 Фев, 23:01 #261 #931271

>>931250
> тянет на середнячкового миддла, но на джуна.
Шутишь что ли? На джуна в самый раз. Мне подобные давали как тестовые задания. Если ты нормально андроид знаешь, а именно основы и пару либ, то ты это за 2-4 дня сделаешь.

11 Фев, 23:16 #262 #931281

>>931270
Хуевые макеты, не признаю ничего кроме sketch.
Берешь фотошоп дроченый, открываешь эту хуйню и смотришь размеры. Дизайнер же по гайдам верстал? Если да, то почти без проблем можешь считать что 1px на макете = 1dp.

Ответы931315

11 Фев, 23:51 #263 #931288

Facebook проталкивает React Native.
Один код на двух платформах, вездесущий Javascript,еще один конкурент нативной Jave.
Нам пиздец?

Ответы931289

11 Фев, 23:52 #264 #931289

>>931288
тебе - да

Ответы931290

11 Фев, 23:56 #265 #931290

>>931289
Зачем бизнесу тратиться на java и swift макак, если можно купить одну javascript макаку? Результат будет один и тот же практически.
React native выйдет из преальфы, релиз за релизом.

12 Фев, 00:03 #266 #931292

https://facebook.github.io/react-native/showcase.html

12 Фев, 00:10 #267 #931294

Live reload, один код на двух платформах, падение производительности по сравнению с нативом незаметны.
Киллер фичи.
Не убьет нативные языки, так потеснит

12 Фев, 01:03 #268 #931315

>>931281
Скеч тоже говно. Проприетарное, только для мака.

Ответы931319

12 Фев, 01:17 #269 #931319

>>931315
Ну охуеть теперь, швабодка жму пинус? Для винды есть пару программ позволящию просматривать макеты в скетче + zeplin.

Ответы931372931373

12 Фев, 04:24 #270 #931372

>>931319
В том то и дело, что ни одной программы, которая нормально показывает его файлы нет. Так что дизайнер должен юзать общепринятый в отрасли psd или идти нахуй.

Ответы931391931517

12 Фев, 04:27 #271 #931373

>>931319
Вернее, он должен уметь не только предоставить макет, но и нарезать в соответствии с разными плотностями экрана, состояниями и так далее.

Ответы931515

12 Фев, 08:20 #272 #931391

>>931372
> Так что дизайнер должен юзать общепринятый в отрасли psd
А ты psd будешь в гимпе открывать, швабодный?

12 Фев, 12:07 #273 #931474

Реквестирую какой-нибудь гайд по TDD. Прошёл раздел про тесты на вогелле, но нихуя не понял. Желательно какой-нибудь гайд, где мы последовательно разрабатываем какую-нибудь приложеньку по TDD.
>>931270
На глазок. А цвета пипеткой замеряю.

12 Фев, 12:58 #274 #931515

>>931373
Нормальный дизайнер сам тебе все нарежет, существует куча плагинов экспортирующих асеты под ведро/гейось/уеб/десктоп. Все это закинет в папочку и пришлет тебе вместе с макетом.

12 Фев, 12:59 #275 #931517

>>931372
Zeplin нормально показывает, даже позволяет доставать асеты. Но все это только если дизайнер не мудак и все правильно разметил.

13 Фев, 13:32 #276 #932260

Подкиньте пример или идею, как прикрутить к GridView матрицу (многомерный массив)?
Все что нахожу - одноклеточное говно, работающее на одной последовательности.
А где есть матрицы - они сливаются в один лист и хуй знает как вообще потом определять строки\столбцы при нажатии.

В других графических фреймворках почему-то grid'ы с православными строками\столбцами, и только в ебаном ведре хуярят через сплошной лист.

Ответы932267932901

13 Фев, 13:52 #277 #932267

>>932260
Что у тебя конкретно не получается? btw GridView устарел. Ты же знаешь что матрицы тоже обычно хранятся линейно.

Ответы932277

13 Фев, 14:04 #278 #932277

>>932267
А что есть на замену ему?

Допустим, есть матрица

[[object1, object2, object3, object4, object5]
[object6, object7, object8, object9, object10]
[object11, object12, object13, object14, object15]]

Заполнить сетку-то их вьюхами просто, слив матрицу в одномерный массив. Но как при нажатии вычислить позицию в сетке, если в адаптере используется только одно число position?

Мне это нужно, чтобы оперировать самой матрицей. Например, поменять несколько объектов местами. Передвинуть выше, например. Я же не могу сделать это в одномерном массиве.

Ответы932278932294

13 Фев, 14:06 #279 #932278

>>932277
Или можно хранить позицию элемента в матрице в самих объектах?

Ответы932294

13 Фев, 14:27 #280 #932294

>>932278
>>932277
Сделай класс матрицы который инкапсулирует доступы/смены элементов. Типа такого: http://pastebin.com/MecHx61p
Вообще сейчас норм использовать RecyclerView, и что бы получить грид - GridLayoutManager

Ответы932295932296

13 Фев, 14:31 #281 #932295

>>932294
А забыл, там же в адаптере только одна позиция, ну можно добавить метод:
public final T getRaw(int position) {
____return data[position];
}

13 Фев, 14:38 #282 #932296

>>932294
Та сама логика у меня уже готова отдельно. Я с представлением больше мучаюсь, чем с ней. На каком-нибудь GTK или QT уже сделал бы и забыл.

Ответы932304

13 Фев, 14:59 #283 #932304

>>932296
Задаешь лэйаут менджеру ширину матрицы как спан каунт и все. А дальше тупо по позиции дергаешь элементы, она тупо слева на право, сверху вниз.

13 Фев, 17:11 #284 #932356

Подскажите нубу.
Годная книга?
http://www.ozon.ru/context/detail/id/135513511/

13 Фев, 18:22 #285 #932417

>>931250
Я андроид еще толком даже не нюхал, но судя по описанию - не вижу в задачке ничего сверхъестественного.

13 Фев, 18:24 #286 #932421

Анон, а можно менять XML файл во время работы программы, например добавить стринг?

Ответы932428

13 Фев, 18:27 #287 #932428

>>932421
Нет. Они лежат в только читаемой области, с рутом можно делать все что хочешь, плохая идея.

7 Кб, 275x183

13 Фев, 19:22 #288 #932475

Вот учу я андроид и чем дальше тем больше узнаю о всяких мелких нюансах и подводных камнях. Сейчас читаю "The Busy Coder's Guide to Android Development", так там в одной главе про ресурс сеты и конфигурации черт ногу сломает во всех возможных сценариях. При этом сам автор говорит, что несколько лет кодил и о некоторых имел ошибочное мнение все это время.
Я не пойму почему вкатывальщикам советуют андроид, мол легче чем в энтерпрайз? При том что тут надо сначала знать джаву нормально, что бы не обсираться, а потом еще и знать андроид фреймворк со всеми его правилами.

Ответы932480

13 Фев, 19:32 #289 #932480

>>932475
>фреймворк
Платформу + фреймворки.

13 Фев, 21:24 #290 #932558

Всем привет, хочу написать свой вьюпэйжер, который динамически подгружает при свайпе влево право, предыдущую страницу или следующую на основе фрагментов. Кто подскажет как свой компонент сделать? Искал в оф доке, там про создание компонентов хуй да нихуя, как вообще работает отображение компонента?

Ответы932737

14 Фев, 01:01 #291 #932737

>>932558
Нахуй тебе свой? Всё, что ты описал реализается стандартными средствами. К тому же, это не функции ViewPager'а, а его адаптера.

Если всё же нужен свой, то открывай исходники и смотри, делай похоже.

Ответы932880

14 Фев, 06:49 #292 #932795

Как отобразить один виджет над другим?
Например, что-то над фоном.
Я знаю, что можно сделать один parent'ом, но как быть, если они оба child другого parenta?
Как внутри parent'a регулируется, какой виджет перекрывает другой?

Ответы932804

14 Фев, 07:25 #293 #932804

>>932795
Отрисовывается все по очереди заданной индексом в родителе. Меньше - раньше.

14 Фев, 10:16 #294 #932847

Почему у GridView есть метод setColumnWidth, но нет метода setColumnHeight?
Я понимаю, что можно другим способом программно задать, но все же.

Ответы932850

14 Фев, 10:21 #295 #932850

>>932847
> setColumnHeight?
У row посмотри.

14 Фев, 11:47 #296 #932880

>>932737
Значит я не понимаю как это сделать в адаптере,
Начальное состояние вьюпейжера мне нужно такое даны три фрагмента, активити открывается на втором фрагменте. Далее после свайпа, например вправо, текущий фрагмент становится третий, теперь мы должны удалить первый фрагмент и добавить 4й, так чтобы количество фрагментов осталось 3 и по прежднему текущий фрагмент был вторым.
Мне нужно поставить обработчик на onchangepage метод onpagechaged и в нем пересоздать адаптер с новым содержимым?

Или нужно как то в адаптере перезаписать метод initializeItem и в нем удалять ненужный фрейм и добавлять новый? Или новый список с фреймами пересоздавать на это событие и выставлять текущую снова вторую.

Вообщем не понимаю как сделать так чтобы оставалась позиция страницы всегда вторая.

Ответы933965

14 Фев, 12:18 #297 #932900

Повторю вопрос из ньюфаг треда, так как тут больше java-анонов.

Посоны, кто-нибудь проходил курс Java rush? Стоит он затраченного времени? Потому что я вот на втором уровне и меня как-то настораживают многократно повторяющиеся задачи типа "выведи петросянские смехуечки на экран".

Ответы932904932952933086

14 Фев, 12:18 #298 #932901

>>932260
https://github.com/zhouchaoyuan/excelPanel

sage 14 Фев, 12:18 #299 #932904

>>932900
Тебе в java-тред.

14 Фев, 13:12 #300 #932952

>>932900
Нет, лучше мне деньги отдай.

Ответы933094

14 Фев, 13:27 #301 #932972

Аноны поясните за констрейнтлейаут. Годная штука или хуйпизда?

Ответы932978

14 Фев, 13:35 #302 #932978

>>932972
Годная, но сырая.

14 Фев, 13:45 #303 #932989

Как вычислить размер вложенного один в другой layout'a, если у вложенного есть отступ от краев?

Пытаюсь взять размер экрана, взять размер отступов (перевести их в пиксели), отнять отступ * 2 от размера экрана - и чет нихуя не сходится в итоге. Куска в пол миллиметра не хватает.

Ответы932993933002

14 Фев, 13:47 #304 #932993

>>932989
У обоих стоит match_parent.
Более менее сходится, если отступы умножить на 5, но это пиздец какая-то магия.

Ответы933002

14 Фев, 13:54 #305 #933002

>>932989
>>932993
А чем тебе getWidth не угодил? Ну кроме того что его имеет смысл брать только после полного лэйаута и возвращает он в пикселях.

Ответы933011

14 Фев, 14:03 #306 #933011

>>933002
Я из onCreate вызывают, а он выдает 0 там.

Ответы933018

14 Фев, 14:14 #307 #933018

>>933011
Ну потому что ничего еще не вымерено. Засунь его в колбек на глоабльный лейаут, так будет правильней.

Ответы933072

14 Фев, 14:55 #308 #933047

Где и как вы храните реквест коды, что бы все было ништяково и не совпадало со всякими пейсбуками, вкашками и прочими гугл сервисами? Ну и что бы собственные между собой не пересекались естественно

14 Фев, 15:36 #309 #933072

>>933018
Фокус в том, что мне нужно в GridView динамически подгонять размер ячеек под размер экрана.
Если я засуну определение ширины в Runnable, это же все равно случится после того, как адаптер распихает все в GridView, не? Мне вот надо как-то в момент впихивания первого элемента успеть получить значение.

Ответы933082933088

14 Фев, 15:42 #310 #933082

>>933072
Ммм, а если адаптер регистрировать как раз в Runnable, который впихнуть в post?

14 Фев, 15:43 #311 #933086

>>932900
На 16 уровне сейчас. Довольно годно, если вообще 0 в программировании. Задрочка кода там повсеместно, но зато действенно. Для того чтоб вкатится в андройд достаточно 10 бесплатных уровней. Так что можешь не покупать подписку.

Ответы933094

14 Фев, 15:45 #312 #933088

>>933072
Почему бы тебе не посчитать размер до прицепливания адаптера? Получаешь размер доступной области для своего грида, вычитаешь место для отступов между объектами, или как ты там себе думаешь, и потом задаешь эти параметры адаптеру, который будет знать какого размера вьюхи делать.
Есть другой способ, не требующий специфических действий извне. Берешь percent relative/frame layout, используешь его как корень вьюхи итема, ширину итемы всегда будут получать одинаковую, а ты просто задаешь нужный тебе аспект рэтио.

Ответы933098

14 Фев, 15:49 #313 #933094

>>932952
За что тебе деньги отдавать?

>>933086
Спасибо, а то я боялся что там все бесплатные уровни будут на уровне хэлло ворлдов. Я уже пару лет пишу под android, но есть определенные пробелы в знаниях по Java, вот решил этот курс попробовать.

Ответы933097933101

14 Фев, 15:53 #314 #933097

>>933094
ну ты же хочешь положить деньги кому-то в карман за то что можно получить бесплатно? Чем я хуже, со мной хоть времени терять не будешь на смехуечки.

14 Фев, 15:53 #315 #933098

>>933088
А у грида тоже match_parent. И у всех его родителей.
Я пытался считать через
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

там высчитывал параметры ячейки и передавал адаптеру. Вот только размер грида не совпадал с тем, который можно получить потом в getWidth. Хотя, считал по формуле.

Да и я уже наконец-то сделал, что нужно через задание адаптера в post.

Ответы933103

14 Фев, 15:53 #316 #933101

>>933094
>Я уже пару лет пишу под android, но есть определенные пробелы в знаниях по Java
Как же ты это пишешь? Как чучело из изумрудного города?

14 Фев, 15:54 #317 #933103

>>933098
Зачем задавать размер грида, ладно ебись как хочешь, дело твое.

Ответы933109

14 Фев, 15:58 #318 #933109

>>933103
Я и не задавал.
Я делал так.
Допустим, экран 1000 пикселей. По бокам от gridView по отступу в 10dp. Перевожу их по формуле в пиксели, получается допустим 100 пикселей на отступ.
1000 - 100*2 = 800. Но атятя, не сходится почему-то.

Ответы933127

14 Фев, 16:05 #319 #933117

Анон есть 3 активити.
Активити 1 передает через интент значение в 2, 2 просто запускает активити 3, 3 делает запись в бд и возвращает на 1 активити, как сделать так, чтобы с 3 вернуться сразу на 1, не открывая 2?

Ответы933124933127

14 Фев, 16:12 #320 #933124

>>933117
FLAG_ACTIVITY_CLEAR_TOP
?

Ответы933128

14 Фев, 16:14 #321 #933127

>>933109
Потому что ты делаешь черти что, без обид.
>>933117
FLAG_ACTIVITY_CLEAR_TOP
If the activity being started is already running in the current task, then instead of launching a new instance of that activity, all of the other activities on top of it are destroyed and this intent is delivered to the resumed instance of the activity (now on top), through onNewIntent()).

Ответы933128

14 Фев, 16:15 #322 #933128

>>933124
>>933127
Благодарю

14 Фев, 16:41 #323 #933145

Котаны, вот к примеру вайбер, окно с чатом. Там же нихуя не списочек? Там ScrollView на которое накидали кучу отдельных вью с сообщениями?

Ответы933154

14 Фев, 16:50 #324 #933150

http://stackoverflow.com/questions/2139134/how-to-send-an-object-from-one-android-activity-to-another-using-intents

Анон, обьясни, пожалуйста.
Я должен написать конструктор, (Parcel in), где каждому полю присваивать значения из этого Parcel in, тоесть:
public Constructor(Parcel in){
field1 = in.readDouble();
field2 = in.readString();
field3 = in.readInt();
}

а в [size] указать кол-во полей, в моем случае 3?
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}

я все верно понял?

Ответы933158

14 Фев, 16:52 #325 #933154

>>933145
Нет, там список, скорее всего RecyclerView. ScrollView сожрал бы кучу памяти под вьюшки которых нихуя не видно.

14 Фев, 16:54 #326 #933158

>>933150
Ты должен читать поля в том же порядке в котором записывал, в newArray ты просто должен создать массив своего типа с данным размером, количество полей там не при чем. Это сделано для того что бы избежать рефлексии для создания массивов.

14 Фев, 21:17 #327 #933361

>>919538 (OP)
Анон, спасай! Нужен код простой программки которая выведет информацию о RAM и HDD памяти телефона.

Если это как-то можно сделать стоковыми средствами Андроид то вообще заебись, но пока ничего не нашел.

Ответы933395

14 Фев, 21:28 #328 #933368

От чего может падать эмулятор? Поворачиваю устройство, он думает-думает... И вылетает, ничего не сказав. Критическая ошибка,пожаловаться разработчикам, все такое.
Задача у меня: сохранить большой объект (лабиринт, который может генериться секунд 40, если большие размеры указать) и не генерить его заново после поворота. Делал через static - падало с размерами 23x23. Сделал с повторной генерацией после поворота - начало падать на 40x40.
Не знаю чего еще сказать
подскажите, кто знает

Ответы933371

14 Фев, 21:35 #329 #933371

>>933368
Проверь на всякую хуйню типа переполнения стека или памяти. Что такое "размеры 23x23"?

Ответы933376

14 Фев, 21:40 #330 #933376

>>933371
23х23 клетки - размеры поля
а где это в студии можно посмотреть?

Ответы933380

14 Фев, 21:45 #331 #933380

>>933376
Внизу где-то, android monitor смотреть. Алгоритм генерации чей? 40 секунд на лабиринт в 500 клеток это не очень.

14 Фев, 21:50 #332 #933383

О, тут и такие мониторы! Прикольно. Спасибо, посмотрю
не, долго он генерит большие, а такой за секунду.
Алгоритм моего друга-заказчика

14 Фев, 22:07 #333 #933395

>>933361
бампбамп!

Ответы933410

14 Фев, 22:18 #334 #933410

>>933395
http://stackoverflow.com/questions/7374246/how-to-get-total-ram-size-of-a-device

http://stackoverflow.com/questions/11410514/getting-storage-information-in-android

щенок ебаный

Ответы933411

14 Фев, 22:19 #335 #933411

>>933410
Надеюсь это то что надо, пока качается среда.
Спасибо

Ответы933434

14 Фев, 22:39 #336 #933434

>>933411
Код по ссылкам может не работать или быть с багами или просто ты не догадаешься его правильно испльзовать.
головой кароч подумай чутка. Если думать не хочешь, открывайанус кошелек.

Ответы933443

14 Фев, 22:46 #337 #933443

>>933434
И почем цена скрипта обращающегося к API дроида?

15 Фев, 10:03 #338 #933607

Анон, хочу вкатиться в андроид. Начал заниматься по startandroid, но это все-таки не то. Хотелось бы найти какую-нибудь нормальную книгу, чтобы получить общую картину, а не обрывки в духе "как сделать xyz?". Что посоветуешь?

Ответы933663

15 Фев, 12:08 #339 #933663

>>933607
Смотри, как человек, обучающий других людей этому делу, могу сказать следующее: лучше начни с "Философии Java", если вдруг чувствуешь себя хоть чуточку неуверенно. Потом попробуй двигаться дальше и рассмотри все основные компоненты андроид-приложения, к каждому из которых сделай небольшой sample-проект. То есть начиная с простого, Activity, переходи постепенно дальше, к динамичному UI с фрагментами (сделай например нормальный нелагающий Navigation Drawer), к ContentProvider (заодно вспомнишь/поверхностно изучишь SQLite), к Service, IntentService, BroadcastReceiver (сначала смотришь официальные доки, потом делаешь проект, о startandroid забудь как о страшном сне), потом можешь глянуть для общего развития что такое AIDL.

Все посмотрел? Отлично, теперь подумай как это должно работать вместе. Советую первое серьезное приложение писать без использования каких-либо фреймворков. Мне, например, весьма понравилась апишка от микрософта по их Graph API, на ней можно воткнуть что такое REST, поработать с WebHook-ами и прочим весельем, тебе придется делать кастомные парсеры и прочее прочее. Параллельно смотришь и вдохновляешься Google Material Design.

Сделал REST-клиент для выбранного endpoint-а ? Отлично, теперь попробуй поработать с пуш-уведомлениями и сокетами. Создай свой простенький сервер на локалхосте и ебись с ним как захочешь. Во-первых это научит тебя выставлять требования к ребятам на бэкэнде, посколько ты будешь понимать, что тебе нужно и какой вид оно должно иметь, во-вторых, просто посмотришь в сторону популярных серверных технологий и паттернов, лишним не бывает.

Поработал на низком уровне и разобрался как что функционирует? Время открывать чудесный мир фреймворков для себя. Начни с самого популярного - OkHttp+Retrofit+Gson, посмотри в сторону какой-нибудь ORM-ки, или (да простит г-дь) монстра типа Realm/StorIO/еще какой-нибудь параши, попробуй в инъекцию зависимости с Dagger-ом, научись в тестирование.

Дальше, если дойдешь до этого момента, думаю, сам уже поймешь что делать, но если что - обращайся!

15 Фев, 12:08 #339 #933663

>>933607
Смотри, как человек, обучающий других людей этому делу, могу сказать следующее: лучше начни с "Философии Java", если вдруг чувствуешь себя хоть чуточку неуверенно. Потом попробуй двигаться дальше и рассмотри все основные компоненты андроид-приложения, к каждому из которых сделай небольшой sample-проект. То есть начиная с простого, Activity, переходи постепенно дальше, к динамичному UI с фрагментами (сделай например нормальный нелагающий Navigation Drawer), к ContentProvider (заодно вспомнишь/поверхностно изучишь SQLite), к Service, IntentService, BroadcastReceiver (сначала смотришь официальные доки, потом делаешь проект, о startandroid забудь как о страшном сне), потом можешь глянуть для общего развития что такое AIDL.

Все посмотрел? Отлично, теперь подумай как это должно работать вместе. Советую первое серьезное приложение писать без использования каких-либо фреймворков. Мне, например, весьма понравилась апишка от микрософта по их Graph API, на ней можно воткнуть что такое REST, поработать с WebHook-ами и прочим весельем, тебе придется делать кастомные парсеры и прочее прочее. Параллельно смотришь и вдохновляешься Google Material Design.

Сделал REST-клиент для выбранного endpoint-а ? Отлично, теперь попробуй поработать с пуш-уведомлениями и сокетами. Создай свой простенький сервер на локалхосте и ебись с ним как захочешь. Во-первых это научит тебя выставлять требования к ребятам на бэкэнде, посколько ты будешь понимать, что тебе нужно и какой вид оно должно иметь, во-вторых, просто посмотришь в сторону популярных серверных технологий и паттернов, лишним не бывает.

Поработал на низком уровне и разобрался как что функционирует? Время открывать чудесный мир фреймворков для себя. Начни с самого популярного - OkHttp+Retrofit+Gson, посмотри в сторону какой-нибудь ORM-ки, или (да простит г-дь) монстра типа Realm/StorIO/еще какой-нибудь параши, попробуй в инъекцию зависимости с Dagger-ом, научись в тестирование.

Дальше, если дойдешь до этого момента, думаю, сам уже поймешь что делать, но если что - обращайся!

Показать весь текст
Ответы933674933737934025

15 Фев, 12:20 #340 #933674

>>933663
Спасибо, милчеловек!
Вообще, "Философию Java" я освоил еще полгода назад, но до сих пор иногда почитываю. Можно ли с учетом того, что мне не придется ее заново перечитывать и что я уже немного помацал SQLite осилитт все это до начала (конца) лета?

Ответы933678933680

15 Фев, 12:26 #341 #933678

>>933674
У меня ушло чуть меньше двух лет, чтобы выйти на уровень "опишите стек технологий, почитаю доки если че непонятно и скажу вам срок выполнения". Но если у тебя хорошая подготовка (ладно, будем честны, если у тебя есть хоть какая-то подготовка) то до этапа "фреймворки" дойти должен успеть

15 Фев, 12:28 #342 #933680

>>933674
Даб к слову, я придерживаюсь мнения большинства, философию нужно периодически (раз в три-четыре месяца) перечитывать. Во-первых там треть вопросов с собесов покрывается, во-вторых, ИМХО, приятно читается.

15 Фев, 13:29 #343 #933730

Можно ли предотвратить открытие активити вызова? Ну то есть у меня в приложении есть видео общение и тут пользователю звонят, я хочу показать диалог/нотификацию мол у вас тут вызов думайте куда отвечать, а не так что бы активити вызова тупо открылось не давая пользователю шанса не выходить из моего приложения. Ковыряю пока TelephonyManager но еще не нашел похожего.

15 Фев, 13:36 #344 #933737

>>933663
Хороший совет, на самом деле.
Главное, с голым андроидом не переусердствовать, а то он может всё желание отбить.

15 Фев, 14:06 #345 #933756

Почему если начинать startDrag для Drag'n'Drop в OnClickListener - то DragEvent не срабатывает при пеовом же нажатии? Только при быстром повторном.

Проверял у себя и на примере (в последнем заменил только OnLongClickListener на OnClickListener).

Ответы933757933758

15 Фев, 14:07 #346 #933757

>>933756
Ах да, пример

https://github.com/patrick-iv/DragNDropApp/blob/master/app/src/main/java/com/patrick_iv/examples/dragndropapp/MainActivity.java

15 Фев, 14:11 #347 #933758

>>933756
>OnClickListener
Причем, нажатие обрабатывается 100%, я проверял в логах.
А вот в OnDragListener эвент прилетает только при повторном.

Как-то связано с тем, что OnClick OnClickListener ничего не возвращает, а OnLongClickListener возвращает boolean?

15 Фев, 19:10 #348 #933925

Вечер в хату, арестанты. Подскажите, нужно из изображения удалять его фон, например, сфоткана вещь на кровати, нужно оставить вещь а весь задний фон сделать прозрачным. Фон всегда разный так что сравнивать изображение фона с конечным не вариант. Смотрел на opencv, но по яве не нашел никакой инфы, а с плюсами не горю желанием сношаться. Какие варианты подскажете?

Ответы933929

15 Фев, 19:14 #349 #933929

>>933925
OpenCV самый оптимальный вариант на ведре. Вроде ещё tensor Flow должен прикручиваться, но не пробовал

15 Фев, 19:57 #350 #933959

Помните РИНГТОНЫ на говеных старых мобилодровах?
Что есть сегодян есть для обработки мелодий в вибрации для видра?

Ответы933961

15 Фев, 19:58 #351 #933961

>>933959
Закажи дилдак на али и не парься.

Ответы933962

15 Фев, 20:02 #352 #933962

>>933961
Пидорские советы от пидора.

Ответы933963

15 Фев, 20:15 #353 #933963

>>933962
Ну просто я ещё под iOS разрабатываю.

15 Фев, 20:35 #354 #933965

>>932880
Пацаны помогите разобраться с viewpagerом и adapterами всякими, чот нимогу раскурить. Смотрел в оф доках как работать с ним и фрагментами. Смотрел на стартдроиде статью. Я чет не догоняю никак как это все утсроено. Паможите!!!

Ответы933970

15 Фев, 20:56 #355 #933970

>>933965
Можно вызвать в нужном тебе месте метод
notifyDataSetChanged(), который уведомит адаптер, что нужно отобразить измененное содержимое.
Все манипуляции производить с данными в последовательности, которую передал адаптеру, потом вызывай notifyDataSetChanged().
Это можно прям из активити делать.

Ответы933979

15 Фев, 21:09 #356 #933979

>>933970
А как изменять индексы страниц у вьюпейжера? можно как то отказаться вообще от позиций вьюх? типа 1 страница поумолчанию только. Но когда свайп случается билдится вторая или предыдущая.

15 Фев, 21:29 #357 #933993

В андроид студии можно как-то изменить цвет счетчика строк?
Красные слишком выделяются на фоне всего, отвлекают и вообще глаза разъезжаются, я так косоглазым стану.
Отказываться от белой темы и стирания шишки на сотни строк в день не хочу.

Ответы933997

15 Фев, 21:34 #358 #933997

>>933993
Settings - Editor - Colors&Fonts - General - Code - Line Number.

15 Фев, 22:23 #359 #934025

>>933663
Если я .NET помидор с 6летним стажем, могу ли я не читать философию жабы? Глянул на синтаксис - от шарпа существенно не отличается.
Я так понимаю, что это книга для разного рода вкатывальщиков, которые не имели дело с чистым ООП.

Ответы934030

15 Фев, 22:27 #360 #934030

>>934025
А чо есть грязный ооп? Или какой то другой ооп который типа вкатывальщики учат, а 6летние помидоры знают уже какойто другой ооп?

Ответы934038

15 Фев, 22:38 #361 #934038

>>934030
Ну например тот же C++, который является от части структурным языком в подмножестве C. Т.е. существование функций, которые живут вне класса.
Так же можно упомянуть про всевозможный сахар аля C#, который позволяет обходить ограничения, которые могут возникнуть в Java, решаемые там с помощью использования паттернов те же ивенты и делегаты.
Мультипарадигменный ЯП, который лишь предоставляет ООП как возможную парадигму написания JavaScript

Java - сферический ООП в вакууме. Я считаю, что если ты помидор, знающий паттерны хуяттерны, то читать книжку, которая представляет их как часть философии - нахуй ненужно.

Ответы934051

15 Фев, 23:04 #362 #934051

>>934038
ой камон кто тебе мешает статик методов напилить аля фюнкции си.

Ответы934055

15 Фев, 23:16 #363 #934055

>>934051
При чем тут это? Я имел в виду возможность написания функций вне класса в принципе.

Ответы934060

15 Фев, 23:22 #364 #934060

>>934055
Ладно это все фигня лучше поясни как в андроиде из хмл описания виджетов объекты создаются, и как с тем же вьюпейжером разобраться.

Ответы934072

15 Фев, 23:34 #365 #934072

>>934060
> из хмл описания виджетов объекты создаются
Если тебе нужно описание внутреннего устройства, то я тут тебе не помошник сам вкатываюсь. иначе не спрашивал бы про необходимость изучения жабы по философии. А так из того, что знаю - LayoutInflater все делает.

> и как с тем же вьюпейжером разобраться
в смысле, как сбрасывать вьюпажер при поворотах экрана? Честно говоря, сам не знаю. Чому в гугле не спросишь?

Ответы934078

15 Фев, 23:42 #366 #934078

>>934072
Не, я хочу бесконечный вьюпейжер сделать, где типа у него только три фрагмента. Когда свайпаешь типа все красиво свайпаецо на левый или правый фрагмент, но после окончания свайпа я хочу перегенерить позиции вьюпейжера, чоб было как до использования свайпа. Типа в текущей памяти три фрагмента, текущий, левый и правый они не видны. При свайпе перелистывается например на правый фрагмент. Дальше вот хуй пойми где код писать перестроения всего этого дела. В пэйжер адаптере или в пейжер фрагменте или допиливать вьюпэйжер.

А про инфлейтор хмм что он вообще делает, можешь если не сложно на пальцах как дауну пояснить.

Ответы934088

15 Фев, 23:54 #367 #934086

че то проиграл с их диалога

Ответы934089

15 Фев, 23:57 #368 #934088

>>934078
Т.е. тебе нужен по сути циклический замкнутый переход?
Первая ссылка в гугле
http://stackoverflow.com/questions/12471597/how-can-i-make-viewpager-loop

LayoutInflater.from(%context%).inflate(R.layout.%layout_name%) просто создает View по айдишнику лэйаута. Потом из этой View ты можешь через findViewById доставить всякие конторы, которые ты в этом лэйауте определил. В принципе нихуя сложного.

Ответы934097934106

15 Фев, 23:57 #369 #934089

>>934086
на кожаной флейти поди поиграй, дудочник

16 Фев, 00:03 #370 #934097

>>934088
Мм, да я это видел, но а б с страницы типа будут по кругу скролится, но типа надо чтоб данные то менялись в них. Для этого завести какую нибудь глобальную переменную, которая взависимости от свайпа +-1 делает и уже от этого в пэйжере контент выводить?

А еще вот пэйжадаптер, он логически отвечает за информацию подаваемую в фрагмент? Тоесть пэйж адаптер знает что третья страница и достает инфу из третьей строки в бд и передает в фрагмент, где тот уже запихивает переданые поля из адаптера в свой фрагментный лэйаут.

16 Фев, 00:15 #371 #934106

>>934088
Если грубо говоря это похоже на лэйзи лоад чтото, подгружать новые фрагменты, но удалять старые.

Ответы934112

16 Фев, 00:29 #372 #934112

>>934106
Если юзать FragmentPagerAdapter, то так и должно работать, если я не ошибаюсь.

16 Фев, 01:55 #373 #934141

Обратный вопрос. Как вкатиться в разработку из Android. Есть смарт, но под Android даже нормально блокнотика и SSH клиента не нашел.
Нашел убогий SSH клиент под свободной лицензии и тот даже ключ добавить не дает.
Как поставить какое-то окружение на эту недосистему вообще незнаю. Рута нет. Получить через уязвивость в кит-кат незнаю как.

Ответы934294

16 Фев, 09:52 #374 #934294

>>934141
>вообще незнаю.
>Рута нет
>незнаю как
Ну и иди тогда нахуй если ниче не знаешь.

Ответы934305

16 Фев, 10:36 #375 #934305

>>934294
А ты знаешь, как получить рута? Без всяких китайских троянов. Незнаешь? Так тоже иди нахуй.

Ответы934322

16 Фев, 11:03 #376 #934322

>>934305
Пиздуй в тему своего смарта на 4пда. Мудак поехавший.

Ответы934717

16 Фев, 11:20 #377 #934331

Есть способ вызвать стандартную камеру и получить фотографию, а не настраивать все самостоятельно?

Ответы934334

16 Фев, 11:23 #378 #934334

>>934331
Вы блять хоть чуть-чуть в гугл умеете?
https://developer.android.com/training/camera/photobasics.html

Ответы934336

16 Фев, 11:26 #379 #934336

>>934334
Не работает эта хуйня.

Ответы934339

16 Фев, 11:32 #380 #934339

>>934336
Хуйня это ты, у меня все фотки берутся. Ты же даже не можешь сказать что у тебя не работает, даже никакого кода небось нет.

Ответы934342

16 Фев, 11:41 #381 #934342

>>934339
Да я там просто обосрался, впрочем ничего нового. Не полностью старый код откатил и камера лочилась перед отсылкой интента.

Ответы934344

16 Фев, 11:49 #382 #934344

>>934342
Обтекай

Ответы934353

16 Фев, 12:21 #383 #934353

>>934344
Ебанашка пытается выебнуться тем, что удачно копипастит готовые примеры.
Да ты же утрешься при первой же нестандартной задаче, которую не реализовать стандартными средствами без киянки и мата.

Ответы934360

16 Фев, 12:33 #384 #934360

>>934353
Громкое заявление.

Ответы934365

16 Фев, 12:35 #385 #934365

>>934360
Надеюсь, тогда найдется ЧСВшный хуесос, который встанет и ололокая пустит тебе тугую струю в ебало.
Из-за такого говна вот и не хочется куда-то идти, кроме как на stackoverflow.

Ответы934375

16 Фев, 12:37 #386 #934366

Поставил Xamarin поверх студии. Создаю пустой проект. Запускаю. На эмуляторе черный экран. Даже не запускается операционка. Иногда после завершения пишет, что были проблемы с деплоем, а иногде не пишет. Это на дебаге. На релизе сразу говорит, что проблемы с деплоем. При этом никаких ошибок или ворнингов не выводится. В чем может быть дело? До этого ставил андроид студию и там было всё нормально, но мне нужно на шарпе делать.

Ответы934377

16 Фев, 12:49 #387 #934375

>>934365
Когда я задаю тут вопрос, я не ожидаю на него другого ответа, понизь свои ожидания.

Ответы934383

16 Фев, 12:49 #388 #934377

>>934366
Какие-нибудь логи есть?

https://forums.xamarin.com/discussion/64088/android-emulator-opens-but-project-does-not-deploy-and-start

Как вариант можно попробовать adb.exe прибить, но это уже из области танцев с бубном.

16 Фев, 12:53 #389 #934383

>>934375
Ясно, латентный мазохист ожидает, что другие оценят его попытки при чинить добро.

Насколько нужно быть ебанутым, чтобы бомбануть от нубасного вопроса, а потом (!) полезть искать ссылку для ответа. А потом еще и выебываться.

Блядь, даже вот не думал, что pr собрал такой гной из профессии. Неудивительно, что здесь так тихо. Безрукие агрессивные ебанашки-копипастеры разгоняют всех адекватов.

Ответы934543

16 Фев, 13:08 #390 #934403

Анон, доставь хороший туториал по bitmap, а то в документации ничего не понятно.

Ответы934449

16 Фев, 14:05 #391 #934449

>>934403
Что тебя конкретно интересует? Не встречал какого-то общего гайда, соскейлить/вырезать/записать это есть.
Вот пара толковых:
Крутой блюр - https://habrahabr.ru/post/215077/
Подрезки/масочки - https://habrahabr.ru/company/badoo/blog/310618/

Короче надо гуглить определенную тему. Опять же многое можно подчерпнуть из исходников glide/picasso, но там больше про менеджмент.

16 Фев, 15:26 #392 #934492

сап, сообщество! реквестирую хелпы в тривильном вопросе
public class Example {
public static Example get(Context context){
}}
Это именованный конструктор или как?

Ответы934496

16 Фев, 15:29 #393 #934496

>>934492
Example слева от get - это возвращаемый тип. То есть это статический метод, который возвращает экземпляр этого класса.
Метод класса, грубо говоря, а не экземпляра.

Ответы934502

16 Фев, 15:39 #394 #934502

>>934496
метод get, объявленный в классе Example, возвращает экземпляр Example? (Example = Example)

Ответы934507

16 Фев, 15:48 #395 #934507

>>934502
Ну да, может там в методе какая-то хитрожопая инициализация, и дополнительная обработка (что и отличает от простого создания через конструктор) которую не хотят доверять тебе?

Ответы934508

16 Фев, 15:49 #396 #934508

>>934507
Все так, анон. Спасибо тебе!

16 Фев, 16:41 #397 #934542

Что почитать про оптимизацию? Кроме курса на юдасити не нашел ничего толкового.

Ответы934604

16 Фев, 16:41 #398 #934543

>>934383
Уот ета пичооот, еще небось и рута у тебя нет, маня?

16 Фев, 17:56 #399 #934604

>>934542
Во-первых она не должна быть преждевременной. А во-вторых - https://www.youtube.com/watch?v=qk5F6Bxqhr4&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

Ну и вообще надо думать и все будет в норме. Обычных джавовских навыков хватит.

16 Фев, 20:03 #400 #934671

Необходимо сделать приложение, которое будет по Bluetooth опрашивать устройства и сохранять в файл/отсылать в базу/показывать на экране данные.
В принципе оно сейчас это делает, но Bluetooth создается объектом в MainActivity c соответствующими последствиями. А мне нужно, чтобы соединение не терялось при переходе из одной Activity в другую (и полученные данные обрабатывались по-разному соответственно).
Как грамотно сделать подобное? Что почитать про Bluetooth? Я так понял, нужно мутить Service, в правильном направлении копаю?

Ответы934682

16 Фев, 20:30 #401 #934682

>>934671
Вариант для обрыганов - синглтон/инстанс блютуса в апликешоне.
Вариант для норм пацанов - блютус в сервисе. Возникает два варианта - сервис который ты сам стартуешь и который стопается тобой же, из форграунд нотифкации или аллаха. Вариант второй - байндишся при старте активти и анбайдишся в стопе, если юзер переходит на следующее активити товего приложения то сервис не помрет, в обоих вариантах можно организовать общение через байндер и будет ништяк, ну или бродкастами хуярить.
>что почитать
Доку для начала. Тем более если приложуха уже умеет все что надо из активти то и читать особо ничего не надо, кроме существующего кода.

Ответы934698

16 Фев, 20:49 #402 #934698

>>934682
почему не помрет? если у него 0 биндов, то помрет

Ответы934802

16 Фев, 21:06 #403 #934717

>>934322
Уровень знаний обитателей 4пда недостаточен, что бы ответить на мой вопрос. Похоже здесь тоже.

Ответы934720

sage 16 Фев, 21:13 #404 #934720

>>934717
Иди нахуй просто.

Ответы934727

16 Фев, 21:18 #405 #934727

>>934720
Быдло

16 Фев, 23:03 #406 #934802

>>934698
Сервисы хранятся в дебрях активист менагера, и когда одна активитя стопается и анбайдится сервис подождет старта следующей, а там и байнд есть, ничего не пропадет, проверено музыкальным плеером и вебртисишным аудио/видео чатом. Еще можно форграундную нотификации бахнуть.

Ответы934816934870

16 Фев, 23:24 #407 #934816

>>934802
Вы красивые слова говорите, еще б я понимал чего-то. Завтра буду переводить ваши речи.

17 Фев, 01:19 #408 #934870

>>934802
И ты это тестил на всех китайских телефонах?

Ответы934966

17 Фев, 04:19 #409 #934919

https://github.com/mchav/try-frege-android/blob/master/app/src/main/frege/io/github/mchav/tryfrege/MainActivity.fr

17 Фев, 09:14 #410 #934966

>>934870
На хуеми, который больше одной залоченой приложухи не держит - норм, на мейзу тоже. А если китайфон не тянет то пусть нахуй идет. Андроид нигде гарантии не дает что все будет круто, но форграундную сервис это как форграундную активитя и грохать ее будут в самом крайнем случае.

17 Фев, 11:52 #411 #935015

Есть вопрос касательно гитхаба.
Я скачал Git, запилил аккаунт на гитхабе. Делают пуш из Android Studio - коммит отображается как совершенный с аккаунта Git, а не гитхаба. Как исправить? Не вручную же кидать файлы...

Ответы935554

17 Фев, 19:17 #412 #935201

Купил Huawei P9 lite, телефон хороший, но есть одна проблема...
Иногда(весьма часто) не пробрасываются ошибки и ты сидишь, кучу времени пытаешься догадаться, что наебнулось. В гуглах ничего вразумительного не нашел, с другими телефонами таких проблем нет. На нём стоит Android 6. Были у кого-нибудь похожие проблемы?

Ответы935377

17 Фев, 23:49 #413 #935377

>>935201
С мейзу такая хуйня, но крашлитика все ошибки ловит и исправно шлёт.

Ответы935408935628

18 Фев, 00:22 #414 #935387

Constraitlayout в студии так требователен к железу? У меня дикие лаги когда я им пользуюсь, перетащить что то на макете невозможно из за лагов.
А если и получится, то одно неверное движение и все сбрасывается.

Ответы935393936058

18 Фев, 00:35 #415 #935393

>>935387
Он не особо стабилен ведь ещё. У меня вроде нормально работает, без тормозов. Отправь багрепорт, может починят.

18 Фев, 00:56 #416 #935408

>>935377
> но анальный зонд все ошибки ловит и исправно шлёт.
Мразь

Ответы935488

18 Фев, 10:22 #417 #935488

>>935408
Лол. Какой анальный зонд? Может ты и против гугл аналитики? Пиздос какие шизики бывают.

Ответы935570

18 Фев, 13:02 #418 #935554

>>935015
Червь пидор, в архивах и папачках храни типа Laba1_21072006, Laba1_210720061701, Laba1_21072006_1vasya_edit.rar
А про гит забудь не твое это не лезь туда. Через пару лет когда окончишь школу можеш попробовать но только под надзором взрослых

18 Фев, 13:43 #419 #935570

>>935488
> Может ты и против гугл аналитики?
Ясно.

18 Фев, 15:06 #420 #935628

>>935377
Крашлитикс то да, но пользоваться ей для отладки куда запарней, чем созданными, для этого, инструментами, лол.

18 Фев, 16:22 #421 #935653

Нормально ли хранить различные приватные данные (ключ шифровки бд, ключи api и прочее) в gradle.properties (своем .properties файле) и доставать их оттуда в каком-нибудь ленивом синглтоне в java-коде ?

Ответы935744936057

18 Фев, 18:22 #422 #935744

>>935653
>Нормально
Нет. На клиенте не должно быть ничего "секретного". Может ты и сертификат в assets пихаешь? Ключи апи (гугл хуялитика, вк хуяпи и тд не секретные данные если чо)

Ответы935760

18 Фев, 19:00 #423 #935760

>>935744
Ну, а где тогда хранить то то, что ДОЛЖНО быть на клиенте и ДОЛЖНО быть секретным ?

Ответы935763

18 Фев, 19:04 #424 #935763

>>935760
Конкретней, что ты считаешь секретным? Есть множество замечательных статей, которые поясняют, что как бы ты не изъебывался за сравнительно не долгое время все на твоем клиенте вынюхают и реверснут.

http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android

19 Фев, 03:22 #425 #936057

>>935653
Вся секретная хуйня если она действительно секретная должна быть только на серваке.

Ответы936199936344

19 Фев, 03:25 #426 #936058

>>935387
Что у тебя за компьютер, лол?

Сижу с fx8300 с 16 гб на борту - работает все нормально.
Вообще, считаю андроидстудио максимум легковестным после многолетнего опыта в VisualStudio.

Ответы936552

19 Фев, 13:04 #427 #936199

>>936057
А сикретный ключ для несиметрических алгоритмов шифрования где должен храниться?

Ответы936353

19 Фев, 16:15 #428 #936344

>>936057
Прости, но с таким же успехом можно подружить с сервером со своего устройства, и оттуда вытащить те же ключи. Разницы будет - 0. А вот как ты после DexGuard-а что-то с клиента, подверженное, вдобавок, дополнительной обфускации, вытащишь 0 мне стало интересно уже

Ответы936353

19 Фев, 16:39 #429 #936353

>>936199
Ну расшифровывать ты все равно будешь на бэкенде. Так что там же.
>>936344
Сервер взломать сложнее, чем декомпилировать и деобфусцирвоать твой хуевый жабокод. Мобильное приложение - фронтенд. Нахуй нужен бэкенд, если твоя мобилка сама себе секьюр.

Ответы936376936378

19 Фев, 17:08 #430 #936376

>>936353
Может чтобы разгрузить твой клиент от ненужной хуйни ? Мне собственно интересно, как ты хранишь ключи апишек, например, или ключи от базы данных с пользовательскими данными (и не пизди, что ты не делал ни одного приложения с ними, ога), ну или токены, что самое банальное ?

Ответы936408

19 Фев, 17:09 #431 #936378

>>936353
И да, чет ты загнул, что DexGuard-ом прогнанный код легко деобфусфируется

Ответы936721

19 Фев, 17:55 #432 #936408

>>936376
API keys не защитить никак. Как бы ты их не прятал, сетевые запросы легко перехватить и прочитать.

БД шифровать тоже особого смысла нет. За это отвечает (и должна отвечать) ОС.

Если у тебя OAuth, не какая-то самописная хуйня, то токены тоже нет смысла прятать.

Другой анон

Ответы936413

19 Фев, 18:01 #433 #936413

>>936408
Почему с oauth не надо прятать токены?

19 Фев, 18:59 #434 #936460

Есть вьюшка, а ней прикручен OnTouchListener.
Все замечательно до тех пор, пока вьюшка не разблокируется через setEnabled(false)
Проблема в том, срабатывает эвент ACTION_MOVE, а ACTION_DOWN нет - ведь вьюшка была заблокирована в момент приложения пальца.

В итоге получается очень не желательное поведение, которого должно происходить, только если был эвент ACTION_DOWN.

Как игнорировать все эвенты, перед которыми не было ACTION_DOWN?

Ничего не приходит в голову, кроме как в onDown() ставить переменную в true, а в другом месте проверять и после действия ставить обратно в false.

Ответы936469936477

19 Фев, 19:14 #435 #936469

>>936460
>setEnabled(true)

19 Фев, 19:26 #436 #936477

>>936460
Блядь, хуепадла ACTION_DOWN втискивается еще до блокировки вьюшки, и затаивается там, как сука крыса на весь процесс блокировки. А потом продолжает свое дело как ни в чем не бывало.

Видимо, вместо setEnabled придется еще и откручиватьэ\прикручивать OnTouchListener.

Ответы936479

19 Фев, 19:28 #437 #936479

>>936477
Причем, втискивается в милипиздрическое окошко по времени, пока вызывается метод и доходит до строки блокировки вьюшки.
Коварно как.

19 Фев, 20:42 #438 #936538

Котоны, помогите оценить стоимость работ: нужно приложение для андроид 5+, авторизация + 4 въюхи. Данные берутся по JSONRPC и отображаются в виде текстовой информации на вьюхах, бэк сервер готов

Ответы936549936666

19 Фев, 20:53 #439 #936549

>>936538
Подробнее про вьюхи: какие и что на них будет отображаться.
Если хочешь - сразу на мыло: kots<-20162ANUSgmR(`ailPUNCTUMcgYqom

Ответы936568

19 Фев, 20:58 #440 #936552

>>936058
Я вот использую Visual Studio 2010 Express для C# и по сравнению с AndroidStudio она выглядит максимум легковесной.
core i5 4690 8 gb ram

19 Фев, 21:19 #441 #936568

>>936549
Проверяй мыльцо

Ответы936666

19 Фев, 22:56 #442 #936666

>>936538
>>936568
Вы хоть ракалам-нубасам покажите, какие там суммы и примерно зиз чего складываются.

19 Фев, 23:45 #443 #936721

>>936378
Маня. Обфускация - не панацея. Ты же не будешь например хранить secret_key в четырежды минифицированном js на странице. Отличие минифицированной жсины от обфусцированного жабоговна отличается лишь необходимостью декомпиляции последнего. Конечно, ты можешь хранить апи ключи в клиенте сделав многоходовочку - есть надежда, что просто не будут там искать.

20 Фев, 02:54 #444 #936801

Подскажите какие нибудь более менее крупные проекты, которые можно понюхать. Дрочить мелкую хуйню по мануалам заебало. Свои проекты делаю, но иногда все же хочется посмотреть на нормальные проекты, пишущиеся командой людей, где все более менее по феншую.
Щас вот открыл дашчан пока что.

Ответы936813936848

20 Фев, 05:09 #445 #936813

>>936801
Глянь здесь haskell.org

20 Фев, 05:51 #446 #936848

>>936801
https://bitbucket.org/derekwilson/recommender-android/src/eeb49ff42b301bd42350d9ee5212998d4ef33ccf/RecommenderAndroidStudio/app/src/main/java/net/derekwilson/recommender/?at=master

20 Фев, 17:09 #447 #937142

А как можно в чистой архитектуре дядюшки Боба использовать сервисы, AccountManager и прочие контексто-зависимые классы ? Вроде и в Activity/Fragment пихать не хочется, а вроде и в data layer контекста быть не должно

Ответы937167

20 Фев, 17:22 #448 #937151

Анон, как сделать чтобы floatinActionBar пропадал по скроллу вниз и появлялся по скроллу вверх, как в апке для вконтакте?

Ответы937219

20 Фев, 17:42 #449 #937167

>>937142
В дата леере контект какраз таки плавает, ибо там в любом случае приходится иметь дело с интернет конекшном.
Остальные классы либо во вью, либо в дате.

20 Фев, 19:09 #450 #937219

>>937151
Гугли про CoordinatorLayout, если я правильно тебя понял

20 Фев, 20:05 #451 #937243

кто работал с камерой? у меня такая проблема, пропорции превью и реальные не совпадают вот

Ответы937475

20 Фев, 20:08 #452 #937246

Как сделать возможность добавлять картику с телефона/камеры/соц.сетей и т.д.?

20 Фев, 20:40 #453 #937255

У меня есть активити, с которым связано 3 *.xml файла:
activity_layout.xml
activity_content.xml
cardView.xml

так вот в контенте у меня RecyclerView из CardView
на CardView кнопочки, как мне написать для них обработчик нажатий и как привязать к обьектам, чтобы кликнув по карточке я мог получить id обьекта, который эта карточка представляет?

Ответы937265

20 Фев, 21:09 #454 #937265

>>937255
http://stackoverflow.com/questions/24471109/recyclerview-onclick

21 Фев, 08:51 #455 #937475

>>937243
Посмотри исходники barcodescanner в проекте zxing на github

22 Фев, 12:47 #456 #938409

Сап, почаны! Опять реквестирую ответ на глупый вопрос:
почему многие методы стандартной библиотеки начинаются с on? onStart, onCreate, onSet.., это специальная синтаксическая приблуда закрепленная традиционно или как? Или есть спец смысл?

Ответы938460

22 Фев, 14:44 #457 #938460

>>938409
onStart - при старте.Сразу понятно, когда вызовется этот метод.Такое много где встречается (onClickListener тот же).

22 Фев, 15:38 #458 #938483

Есть анимация с

setRepeatCount(INFINITE);
setRepeatMode(REVERSE);

Хочу, чтобы некий метод запускался, когда анимация заканчивается до возврата обратно. То есть, один раз за цикл туда-обратно, в его середине.

Не получается через AnimationListener.
onAnimationRepeat выполняется два раза за цикл, а onAnimationEnd вообще ни разу.

Как, посоны?

Ответы938489

22 Фев, 15:41 #459 #938489

>>938483
Или нужно сделать анимацию без повторов, а уже в ее AnimationListener выполнять метод, который сделает что нужно и запустит другую анимацию, которая движется в обратную сторону (а в конце запустит первую)?

87 Кб, 720x770

22 Фев, 15:46 #460 #938498

Поясните. Как вот это https://github.com/yctung/AndroidLibSvm запустить на планшетике?

Ответы938509

22 Фев, 15:57 #461 #938509

>>938498
Скачать zip.
Запустить андроид студию.
File -> import project на распакованную папку.
Run -> Run/debug

Ответы938511938514

633 Кб, 1776x2190

22 Фев, 16:01 #462 #938511

>>938509
Спасибо, попробую.

22 Фев, 16:02 #463 #938514

>>938509
Проще же
git clone & gradlew installDebug

Ответы938520

22 Фев, 16:09 #464 #938520

>>938514
>gradlew installDebug
Ну проще разве что для красноглазых пердоликов, у которых припадки эпилепсии от человеческих интерфейсов.

Ответы938546942771

22 Фев, 16:55 #465 #938546

>>938520
Но это же реально проще и быстрее.

22 Фев, 18:12 #466 #938592

react-native-calendar-events кто-то юзал?

Ответы938593

sage 22 Фев, 18:13 #467 #938593

>>938592
В js-тред, уебище.

23 Фев, 10:09 #468 #939050

Как поменять цвет контекстного меню? Какой атрибут темы за это отвечает?

23 Фев, 11:00 #469 #939065

Ребят, почему используя Retrofit последней версии я получаю
Exception: Cannot read raw response body of a converted body
при попытке прочесть сырой body?
String raw = response.raw().body().string()?

23 Фев, 15:17 #470 #939313

А на питоне нельзя наебашить под андроид? А на го?

Ответы939383939499

23 Фев, 17:04 #471 #939383

>>939313
Ебашь на Хаскелле: https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs

23 Фев, 17:16 #472 #939397

Есть одно активити, оно запускается как popup, тоесть занимает не фулл экран, на фоне видно активити с которого я его запускал.
Как сделать чтобы фоновое активити было темнее, чем popup?
Как сделать анимацию, чтобы popup появлялся снизу вверх?

Ответы939531939547

23 Фев, 19:20 #473 #939499

>>939313
На питоне есть киви, ебашишь сразу под всё кроме винфона.

23 Фев, 19:54 #474 #939531

>>939397
А нахуя активити то? ебашь алерт диалог или диалог фрагмент, а там уже гуглится как анимировать эту срань

Ответы939547

23 Фев, 20:35 #475 #939547

>>939397
У активностей можно переопределить анимацию через overridePendingTransition.
> Как сделать чтобы фоновое активити было темнее, чем popup?
Че?
>>939531
> алерт диалог или диалог фрагмент
Менее удобно же, с активити есть ламповый onActivityResult, а не богомерзкие колбэки. С просто алерт диалогом нихуя не удобно работать, если тебе приходится setView делать.

Ответы939669939822

23 Фев, 20:48 #476 #939560

Котаны, как заново запросить разрешения после того, как пользователь выбрал "больше не спрашивать" в диалоге запроса разрешений?

Ответы939577

23 Фев, 21:06 #477 #939577

>>939560
Никак. Показать ему диалог с инфой что без разрешения кина не будет, и выдать он его может в настройках, можешь даже сделать кнопочку которая его в эти самые настройки кидать будет, с помощью интента.

Ответы939589

23 Фев, 21:19 #478 #939589

>>939577
Ага, спс. Так и сделаю.

23 Фев, 21:26 #479 #939594

Как грамотно прятать токен с сессией пользователя? Пока храню в шайредпрефс, но очевидно это не лучшее решение.

Ответы939603939612939907

23 Фев, 21:32 #480 #939603

>>939594
Зачем его сохранять? Он же по-идее должен генерироваться при каждом логине и удаляться через какое-то время неактивности.

23 Фев, 21:38 #481 #939612

>>939594
Ниче не меняй, так нормально, можно сделать что бы он через некоторое время становился неактивным, это все на серваке.

99 Кб, 1080x1920

23 Фев, 22:45 #482 #939669

>>939547
Ну вот так

Ответы939676939679

23 Фев, 22:54 #483 #939676

>>939669
Так там по дефолту в теме dim указан вроде.

Ответы939677

23 Фев, 22:55 #484 #939677

>>939676
Нет.

Ответы939681

23 Фев, 22:56 #485 #939679

>>939669
Просто используй DialogFragment

82 Кб, 982x248

23 Фев, 22:58 #486 #939681

>>939677
Я такую использую, затемняется нормально.

Ответы939692

23 Фев, 23:09 #487 #939692

>>939681
Помогло, благодарю.

23 Фев, 23:26 #488 #939711

Доставьте, пожалуйста, туториал для загрузки пика из галереи, сохранение его в битмап, обрезку и вот это все.

Ответы939712

23 Фев, 23:29 #489 #939712

>>939711
ПРОСТО берешь и запускаешь интент ACTION_PICK
В результате получишь uri к файлу, если ты не с помощью DocumentProvider'a делал, то прийдется попросить пермишен на внешнюю память. А дальше берешь одну из сотни кропалок с гитхаба и без задней мысли кропаешь.

24 Фев, 02:22 #490 #939822

>>939547
>>а не богомерзкие колбэки
если собираешься быть андройд разработчиком то придется привыкать, они везде

24 Фев, 08:20 #491 #939907

>>939594
Если это временная сессия, то нормально и так. Если это какой-то более живучий по времени токен, то его хранят в AccountManager.

83 Кб, 634x385

24 Фев, 11:30 #492 #939974

Есть тут люди которые работали с модулей Camera Fragment ? нужна помощь, потому что я дико криворукое хуйло. пишите в телегу t.me/ksmolniy

Ответы940017

49 Кб, 246x429

24 Фев, 12:20 #493 #940000

Сап /pr/, есть один RecyclerView.
Нужно сделать чтобы даты выводились как в скайпе. Всегда висела полупрозрачная дата сверху, а при скролинге встраивалась в divider.
Есть варианты?

Ответы940002

112 Кб, 500x500

24 Фев, 12:23 #494 #940002

>>940000
Хм, сейчас подумал что проще всего будет декомпилировать сам скайп

Ответы940007

24 Фев, 12:42 #495 #940007

>>940002
Хуйня будет. Делаешь тип вьюхолдеров для дат, они будут в общем списке. А по скролу берешь у LinearLayoutManager'a первую и последнюю частично видимые позиции, дальше опираясь на свой список данных чекаешь есть там интересующая тебя дата или нет. Если есть прячешь отдельную вьюшку, показывающую дату, иначе делаешь ее видимой, как-то так, но я пиздабол с двача и возможно это будет не эффективно/не красиво.

Ответы940014940102

24 Фев, 12:56 #496 #940014

>>940007
> но я пиздабол с двача и возможно это будет не эффективно/не красиво.
На самом деле норм, сам так делал.

sage 24 Фев, 13:05 #497 #940017

>>939974
Обоссал тебе ебало.

24 Фев, 14:26 #498 #940056

Небольшое приложение состоит из одной активити и кучки фрагментов которые добавляются/заменяются/удаляются когда нужно, иногда используется back stack. Как правильно сохранять состояние иерархии фрагментов на случай если активити терминируют?

Ответы940072

24 Фев, 14:54 #499 #940072

>>940056
Бэкстек фрагментов сохраняется в onSaveInstanceState, в чем твоя проблема?

Ответы940085

24 Фев, 15:11 #500 #940085

>>940072
> Бэкстек фрагментов сохраняется
Я значит неправильно причину определил. У меня один фрагмент добавлялся в активити при создании (в onCreate), и потом он заменялся (когда нужно) на второй с помощью replace. При пересоздании активити фрагменты накладывались друг на друга. Я думал что там с бекстеком какие-то пиздарики, - но проблема в том что первый фрагмент добавляется всегда, и при восстановлении активити - кода он уже в бекстеке и новый добавлять не нужно. Какой нормальный способ следить за подобным? Конкретно в моем случае достаточно проверить глубину бекстека, это норм подход или нужно что-то более надежное писать?

Ответы940088

24 Фев, 15:13 #501 #940088

>>940085
В onCreate:
if (savedInstanceState == null) {
addFirstFragment();
}
А иначе ниче не делай.

24 Фев, 15:25 #502 #940102

>>940007
Спасибо анон, пошёл пилить.

19 Кб, 620x583

24 Фев, 16:56 #503 #940176

Каким образом можно проиграть анимацию до закрытия активити? То есть мне нужно при создании или уничтожении активити проигрывать анимации появления/пропадания вьюх в активити. С анимациями при создании активити разобрался, а вот при уничтожении чёт не могу. Пробовал пихать анимации в finish() и onDestroy(), но они само-собой убивают активити прямо во время отрисовки анимации. Мне же нужно что бы оно подождало завершения анимации. Возможно ли это вообще сделать без фрагментов?

Ответы940224940267

24 Фев, 18:22 #504 #940224

>>940176
Короче в пизду, ебанул колбеком.

24 Фев, 19:54 #505 #940267

>>940176
> Мне же нужно что бы оно подождало завершения анимации
Берешь onBackKeyPressed, вызываешь в нем анимацию без super, в onAnimationEnd - finish. Но это похоже на лютую хуйню, что ты пытаешься сделать.

Ответы940271

24 Фев, 20:03 #506 #940271

>>940267
Вот типа такой хуйни пытаюсь сделать - https://developer.android.com/design/material/videos/ContactsAnim.mp4
Там прежде чем закрывается активити floatingActiobButton сворачивается в точку. Соответственно при создании активити она восстанавливается обратно. Т.е. у меня будет куча анимаций (на каждую вьюху) и мне надо было сделать функцию, которая бы их все вызывала при открытии и при закрытии активити.

30 Кб, 799x686

24 Фев, 20:43 #507 #940307

Возможно ли это как-нибудь упростить?

Ответы940352969376

24 Фев, 21:38 #508 #940352

>>940307
Щас бы в subscriber'e observable создавать, вместо flatMap.

Ответы940356

24 Фев, 21:45 #509 #940356

>>940352
Так-так. Вот тут по подробнее. Мне вообще что нужно - чекнуть бд на предмет записи, если запись == null, то вызвать функцию. Если запись != null, то сделать реквест на сервер, получить ответ, сохранить его в бд и вызвать функцию. Получается, я могу этот запрос сделать из flatMap? Но как тогда быть с вызовом функции? Бросить эксепшон и вызвать её в onError? Так бы не хотелось делать.

Ответы940357

24 Фев, 21:46 #510 #940357

>>940356
А, точно, я же могу просто null вернуть и в subscribe если null то вызвать функцию.

24 Кб, 604x590

24 Фев, 21:56 #511 #940363

Заебись.

Ответы940390940566

24 Фев, 22:47 #512 #940390

>>940363
Зачем тебе onLoggedIn() в onError, у тебя такого не было.
> Бросить эксепшон
Есть же Observable.error, этот метод лучше чем throw.

Ответы940398

24 Фев, 23:01 #513 #940398

>>940390
>Зачем тебе onLoggedIn() в onError, у тебя такого не было.
Короче там суть в том, что эта функция вызывается в любом случае. Она запускает новое активити, даже если произошла ошибка. Просто само активити будет работать либо в гостевом режиме (если в бд не было логина и пароля) либо не в гостевом (если логин и пароль в бд были и авторизация прошла). Вообще, наверно, лучше поменять их на две разных функции.

>Есть же Observable.error, этот метод лучше чем throw.
Запомню.

25 Фев, 10:03 #514 #940566

>>940363
Пиздец макаронину ты написал

93 Кб, 1204x511

25 Фев, 10:08 #515 #940570

Недавно читал в перезвоним-треде вкатчика из ваших, ему выкатили список вопросов пикрелейтед на 30к рублей. У вас правда всё так печально?

Ответы940618940621

25 Фев, 12:14 #516 #940618

>>940570
Пиздец, на 30к просто сразу нахуй. Еще не удивлюсь, если позиция была на джуна.

25 Фев, 12:17 #517 #940621

>>940570
Вопросы на 200 к.
Вообще охуели конечно.

25 Фев, 16:00 #518 #940782

ПЕРЕКАТ https://2ch.hk/pr/res/940781.html (М)

ПЕРЕКАТ https://2ch.hk/pr/res/940781.html (М)

ПЕРЕКАТ https://2ch.hk/pr/res/940781.html (М)

28 Фев, 08:32 #519 #942771

>>938520
Дожили, открыть консольку и ввести одну команду умственно-остальным дегенератам уже сложно, им подавай жирную иде на скачивание чтобы разово собрать какую-то срань.

Ответы942772

sage 28 Фев, 08:32 #520 #942772

>>942771
*отсталым, конечно же.

Аноним 02 Мар, 21:52 #521 #944887

>>919925
Лучше сделать REST-сервис, а не использовать FTP.

Аноним 02 Мар, 22:18 #522 #944915

>>922508
Мы используем AdapterDelegates

04 Мар, 19:01 #523 #946348

Аноны, есть один сервис, у сервиса есть API.
Сейчас вот задумали писать под него в том числе Android-клиент.
Подскажите, какой библиотекой проще всего организовать отправку и получение данных по POST в Android? А то я вот сейчас читаю и понимаю, что вариантов дохуя, при этом половина уже deprecated
Что нынче в тренде по этой теме?

Ответы947475

06 Мар, 10:33 #524 #947475

>>946348
Retrofit/Guava (последняя - многофункциональная йоба, если нужно только запросы делать, лучше - Retrofit + OkHttp)

07 Мар, 19:44 #525 #948669

А кто какие исключения отлавливает, делая http запрос ? Из очевидного только UnknownHostException всеми нами любымый приходит :)

26 Мар, 17:49 #526 #961386

Котаны, поясните за Xamarin плиз.
Я тут просто попробовал пару приложений накатать совсем простых. И вроде все удобно и интуитивно понятно после AndroidStudio.
Поясните, кто любит, кто ненавидит и за что, почему...

Не такой как все 28 Мар, 02:41 #527 #962204

Антоны, шо за хуйня? Мне кажется, или блять все дружно решили вкатиться в андроид весной? я уже 1.5 года ебусь с джавой и андроидом, а тут набежало блять стадо с вопросом "как установить андроид студио", заебала уже эта ебаная ревность, аноны. Я из Харькова, аноны. Так вот, знаете, у нас общество делится на две категории, угадайте блять какие - фотографы и айти. Все вагоны в метро облеплены рекламой "обучим макакингу за нехуй делать и за ваши деньги", айти-школ больше чем детских садиков. На днях мне блять звонили с ШАГА УГОВАРИВАЛИ прийти к ним! переодически наталкиваюсь на комменты в стиле "вакансий джунов давно нет, идите нахуй". Знаете, все это как-то демотивирует и разрушает мои розовые мечты о светлом будущем, хоть я и такой же как все остальные, когда въебала крыза пошел в айти (но пока не дошел), но страшно бесит эта массовость и как-то хочется идентифицировать себя как уникальную личность, но не поулчается. Все. Очень. Плохо.

Ответы968326

06 Апр, 20:23 #528 #968326

>>962204
Та же хуйня, решил вкатиться в ведро потому что думал, что веб и энтерпрайз это мерзко, а на всё остальное вакансий всё равно нету.
Только я ещё и живу в ебенях, и в отличии от тебя мне надо переехать и снимать хату и ещё мне 27.
Впрочем, если ничего не получится, то думаю выпилиться, так что похуй, уже можно сказать смирился.

08 Апр, 17:36 #529 #969376

>>940307
Удали нахуй. Реально. Это убийство моих глаз должно умереть. Разбей логику по clean mvp

Тред утонул или удален.
Это копия, сохраненная 6 мая 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion