Сохранен 529
https://2ch.hk/pr/res/919538.html
Домены arhivach.top и arhivach.site временно не функционируют! Используйте домен ARHIVACH.XYZ.
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Android Development Thread 2.1.0

 Аноним 25/01/17 Срд 23:31:13 #1 №919538 
cleanimage.png
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
Аноним 25/01/17 Срд 23:34:27 #2 №919541 
Принимаются варианты для следующих ОП-пиков
Аноним 26/01/17 Чтв 00:42:56 #3 №919573 
14631410243960.jpg
>>919117
>Это не учебник а скорее справочник. Но годный. Не повторяй моих ошибок - не вкатывайся начиная с него.


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

Аноним 26/01/17 Чтв 00:58:45 #4 №919581 
Анон, что значит "application is idle"
Что оно в onPause()?
Аноним 26/01/17 Чтв 01:03:59 #5 №919584 
>>919581
Вагина тваей мамашки защемила хуй маги.
Аноним 26/01/17 Чтв 01:22:30 #6 №919595 
>>919581
Откуда это?
Аноним 26/01/17 Чтв 12:22:57 #7 №919733 
>>919573
Может сначала лучше человеку с неокрепшей психикой Эккеля почитать, дабы вкатиться ?
Аноним 26/01/17 Чтв 12:23:27 #8 №919734 
>>919541
Трапы закончились ?)
Аноним 26/01/17 Чтв 12:37:07 #9 №919746 
Катаны, теряюсь в догадках, а решить нужно быстро: что бы вы рассказывали людям первым делом, когда знакомили их с разработкой под ведро ? Пока что думаю рассказать базовую информацию по Gradle, манифесту, соответственно перечислить основные компоненты приложений - Application, Activity, Service, IntentService, BroadcastReceiver, ContentProvider. Потом уже после введения на первой лекции думаю рассказать более детально об Activity. Вопрос - насколько детально, и правильный ли я подход выбрал ? Люди знакомы с ООП, скорее всего на уровне джунов владеют шарпами.
Аноним 26/01/17 Чтв 12:40:52 #10 №919747 
>>919746
Вкратце программа на ближайшие лекции четыре-пять выглядит так:

1) Сборка проекта. Управление зависимостями​
2) Стандартные компоненты. Составляющие приложения​
3) Проектирование UI и верстка​
4) Пакет java.util.concurrent. Асинхронное выполнение задач​
5) Работа с базами данных. Пакет android.database​
6) Обращение к сети. Пакет java.net​
7) Шаблоны проектирования. Архитектура приложений​
8) Unit-тестирование. Функциональное тестирование
Аноним 26/01/17 Чтв 13:54:46 #11 №919784 
Аноны, как вы работаете с OAuth? Юзаете какие то либы?
Аноним 26/01/17 Чтв 14:01:59 #12 №919788 
>>919784
retrofit, okhttp
Аноним 26/01/17 Чтв 14:09:00 #13 №919793 
Как создать таймер по типу секундомера?
Аноним 26/01/17 Чтв 14:12:22 #14 №919797 
>>919747
Добавь

0) Kotlin

А вообще взял бы современную книжку по android с хорошими отзывами и заюзал бы ее оглавление
Аноним 26/01/17 Чтв 14:33:52 #15 №919802 
Kotlin.png
>>919797
Аноним 26/01/17 Чтв 14:47:06 #16 №919807 
>>919733
Хуйня какая то для хипстеров.
Аноним 26/01/17 Чтв 14:53:47 #17 №919809 
>>919788
ну это же только для получения токена, а открыть браузер и получить от туда "code"
Аноним 26/01/17 Чтв 15:02:23 #18 №919814 
привет, аноны, у меня к вам такй вопрос, что вроде как и кажется, что элементарное, но и не совсем. В общем, как реализовать TextView так, что при задавании ему слишком большого текста (например, более 3 строк) в конце ставилось троеточие и текст остальное обрезался?

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

Кто-то такое реализовывал или возможно знает как такое сделать?
Аноним 26/01/17 Чтв 16:14:38 #19 №919873 
>>919809
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(%юрл сюда пихай%));
startActivityForResult(intent, 228)
Аноним 26/01/17 Чтв 17:10:29 #20 №919898 
>>919573
Реально попутал. Один фиг там сначала этот учебник встроен.
Аноним 26/01/17 Чтв 18:10:19 #21 №919922 
Анон, я тот нуб-кун из Киева. За недельку склепал аппу на 1500 строк юзающаю retrofit для openweather, picasso, Google maps api. Из корного: лоадеры, адаптеры, анимации, фрагменты и ещё кучу всякой мелкой дичи типа пермишинов, мультипотточности и тд. Что бы ещё сделать для портфолио что бы вкатиться джуном в киев.
Аноним 26/01/17 Чтв 18:13:51 #22 №919925 
Анон, как лучше всего организовать хранение данных? Суть токова: в приложении должен быть телефонный справочник и некая справочная информация. Причём, должна быть возможность и то и другое редактировать централизовано.
Я пока додумался вот до такого: есть фтп-сервер, на котором лежит справочник в виде xml, справочная информация в виде html-страниц. При каждом запуске или по таймеру приложение коннектится к этому серваку и скачивает эти данные, если они изменились.
Делаю своё первое относительно большое приложение практически с нуля, поэтому не знаю, как вообще подобные штуки реализуются. Этот способ мне показался наиболее простым.
Или может как-нибудь по-другому это можно реализовать?
Аноним 26/01/17 Чтв 18:24:03 #23 №919934 
>>919541
Вебемкой вот это видео
https://www.youtube.com/watch?v=tVl2fkUY5PI

Кек.
Аноним 26/01/17 Чтв 18:27:29 #24 №919937 
2012-03-07-15-49-22-2-asus-could-well-be-the-first-company-[...].jpeg
>>919541
Аноним 26/01/17 Чтв 19:36:34 #25 №919959 
Как делать модульные приложения? Например как Total Commander для которого можно скачать модули в виде отдельных apk, которые расширяют функционал.
Аноним 26/01/17 Чтв 20:31:23 #26 №919977 
>>919959
смотри что такое productFlavours
Аноним 26/01/17 Чтв 20:50:55 #27 №920007 
>>919977
>смотри что такое productFlavours
Product flavours это для сборки разных версий одного приложения. А нужно: базовое приложение + модули расширений. Например у меня есть com.example.app и я хочу что бы пользователь мог поставить модуль расширения com.example.app.extension с возможностью вызывать методы из этого пакета в основном приложении com.example.app
Аноним 26/01/17 Чтв 21:07:33 #28 №920024 
>>920007
Bind Service AIDL IPC.
ContentProvider
Аноним 26/01/17 Чтв 21:24:43 #29 №920036 
>>919977
Ебал тя в глотку.
Аноним 27/01/17 Птн 10:14:20 #30 №920211 
7cb84b8736923dc26ea3024e8d204314.gif
>>919922
>За недельку
>склепал аппу на 1500 строк юзающаю retrofit для openweather, picasso, Google maps api. Из корного: лоадеры, адаптеры, анимации, фрагменты

Представляю какое у тебя там месиво и спагетти из г####-кода :)
Аноним 27/01/17 Птн 10:40:02 #31 №920217 
>>920211
Да ладно тебе, в 1,5k строк наврядли реально месиво сделать, даже если в одном классе все. Это нужно талант иметь (не иметь)
Аноним 27/01/17 Птн 17:58:00 #32 №920356 
Как организовать с rx подобную шляпу:
1) На определенном экране подписываюсь на обновление конкретной таблицы в базе (storIo);
2) Получая обновления отображаю их;
3) По клику на кнопку делаю всякие другие штуки;

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

Я попробовал с сабжектами, гляньте может где ненужная аллокация новых обсервеблов, или можно проще:
http://pastebin.com/AwKSsQ9C
Аноним 27/01/17 Птн 18:25:46 #33 №920368 
core 2.png
Прочитал первый том хорстманна. Стоит ли что-то из второго читать?
Аноним 27/01/17 Птн 22:08:36 #34 №920493 
>>920211
Нуб то нуб. Но кодю года три, олимпиадник да и кто такая банда четырех знаю. Просто до этого кодил лабы, всякую херь да курсачи/дипломы.
Аноним 27/01/17 Птн 22:15:14 #35 №920496 
>>920493
upd: Может ли кто то заодно подсказать куда копать что бы при удалении элемента карточки из ресайкла запилить анимации передвижения карточек. notifyDataSetChanged просто перезапускает адаптер как я понимаю.
Аноним 27/01/17 Птн 22:29:16 #36 №920504 
>>919922
Что за аппа-то?
Аноним 27/01/17 Птн 22:42:04 #37 №920518 
>>920504
Вот то что выше в прямом смысле - карточки мест с картинкой, дистанцией до заданной локации и погодой в этом месте. Их можно добавлять, да модифицировать - указывать ссылку нахождения пикчи или выбирать ее с помощью файлового менеджера. Локацию вводить гмапс апи. Все правослано через провайдеры/лодеры/адаптеры. Настолько что точно пойду учить реакт ради нахваленого выше сторио.
Аноним 27/01/17 Птн 22:47:05 #38 №920524 
14380795710340.png
>>920493
>олимпиадник
уженеШкольничек-властелин-laba1, пытается кого-то удивить
Аноним 27/01/17 Птн 23:10:24 #39 №920528 
>>920524
Не школьные олимпиады. И отъебись ты уже от меня если сказать нечего.
Аноним 27/01/17 Птн 23:13:48 #40 №920532 
>>920496
И могут ли быть на собеседовании вопросы про внутрянку HTTP(Не только что такое гет/пост а и расписать что еть что в запросе и как его сформировать , можно ли вкратце рассказать про OkHttp?) или внезапно HTML(стоит ли повторять, разметку я то прочитать могу, а вот с ходу написать что то нет)
Аноним 27/01/17 Птн 23:19:40 #41 №920541 
Написал пару крудов, одно чуть более сложное приложение.
Хотелось бы угореть по MVP, собрал за некоторое время кучу статей. К сожалению, большинство из них очень короткие и описывают в общих чертах что это за архитектура и потом набрасывают пример который и без MVP бы не умер.
Некоторые ещё и предлагают использовать свои какие-то васянские либы-реализации MVP использовать (в туториалах обучающих MVP).
Короче, я хотел бы изучить вопрос в минималистичном сеттинге, где все интерфейсы пишутся и реализуются с нуля, и если используется хуйня типа Rx, event bus, DI или ещё чего-то, то только после того как появились проблемы а не сразу блядь всё.
Проходил какой-то мини-туториал от гугла что-то там про тестирование. Сделали годно, но может есть что-то более развёрнутое?
Аноним 27/01/17 Птн 23:38:20 #42 №920564 
>>919922
Много там в киеве джунопозиций? Я что-то по объявлениям не сказал бы. Сам думаю вкатываться джуном по весне, но мне надо будет переезжать.
Вообще, не хотел бы ехать в киев, предпочёл бы одессу или львов.
Впрочем, судя по количеству вакансий может ещё никуда не поеду и пойду работать на стройку. Кто что может пояснить за джунские позиции в украине?
sageАноним 27/01/17 Птн 23:45:22 #43 №920572 
>>920528
>Не школьные олимпиады
А ну это другое дело, так домашку уже сделал?

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

Но с чего ты взял, что ты можешь стать хорошим программистом и писать понятный и поддерживаемый код?
Аноним 28/01/17 Суб 00:00:22 #44 №920583 
>>920572
Потому что мне нравиться кодить, мне интересна платформа и я хочу изучать ее. Или у нас в кодерах только те у кого на левой ягодице метка, спец службы находят их и они в яслях пишут проекты на миллион? Я не ебаный избранный Нео. Но я хочу въёбывать над тем что мне интересно.
Аноним 28/01/17 Суб 00:02:03 #45 №920584 
>>920572
С зубрежкой хуево кстати.
Аноним 28/01/17 Суб 00:48:20 #46 №920615 
>>920583
Кодь и не обращай ни на кого внимания, можешь даже код понятный не писать. Про олимпиады, впрочем, никому не рассказывай в контексте разработки.
Аноним 28/01/17 Суб 02:55:21 #47 №920665 
blob
Правильно ли я понял что для каждого типа экрана следует клепать свою формочку?
https://developer.android.com/training/basics/supporting-devices/screens.html
Аноним 28/01/17 Суб 11:48:06 #48 №920730 
>>920496
notifyItemRemove? можно еще в сторону diffUtill посмотреть, люди его советуют юзать. Но у меня пока руки не дошли
Аноним 28/01/17 Суб 11:52:27 #49 №920739 
Гайс, а че тут все так на стор ио дрочат? Нативный sqlite уже не котируется?
Аноним 28/01/17 Суб 12:01:00 #50 №920744 
>>920665
Нет, делай сразу растягиваемые формочки.
Аноним 28/01/17 Суб 13:56:49 #51 №920788 
Решил изучить разработку под мобильные усройства. Загрузил Андроид студио - и немного присел. Виснет "намертво" после долгой загрузки главного окна.
Какие ему нужны системные требования-то? Нет среды разработки полегче? Как мне быть то :(

2гига ram, 2 ядра на пассивном охлаждении, до этого момента с тормозами не сталкивался
Аноним 28/01/17 Суб 14:18:19 #52 №920803 
>>920493
олимпиадник в общем то может рассчитываться как оскорбление, ибо олимпиадный код всегда нарушает овердохуя правил нормального кода проекта
Аноним 28/01/17 Суб 15:21:22 #53 №920825 
Слушайте, андроидокуны. А что вы все время разрабатываете? Вот реально интересно стало. У меня идей нет совсем, вот прям совсем. Всё ведь есть уже, а игори один кодер не сделает. Какое такое приложение можно сделать, чтоб заебись и не ебаться с нейросетями? Уже и парсеры всевозможные есть, и погодные аппы, и агрегаторы и справочники, и поисковики и пиздец. В общем, уже есть всё, так что же сделать такое, чего нет?
Аноним 28/01/17 Суб 15:23:05 #54 №920827 
Как поменять цвет фона в контекстной и бар-менюшке? Это делается через стили, я правильно понял?
Аноним 28/01/17 Суб 15:42:06 #55 №920829 
>>920788
>Виснет "намертво" после долгой загрузки главного окна.
Попробуй увеличить heap до 1Gb
>Нет среды разработки полегче?
Eclipse
Аноним 28/01/17 Суб 15:50:32 #56 №920832 
>>920825
> А что вы все время разрабатываете?
Очередной клиент к рестопараше, тысячи их.
КАЧАЙ @ ПОКАЗЫВАЙ @ КАЧАЙ @ ПОКАЗЫВАЙ @ КАЧАЙ @ ПОКАЗЫВАЙ @ КАЧАЙ @ ПОКАЗЫВАЙ
Уже блевать охото.
Аноним 28/01/17 Суб 16:34:02 #57 №920880 
>>920825
Что ты так боишься ебли с нейросетями, бля? Все эти распознавалки хуйни давно закодили.
А вообще, углубление обычно идёт в конкретную область. Например, какая-нибудь специфическая ебля с системными настройками, через всякие дырки в системе. Или там сетевой клиент по какому-нибудь протоколу. Или ещё какая хуйня со сложными вьюхами
Аноним 28/01/17 Суб 16:36:29 #58 №920885 
>>919922
>вкатиться джуном в киев
Чувак, джуны в киеве не нужны уже как пару лет. Тебе надо думать об иммиграции
Аноним 28/01/17 Суб 16:38:32 #59 №920889 
>>919746
Я бы немного рассказал про процессы в юниксе, UI-поток в ведре. Потом структура приложения и схема его работы. Потом - активити и прочее
Аноним 28/01/17 Суб 17:43:14 #60 №920924 
>>920885
а в иммиграции джуны нужны что ли?
Аноним 28/01/17 Суб 17:48:37 #61 №920927 
>>920541
Просто осознай суть, и пили свой велосипед, который будешь на протяжении нескольких проектов подтачивать. MVP у каждого свой, вопрос предпочтений же. Можешь посмотреть статьи Mosby о его вариации
Аноним 28/01/17 Суб 17:50:00 #62 №920928 
>>920744
фи, а кто будет делать разный дизайн для телефонов, 7' и 10' ?
Аноним 28/01/17 Суб 17:57:25 #63 №920930 
Возвращается кэширование-очень-нужно-ананас из предыдущего треда. Вопрос следующий, насколько вменяема модель поведения в контексте мессенджера:
1) подключаемся на прослушку сокета после получения токена сессии, все сообщения полученные по этому каналу сплитим, в зависимости от данных в json-ах, приводя к нужным типам данных.
2) после получения обновления - пишем в базу, с использованием реактивной DAO обертки. Суть в том, что далее все подписчики по нужным эвентам будут извесчены что есть новые данные в таблице и будут получены с их стороны данные об измененном/добавленном ресурсе.
3) подписчик в лице презентера соответственно подписывается в начале жизни на нужный DAO, буфферит изменения, как только к нему байндится вьюха - сплевывает в нее свежие данные из бд. Так же обновляет в реальном времени.

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

Expiration будет скорее всего просто по количеству записей. То есть храним n-ное количество переписок, обновляя данные по ним, когда создается новая или старая выходит в топ - трем каскадно все таблицы связанные с перепиской последней по обновлению и вносим новую
Аноним 28/01/17 Суб 20:25:42 #64 №921040 
>>920825
> что же сделать такое, чего нет?
Найди работу ba dum tss*
тогда и не будешь задавать такие тупые вопросы
Аноним 28/01/17 Суб 21:00:22 #65 №921062 
>>920930
>нужно, чтобы все быстро грузилось, и показывались обновления в реальном времени (а пинг до сервера около полутора секунд)
Для мессенджера как по мне похуй, мне тян не отвечают по полтора часа а потом пишут извини занята.
Аноним 28/01/17 Суб 21:34:31 #66 №921086 
Допустим, есть служба, которая даже при всех закрытых activity делает что-то каждый час, например. И отображает счетчик в activity.

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

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

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

И при этом, чтобы телефон мог баиньки. Как усидеть на двух стульях?
Аноним 28/01/17 Суб 21:49:49 #67 №921091 
>>921086
Что думаете про такой вариант?
1) Activity сворачивается\умирает
-CountDownTimer останавливается записывается текущее время\дата ирл.
-Стартуется AlarmManager с оставшимся временем на счетчике

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

Как еще можно сохранить счетчик, не насилуя батарею?
Аноним 28/01/17 Суб 21:50:39 #68 №921092 
>>920583
Не слушай даунов, кодинг — примитивный макакинг (особенно когда идёт речь про мобилки или веб) и стать кодером может вообще любой, не нужно утруждаться вопросами «смогу ли я». Просто делай и всё будет хорошо.
А олимпиадник это даже плюс, довольно хорошо развивает как программиста и даёт некоторые навыки написания эффективного кода.
Аноним 28/01/17 Суб 22:27:04 #69 №921103 
charfluttershy.png
Как убрать индексирование изображений в отдельной папке?
Создал файл .nomedia, почистил кэш, остановил службы, отвечающие за галерею (вроде как все), ребутнул смартфон и все-равно этот ебучий андроид добавляет мою порнуху с понями в галерею.
Аноним 29/01/17 Вск 00:17:03 #70 №921163 
Ее-е а кто это на ОП пике?
Аноним 29/01/17 Вск 03:30:25 #71 №921279 
Вопрос про использование MVVM в андроиде.
В WPF он есть. В AngularJS он есть. В андроиде вообще нихуя нету? Только MVCP, только хардкор?
Аноним 29/01/17 Вск 12:53:52 #72 №921384 
>>921163
Так это ОП и есть. Ты ньюфаг что ли?
Аноним 29/01/17 Вск 13:02:07 #73 №921388 
331ff6c7de711b2664803cbe4c140c8b.jpg
>>921279
Хочешь MVVM — бери и делай MVVM.
> В андроиде вообще нихуя нету?
Архитектура в твоём приложении, а не в андроиде.
Аноним 29/01/17 Вск 13:26:59 #74 №921400 
Аноны, поясните: нахуя в clean architecture и им подобных используется отдельный набор сущностей для domain-слоя, если он управляет чисто обработкой? Алсо, когда вам нужен только один параметр из сущности, добываемой из репозитория (url из аудио или изображения, юзернейм из юзера и т.д.) - в каком слое вы разбираете эту сущность, и передаёте отдельный параметр дальше?
Аноним 29/01/17 Вск 13:52:30 #75 №921414 
>>921388
Архитектура может быть ограничена сдк ведра, тот же злоебучий контекст например.
Аноним 29/01/17 Вск 13:56:48 #76 №921423 
>>921414
Ну и какая тебе нахуй архитектура, если ты даже от контекста абстрагироваться не научился? Возвращайся, когда поумнеешь, тогда можно будет и архитектуру обсудить.
Аноним 29/01/17 Вск 18:24:04 #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/01/17 Вск 18:29:01 #78 №921595 
>>921279
В андроиде есть DataBinding - https://developer.android.com/topic/libraries/data-binding/index.html - тот же WPF но сильно упрощенный.
Но я считаю что писать код в xml это зло, если так хочется mvvm, смотри в сторону Rx bindings
Аноним 29/01/17 Вск 19:44:17 #79 №921625 
>>921595
Спасибо бро.
Зло, описывать всю логику взаимодействия контроллера с вьюхой через биндинги. Но для простецких задач, типа, привязки полей модели к инпутам вьюхи - вполне себе норм. Не нужно писать кучу ненужного кода и заняться решением бизнес задач.
Аноним 29/01/17 Вск 20:21:53 #80 №921662 
А есть ли какой-то способ не используя ContentProvider получать уведомления об изменении контента в базе данных ?
Аноним 30/01/17 Пнд 10:11:33 #81 №921881 
>>921662
В StorIO есть rx обертка над ним. А так - нет.
Аноним 30/01/17 Пнд 10:24:52 #82 №921892 
>>921662
Ну в общем то, была бы она на rx2 - я бы не рыпался, но увы. Поскольку проект висит на rxJava2 - то не могу позволить себе подключить первый только ради этого
Аноним 30/01/17 Пнд 10:42:05 #83 №921903 
Хм, а как лучше организовать общую абстракцию для работы с сервером и с базой - предоставлять фабрики DAO для каждого из ресурсов из репозиториев и сводить к одному в модели c добавлением хэндлеров на случаи ошибки ?
Аноним 30/01/17 Пнд 10:57:40 #84 №921908 
>>921903
А зачем тебе общая абстракция для сервера и базы? Это как-бы разные вещи. Или у тебя ремоут база с которой ты тоже по хттп общаешься?
Аноним 30/01/17 Пнд 11:39:57 #85 №921915 
>>921903
Пытаюсь попробовать на уровне модели разобраться со свичем между загрузкой с сервера и из базы с сохраненными ранее данными
Аноним 30/01/17 Пнд 12:15:38 #86 №921920 
>>921892
Просто подключаешь interop, тебе не нужно подключать первую.
Аноним 30/01/17 Пнд 12:15:59 #87 №921921 
>>921903
Паттерн репозиторий
Аноним 30/01/17 Пнд 12:39:44 #88 №921932 
>>921920
Что? Можешь попродробнее ?
Аноним 30/01/17 Пнд 14:04:45 #89 №921982 
>>921932
https://github.com/akarnokd/RxJava2Interop/blob/master/README.md
Аноним 30/01/17 Пнд 16:33:31 #90 №922077 
А кто-нибудь делал тут unit-тестинг своих классов, использующий storIO ?
Аноним 30/01/17 Пнд 16:51:53 #91 №922087 
В частности интересно как проверить работу sqlite триггеров
Аноним 30/01/17 Пнд 18:43:08 #92 №922250 
Приветствую. Читаю про Даггер вот это https://habrahabr.ru/post/279125/ и не могу понять как использовать конструкторы модулей.
Я так понял, модули ты пишешь не для себя, а для компонента, который будет их использовать. В смысле, ты в коде модулей вообще не касаешься. А как тогда использовать конструктор, чтобы передать тот ж контекст?
Или я все неправильно понял?
Аноним 30/01/17 Пнд 19:28:07 #93 №922297 
Поясните про это гуглоподелие? Для теста компилятора брал таймзоны ftp://ftp.iana.org/tz,
вывод показал кучу несоответствий стандартам POSIX. Как Андроид работает с этой датабазой несоответствующей POSIX?
Аноним 30/01/17 Пнд 19:35:49 #94 №922311 
>>922077
Юниттестировать классы, работающие с бд - пердолинг, бесполезный, если все делать по правилам.
Куча ненужного кода, который уже реализован в тестируемом классе. А использовать уже написанный нельзя - ведь "азаза не независимый тест". В итоге тратишь на тесты времени больше, чем на тестируемый код.

Либо вертеть на хую фанатиков независимых тестов, и тестировать в качестве "интеграционных тестов", в определенном порядке.
Аноним 30/01/17 Пнд 19:48:37 #95 №922335 
>>922311
Например, тебе нужно протестировать метод, который удаляет что-то из базы данных.

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

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

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

Но зато юнит-идеалисты будут довольны.
Аноним 30/01/17 Пнд 19:52:34 #96 №922343 
>>922335
И опять же, при изменении структуры бд тебе всегда придется переписывать тесты вместе с методами.

Лучше и аккуратнее и менее ресурсозатратно - тестировать методы, работающие с бд, последовательно.
Создал, записал, вытащил, проверил, удалил.
Аноним 30/01/17 Пнд 21:30:36 #97 №922459 
Ничего не могу найти на этот вопрос. Виджеты разделяют с приложением экземляр application или нет?
То есть, общие глобальные переменные через него возможно делать?
Аноним 30/01/17 Пнд 21:39:05 #98 №922467 
>>922250
Если у тебя есть модули с конструктором ты их сам создаешь и передаешь компоненту при его создании.
Пример из твоей же статьи:
[CODE]protected AppComponent buildComponent() {
return DaggerAppComponent.builder()
.appModule(new AppModule(this))
.build();
}[/CODE]
Аноним 30/01/17 Пнд 21:40:38 #99 №922470 
>>922459
Да, applicationContext у вас один.
Аноним 30/01/17 Пнд 21:49:38 #100 №922485 
>>922467
спасибо
Аноним 30/01/17 Пнд 22:02:52 #101 №922508 
https://habrahabr.ru/post/320242/
Господа, кто-нибудь реально убирает ифы в своих адаптерах, и пишет подобный велосипед? Это же полный пиздец и код ради кода, нет?
Если, например, у вас адаптер работает в двух режимах отображения элементов, в зависимости от параметра X - придётся либо использовать ифы, либо устраивать велосипед из енамов енамов.
Аноним 30/01/17 Пнд 23:01:03 #102 №922613 
Призываю тех кто много кодит приложух. Вот смотрите, в веб-программировании, нужно подгонять сайт под различные разрешения и браузеры. А как с этим обстоят дела в андроид? Нужно ли пердолить приложение под каждый телефон, версию андроида итд? Сильно ли это заебывает или всё просто? Казалось бы джавовское write once run anywhere, а на деле хуй.
Аноним 30/01/17 Пнд 23:35:03 #103 №922672 
>>922613
Пиздуй в гугл, все это разжевано донельзя.
Write once run anywhere больше касается архитектуры, радуйся что тебе не нужно задумываться "так это x86, тут sequential consitency, а вот тут для arm, нужно добавить memory fence иначе процессор может поменять инструкции"
Аноним 30/01/17 Пнд 23:38:29 #104 №922675 
Пиздец какой-то, зачем гугломакакии назвали widget пакет с различными классами view?
Нагуглить что-то путнее про сами виджеты очень сложно, как примеры так и статьи, 90% поиска забито херней уровня android.widget.TextView.
Аноним 30/01/17 Пнд 23:40:48 #105 №922679 
>>922675
> зачем
Чтобы js-макакам было неприятно.
Аноним 30/01/17 Пнд 23:43:37 #106 №922680 
>>922672
Та нихуя там нету. Интересует мнение местных ананасов.
Аноним 31/01/17 Втр 00:00:31 #107 №922688 
>>922613
>Казалось бы джавовское write once run anywhere, а на деле хуй.
Примеры приведи.
Аноним 31/01/17 Втр 00:01:20 #108 №922689 
>>922672
Разные разрешения и версии дроида есвенно. Второе фиксица библиотеками поддержки которые дают в старые версии функцианал новый. Но иногда бывают нюансы. В 5 дроиде появился материал дизигн, в 6 безопасность слегка поменяли. Версии ниже 4 почти не поддерживают.
Аноним 31/01/17 Втр 00:02:32 #109 №922690 
>>922613
У явы ток кор нормальный все потуги в гуи - фейл завязаный на платформе а не вм
Аноним 31/01/17 Втр 00:52:40 #110 №922720 
>>919538 (OP)
Аноны, мне надо сделать тестовый компонент даггера, но в тестовой директории почему то не генерируется класс компонента, как быть?
Аноним 31/01/17 Втр 03:17:31 #111 №922784 
>>921921
Двачую. А лучше Unit of work. А еще лучше CQRS, но это хайлевел.
Аноним 31/01/17 Втр 03:22:52 #112 №922786 
>>922508
Забей хуй. Это для мамкиных GoF адептов, недавно прочитавших про хуяттерны и пытающихся внедрить их везде где можно и нельзя. Используй KISS и YAGNI.
Аноним 31/01/17 Втр 10:26:02 #113 №922866 
Есть сайт с кривым недокументированным api. Есть android приложение которое это api пользует. Как бы мне посмотреть какие http запросы отправляет приложение?
Аноним 31/01/17 Втр 11:08:34 #114 №922879 
>>922866
Вот возьми и погугли это.
Аноним 31/01/17 Втр 12:18:34 #115 №922914 
>>922866
поставь прокси в настройках wifi + Fiddler
Аноним 31/01/17 Втр 15:15:29 #116 №922986 
>>922866
Если поставить запустить его через debag - там же будет url запроса в логах.
Аноним 31/01/17 Втр 16:00:03 #117 №923025 
>>922077
Ну к слову, сейчас начал пробовать сделать это как у них в сэмпле, вроде как не нужно менять свои классы, с роболектриксом то. Пока что правда запустить не удалось, но это вроде бы у меня косяки с SQL синтаксисом
Аноним 31/01/17 Втр 16:50:29 #118 №923084 
>>922467
А как сделать, чтоб DaggerAppComponent начал компилиться? Ребилд не помогает
Аноним 31/01/17 Втр 18:44:24 #119 №923209 
Народ, помогите.Я еще нуб. Пилю небольшое приложение, нужна помощь с SQlite. Можете подкинуть ссылки на проекты с ее использованием? Просто, много инфы с простыми примерами, которые я понимаю. Но мне надо например пример с использованием SQ-ных VIEW, триггеров и т.д. Когда много таблиц. А то что-то сижу и не вдупляю ни хрена.
Аноним 31/01/17 Втр 20:28:28 #120 №923337 
>>919538 (OP)
Как тестить метод презентера с rxjava? Понял, что надо менять оба scheduler'a на immediate, но при нем тест падает в throw new RuntimeException(...) хотя это должно обработаться в subscriber'е в onError
Аноним 31/01/17 Втр 21:20:17 #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
Аноним 31/01/17 Втр 21:31:14 #122 №923406 
>>923084
Когда использовал его - замечал что нужно использовать где-то модуль, чтобы он начал билдиться. То есть отдельно модуль без компонент и без инжектов иногда билдиться не хотел
Аноним 31/01/17 Втр 21:32:19 #123 №923409 
>>923406
UPD: аналогично - с компонентами, нужно их использовать где-то
Аноним 31/01/17 Втр 21:33:22 #124 №923410 
>>923337
Показывай код.
Аноним 31/01/17 Втр 21:41:53 #125 №923418 
>>923410
беру данные из инета, если IOException беру из бд, если там пусто делаю вот так:
if (data.isEmpty())
throw new RuntimeException(throwable);
т.е. просто пробрасываю дальше, на девайсе всё работает как надо, а тест падает именно тут - throw new RuntimeException(throwable);
Аноним 31/01/17 Втр 21:44:21 #126 №923421 
>>923418
Нормальную ошибку кидай, а не рантайм, может помочь. Если к слову кидаешь внутри какой-то функции - то нужно в ней же и отлавливать, вроде как. То-ли баг, то-ли фича, черт его разберет
Аноним 31/01/17 Втр 21:46:19 #127 №923427 
А есть ли какая-то возможность на время выполнения AFTER %OPERATION_NAME% SQLite-триггера отложить все запросы и выполнить после завершения запроса триггера ?
Аноним 31/01/17 Втр 21:46:32 #128 №923428 
>>923421
так если я его там отлавлю то в onError ничего не придет, а мне надо туда, это именно какая то хуйня с immediate шедулером, как мне кажется
Аноним 31/01/17 Втр 21:52:04 #129 №923434 
>>923428
попробуй observable конвертнуть в блокирующий - toBlocking()
А вообще вот эта хуйня с перекидыванеим это игрушка дьявола ежжи, надо оборачивать как все крутые посоны, возьми какую-нибудь имплементацию Try с гитхаба, или свою напиши по мотивам.
Аноним 31/01/17 Втр 21:52:35 #130 №923435 
>>923427
Что мешает заменить AFTER на BEFORE? Сначала срабатывает триггер, потом уже запрос.
Аноним 31/01/17 Втр 21:56:14 #131 №923436 
>>923434
>хуйня с перекидыванеим
>возьми какую-нибудь имплементацию Try с гитхаба
ты о чем?
Аноним 31/01/17 Втр 21:57:33 #132 №923438 
>>923428
Забей на immediate scheduler и используй TestSubscriber.
Аноним 31/01/17 Втр 22:01:40 #133 №923439 
>>923438
так где его использовать? вот у меня в презентере есть метод - получить данные, проверить их и послать вью, или послать во вью ошибку, и я хочу проверить какие методы вью вызываются
Аноним 31/01/17 Втр 22:02:42 #134 №923441 
>>923434
Не слушай глупенького мальчика, не делай асинхронный код блокирующим
Аноним 31/01/17 Втр 22:03:23 #135 №923442 
>>923435
То, что триггер должен срабатывать после INSERT-а, очевидно же, лол
Аноним 31/01/17 Втр 22:13:23 #136 №923448 
>>923442
>То, что триггер должен срабатывать после INSERT-а, очевидно же, лол
>А есть ли какая-то возможность на время выполнения AFTER %OPERATION_NAME% SQLite-триггера отложить все запросы и выполнить после завершения запроса триггера ?
Вот совсем не очевидно, знаешь ли.
Давай лучше пример покажи, что ты хочешь сделать. Например "Хачю штоб после вставки значения в столб INTEGER Рост, если Рост меньше 180 - в столб BOOLEAN Карлан-унтерменш записывалось True."
Аноним 31/01/17 Втр 22:18:03 #137 №923454 
>>923390
Спасибо! Но мне интересно как это в контексте андроид приложения описывается. Есть какие-то примерчики?
Аноним 31/01/17 Втр 22:31:12 #138 №923472 
>>923454
Есть. Который ты напишешь и над которым поколдуешь сам.
Тут вроде как нет отличий в применении от других SQL запросов в андроиде. А на практике такие вещи лучше усваиваются, после череды выстрелов в ногу.
Аноним 31/01/17 Втр 22:41:28 #139 №923486 
>>923454
То есть, ты же любой пример по SQL в андроиде можешь взять, если не знаешь, как работать в нем с запросами. Зачем искать пример по каждому элементу запроса именно на андроиде, которых всегда будет недостаток, чем менее попсова нужда?

View и trigger это же уже из области проектирования структуры твоей бд под твои нужды, что от андроида зависит чуть менее, чем никак.
Аноним 31/01/17 Втр 22:43:09 #140 №923489 
>>923448
Хочу чтобы после операции добавления проверялось количество записей по предикату и если оно превышает определенный размер - шло рекурсивное удаление записей по другому предикату, до тех пор пока общее число не станет равным капу
Аноним 31/01/17 Втр 22:43:47 #141 №923491 
>>923454
SQLiteDatabase.executeSQL(%вот сюда пихаешь свой ништяк%);
Аноним 31/01/17 Втр 23:04:54 #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 - это обычный такой подзапрос. То есть, он строится может без оглядки на внешний блок.
То есть, нужно вычленить из
>Хочу чтобы после операции добавления проверялось количество записей по предикату и если оно превышает определенный размер - шло рекурсивное удаление записей по другому предикату, до тех пор пока общее число не станет равным капу
"Хочу чтобы проверялось количество записей по предикату и если оно превышает определенный размер - шло рекурсивное удаление записей по другому предикату, до тех пор пока общее число не станет равным капу"
И на этом строить запрос, словно никакого триггера нет. Как бы ты строил без него. Потом обернуть синтаксисом тригера.
Аноним 31/01/17 Втр 23:16:22 #143 №923517 
>>923509
Бойлерплейт ==> в пизду, в рот ебал каждый запрос на дцать строк ужирнять
Аноним 01/02/17 Срд 01:13:50 #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 записей в бд - все удаляется. Но можно заменить на удаление с условием, например.

Аноним 01/02/17 Срд 01:27:57 #145 №923588 
>>923587
Но я хз, что делать, если даже после всех удалений строк по условию останется больше строк в итоге, чем нужно.
Разве что по id или timestamp самые старые чистить, например.
Аноним 01/02/17 Срд 01:45:05 #146 №923595 
>>923489
Мне аж интересно стало, по какому критерию будешь удалять записи, чтобы их гарантированно стало определенное число?
Мне никакой вариант без сортировки в голову не приходит.
Аноним 01/02/17 Срд 03:20:56 #147 №923610 
>>923491
Вот! Спасибо! Это то что я спрашивал как раз.
Аноним 01/02/17 Срд 11:23:35 #148 №923723 
>>923588
for each row с условием достаточно
Аноним 01/02/17 Срд 11:25:07 #149 №923724 
>>923595
MIN(datetime(...))
Аноним 01/02/17 Срд 11:26:46 #150 №923726 
>>923724
причем с LIMIT 1 на случай одинаковых до мс штампиков
Аноним 01/02/17 Срд 11:39:59 #151 №923733 
>>923436
Я говорю плохо в цепочке выкидывать какие-то левые исключения. А если обернуть в монадку то ты в onNext возьмешь и обработаешь верный результат одним макаром, ожидаемые ошибки (файл не найден) другим, а фатальные ошибки третьим способом, onError предназначен для фатальных ошибок.
Аноним 01/02/17 Срд 11:43:07 #152 №923736 
>>923436
>>923733
То есть для того же retrofit'a можно использовать и Observable<Response<?>> и Observable<Result<?>>, зависит от того где ты хочешь рбрабатывать IOException и HttpException
Аноним 01/02/17 Срд 11:55:28 #153 №923739 
>>919538 (OP)
Поясните, не лучше ли для простых приложений
юзать веб-морду (на хтмл5+ксс) вместо
интрефейса на джаве?
Сервер на питоне.
Аноним 01/02/17 Срд 11:58:52 #154 №923740 
>>923739
Если тебе наплевать на качество, то да, лучше.
Аноним 01/02/17 Срд 12:16:32 #155 №923749 
>>923739
>Сервер на питоне.
Хорошее приложение от этого (серверного языка) не зависит от слова никак.
Аноним 01/02/17 Срд 12:54:12 #156 №923771 
>>923749
Не скажи, при плохой серверной части от приложения требуется заметная оптимизация по запросам и политике обновления данных
Аноним 01/02/17 Срд 21:08:26 #157 №924141 
>>919538 (OP)
С Robolectric возможно тестировать recyclerview? Надо протестить scrollListener, че то он вообще не вызывается, хотя в адаптер recyclerview кладу данные и двигаю layoutmanager к концу
Аноним 01/02/17 Срд 22:35:21 #158 №924222 
axd8cxneck1y.png
>>919538 (OP)
Сап, андроидач.
Есть одно клиент-серверное приложение. Веб-сервис на пхп, и два клиента - сайт и приложение. Авторизация происходит на клиентах через гугл.

ВНИМАНИЕ ВОПРОС
Сейчас пилю платную версию приложения, в которой будут доступны некоторые фичи. Необходимо на веб-сервисе запилить проверку что пользователь купил приложение. Api для этого не нашёл.
Какие варианты?
Аноним 01/02/17 Срд 23:23:15 #159 №924255 
>>924222
Проверять по логину? Раз все равно авторизация.
Аноним 02/02/17 Чтв 00:17:29 #160 №924310 
>>924222
http://stackoverflow.com/questions/23266196/get-gmail-profile-image-and-full-name/31538053#31538053
Аноним 02/02/17 Чтв 00:20:28 #161 №924311 
>>924222
https://developer.android.com/google/play/licensing/index.html
Аноним 02/02/17 Чтв 00:23:21 #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.
Аноним 02/02/17 Чтв 00:30:13 #163 №924314 
>>924313
В итоге твое приложение декомпилируют на следующий день, и каждый васян будет дрочить твой сервер нахаляву. А если там еще сторонние платные api используются при этом, типа гуглопереводчика - то это ж пиздец, доверять такое гугломартыханам ебучим.
Аноним 02/02/17 Чтв 00:49:29 #164 №924327 
>>923771
Плохо можно написать на любом язык/фреймворка.
Аноним 02/02/17 Чтв 00:51:40 #165 №924329 
>>924313
Это же типа для подписи. Приложение посылает запрос гуглу чекнуть привелегии текущего пользователя. Гугл присылает ответ. Без подписей какой нибудь васян может спокойно подменить ответ гугла своим (в том числе вообще и не пропустить запрос к гуглу). А так ответ подписан дохуя сикретным ключом гугла - и васян его подменить уже не может. А ключ в исходниках это открытый ключ - то что его достанут нихуя не даст. Если конечно у васяна не завалялся квантовый компьютер.
Аноним 02/02/17 Чтв 08:30:47 #166 №924447 
>>924329
Тот же лаки патчер просто подделывает результат проверки.
Аноним 02/02/17 Чтв 10:28:29 #167 №924524 
>>924329
А что мешает провести тривиальный реверсинжиниринг и тупо убрать эту проверку?
Аноним 02/02/17 Чтв 13:00:14 #168 №924618 
>>924141
закинь код на pastebin, гляну
Аноним 02/02/17 Чтв 13:38:30 #169 №924638 
Аноны, кто-то работал с DBFlow? Есть один вопрос по one-to-many.
Аноним 02/02/17 Чтв 19:09:27 #170 №924845 
Котаны, подскажите либу с ручками-крутилками или бесконечный seekbar, который можно крутить и крутить.
Аноним 02/02/17 Чтв 19:16:42 #171 №924856 
Гугл не пустил в маркет, ссылаясь на unauthorized use of copyrighted content in your promotional screenshots.
В этих самых скриншотах только постеры фильмов и фотографии актеров, получается, дело в них.
При этом тысячи приложений используют их подобным образом, и они явно не получали для этого никаких дополнительный разрешений. Как выйти из ситуации?
Аноним 02/02/17 Чтв 19:20:44 #172 №924861 
>>924856
То, что дозволено барину, не дозволено холопу. Смирись.
Аноним 02/02/17 Чтв 19:27:49 #173 №924868 
Поясните нюфагу:
где-то читал, что при оверрайдинге методов всегда надо вызывать super.*
Хочу в коде оверрайднуть onBackPressed();
но если я вызываю super.onBackPressed() то весь последующий код не работает, если я его не вызываю то все работает как надо.
Вопрос: есть ли в моем случае подводные камни?
Аноним 02/02/17 Чтв 20:06:01 #174 №924886 
>>924868
Уверен, что не вызывается? Добавь после вызова super строчку с логом. Например
Log.d("MAAAM LOGI!!", "NU RABOTAET JE!")

Потом запусти приложение через debug и ищи строчку.
Аноним 02/02/17 Чтв 21:01:35 #175 №924943 
>>924868
> где-то читал, что при оверрайдинге методов всегда надо вызывать super.*
Тебя наебали. Зависит от метода. В случае onBackPressed(); от конретной ситуации зависит.
Аноним 02/02/17 Чтв 21:26:11 #176 №924963 
>>924868
Если я правильно понял сорцы - активити уничтожается при вызове onBackPressed(). То есть, ты вызываешь дефолтную имплементацию, а активити сдыхает раньше, чем ты пытаешься что-то сделать.
Аноним 02/02/17 Чтв 21:26:30 #177 №924965 
>>924963
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/Activity.java
Аноним 02/02/17 Чтв 21:32:13 #178 №924969 
>>924963
Да, видимо так.

>>924943
>>924886
У меня интент возвращает значение, а потом я вручную финишу её, мб лучше вместо финиша вызвать супер? Или супер сам тем же финишем пользуется?
Аноним 02/02/17 Чтв 22:05:42 #179 №924987 
>>924963
Что за бред? Подыхает активити или нет (я уверен, в родительском коде просто вызывается finish или что-то похожее происходит), код не может не исполняться после вызова метода родителя, если не бросается какое-то исключение.
Посиди с отладчиком или логгером, разберись, почему твой код не работает, а не делай такие безумные выводы.
Аноним 02/02/17 Чтв 22:54:02 #180 №925041 
>>924987
Но чтобы послать intent через LocalBroadcastManager, нужна передать ему контекст.
Что там происходит, когда активити убито? Контекст чего передается и какой вообще?
Аноним 02/02/17 Чтв 22:58:12 #181 №925045 
>>924969
Можно скопировать дефолтную реализацию, и вставить то что ты хочешь перед finishAfterTransition();

Дефолтную посмотри в сорцах выше.
Аноним 02/02/17 Чтв 22:58:41 #182 №925046 
>>925045
Благодарю.
Аноним 02/02/17 Чтв 23:06:06 #183 №925052 
>>924969
Хотя, можно и сначала слать intent, потом вызывать super. Это же не конструтор, где это должна быть обязательно первая линия.
Аноним 03/02/17 Птн 00:04:12 #184 №925095 
Является ли нормальной практикой класть в общий для всего приложения класс application какие-то долговременные результаты типа обработанных данных, которые потом можно вставить в разные activity или виджеты?
Аноним 03/02/17 Птн 00:28:13 #185 №925117 
>>925095
Нужен отдельный класс для хранения. Или вообще контент провайдер. На и на память смотреть нужно. Если данные легко получить заново, то лучше их не хранить (если они памяти много занимают). Или там настроить освобождение памяти в onLowMemory. Но в общем идея хорошая.
Аноним 03/02/17 Птн 00:54:23 #186 №925133 
>>925117
Все бы ничего, но виджет не только отображает данные, но и позволяет минимум манипуляций с ними. Пока он есть, сабкласс application может быть прибит? Я читал, что они находятся в одном процессе же.

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

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

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

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

Либо я вообще зря себе мозг ябу и при смерти application виджет тоже схопнется?
Аноним 03/02/17 Птн 01:02:42 #187 №925140 
>>925133
Просто я наткнулся вот на это
http://www.developerphil.com/dont-store-data-in-the-application-object/
И если это правда, то там нельзя хранить что-то помимо констант, выходит, потому что в середине работы все кроме них может пропасть.
Аноним 03/02/17 Птн 01:34:12 #188 №925154 
>>925140
Хм, можно же поля в application задавать через setter, а в нем дублировать в файл.
Если application и перезапустится - то данные восстановятся через указание в onCreate() ручками. Так что не так уж тщетно бытие, видимо.
Аноним 03/02/17 Птн 01:50:25 #189 №925157 
И все же, если виджеты и application работают в одном процессе - почему мы используем remote views и pending intent? Сдается мне, что тут что-то не так.
К тому же виджет рендерится отдельно хостом, не? При смерти application по-умолчанию не должны же с ним какие-то изменения происходить, не?
Аноним 03/02/17 Птн 01:51:03 #190 №925158 
>>925041
Контекст активити. В момент закрытия, активити жива. И остается жива долгое время, как минимум до окончания вызова onDestroy.
Далее уже точно не знаю, надёжнее всего считать, что активити не существует. Хотя наверняка можно будет ещё контекстом пользоваться.
Аноним 03/02/17 Птн 01:57:34 #191 №925159 
>>925157
> И все же, если виджеты и application работают в одном процессе - почему мы используем remote views и pending intent? Сдается мне, что тут что-то не так.
Не работаем в одном процессе. В твоём процессе есть только бродкаст ресивер, который получает события для манипуляции с виджетом.
Аноним 03/02/17 Птн 02:02:26 #192 №925161 
>>925159
Хм. Так я и думал, что бы там на stackoverflow не писали.
В общем, контент виджета и активити никак не выйдет гарантированно держать синхронизированным без файла, выходит.
Аноним 03/02/17 Птн 02:29:25 #193 №925167 
>>925161
Выйдет. Просто надо виджет прямо в активити обновлять, когда нужно. Ты волен это делать где угодно и когда угодно.
Аноним 03/02/17 Птн 02:35:27 #194 №925169 
Допустим, приложение раз в час создает новый контент и создает notification о поступлении.

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

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

Является ли обратное удобной фичей, или же пустым пердолевом для аутистов?
Аноним 03/02/17 Птн 02:37:08 #195 №925170 
>>925167
Не, тогда он станет полностью бессмысленным. У него должна быть некоторая самостоятельность, а не просто плашка с отображением.
Аноним 03/02/17 Птн 08:47:42 #196 №925215 
>>925169
Зависит от задач которые ты ставишь перед интерфейсом. Если, к примеру, ты хочешь чтобы он был "удобным" то одна из целей - минимизировать количество действий пользователя. Тоесть тебе нужно прикинуть возможные сценарии действий пользователя которые он захочет совершить после получения уведомлений и при нажатии пользователь должен попадать на активити которая позволит ему совершать минимум действий (в среднем). Если, к примеру, ты хочешь максимизировать показ рекламы - то после нажатия пользователь должен попадать на рекламу. Ну и так далее.
Аноним 03/02/17 Птн 13:03:00 #197 №925343 
>>925215
Вот от рекламы точно будут 1-чки
Аноним 04/02/17 Суб 10:15:55 #198 №926155 
Java-тред удалён. Даже моча понимает, что Java не нужна, потому что есть Kotlin
Аноним 04/02/17 Суб 13:36:54 #199 №926257 
>>926155
Не нужен.

Scala-бог.
Аноним 04/02/17 Суб 13:40:05 #200 №926261 
>>926257
Не нужна.

Haskell-властитель-богов
Аноним 04/02/17 Суб 13:52:00 #201 №926266 
>>926261
Не, ну так-то да, но под андроид на хаскеле тяжеловато будет.
Аноним 04/02/17 Суб 14:54:08 #202 №926297 
>>926266
Вопрос желания извращаться же, как по мне, так можно на простых проектах использовать что нравится (хоть хаскелль, ей богу), а вот большие (больше 6-7 модулей, наверное, и тысяч за 150 строк кода в совокупности без тестов) уже только на java. Ибо на данный момент она банально менее багована и по ней больше доков + больше фичь есть (тот же Unsafe, ога)
Аноним 05/02/17 Вск 05:16:59 #203 №926874 
onReceive в AppWidgetProvider реально перепилить на прием кастомных неявных intent'ов? Прописываю в манифесте, проверяю в самом методе - и никакой реакции.
Аноним 05/02/17 Вск 05:47:10 #204 №926875 
>>926874
В обсчем, как послать intent в AppWidgetProvider из activity?
Аноним 05/02/17 Вск 14:52:36 #205 №927054 
Анон, в качестве практического опыта хочу сделать какую-нибудь приложение под андроид на react native.

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

Думал вот сделать показ анекдотов категории б, но может есть еще какие интересные идеи?
Аноним 05/02/17 Вск 15:38:23 #206 №927084 
>>920827
Bump
Аноним 05/02/17 Вск 16:49:18 #207 №927124 
>>919538 (OP)
У меня есть сервис(intent), который в фоне синхронизирует локальную бд с апи. И по окончанию этого процесса мне из сервиса нужно дернуть метод фрагмента, который обновит ui. Все что гуглится это какие-то костыли или непонятно что и я уже подумываю не заменить ли сервис на лоадер. Как-то по нормальному это сделать можно?
Аноним 05/02/17 Вск 16:51:13 #208 №927126 
>>927124
Очевидный bind.
Аноним 05/02/17 Вск 16:53:49 #209 №927127 
>>927126
Очень оперативный анон, я в доках прочитал, что "Привязанная служба обычно работает, пока другой компонент приложения привязан к ней"

а мне вроде как надо чтобы сервис отработал до конца в любом случае. Или этот как-то можно обойти?
Аноним 05/02/17 Вск 17:34:15 #210 №927159 
>>927124
Бросай локальный бродкаст
Аноним 05/02/17 Вск 17:38:06 #211 №927161 
>>927127
Бинд может и к уже работающему сервису подключиться, в этом случае анбинд его не остановит. Разберись с сервисами.
Аноним 05/02/17 Вск 17:56:54 #212 №927167 
Аноны, дайте тутор по Rx.
Аноним 05/02/17 Вск 18:06:01 #213 №927172 
>>927167
В примере из codepath .OnSubscribe горит красным. ЧЯДНТ
Аноним 05/02/17 Вск 19:08:22 #214 №927209 
>>919538 (OP)
Сап, делаю простой текстовый квестик на ведройдике. Есть некий общий лейаут (информация об инвентаре, ранах, сломанных костях, порванных артериях етц) переход на который должен быть доступен с любой локации, с возможностью после просмотра инфы с этого лейаута вернуться на тот, с которого я совершал переход. Сначала хотел через setcontentview организовать, но потом подумалось, что просто натянуть новый лейаут сверху, а при выходе удолить будет проще. Только вот чем вот можно сверху его надеть?
Аноним 05/02/17 Вск 19:56:22 #215 №927235 
>>927209
гугли backstack.
Аноним 06/02/17 Пнд 11:52:28 #216 №927530 
>>927054
Джентельменский набор:
Todo App, синкающийся с календарем
Трекинг расходов/доходов, с синхронизацией через гугл драйв например
Погодное приложение
Аноним 06/02/17 Пнд 14:54:58 #217 №927620 
Надо сделать клас-обьект для бд. Одно из полей - icon, который в базе будет сохранятся в blob формате. Какой тип использовать для icon?
Аноним 06/02/17 Пнд 15:24:55 #218 №927629 
>>927620
byte[], по крайней мере это то что можно достать их курсора, а так-то тебе наверное битмапка нужна. Но идея не очень.
Аноним 06/02/17 Пнд 16:51:45 #219 №927702 
Безопасно ли прикреплять к notification какой-то intent с рабочим объектом с данными?
С одной стороны, intent явный же, с другой - он летает между приложениями, он совсем не локальный.

Можно ли его спиздить и узнать кусочек внутренней реализации?
Аноним 06/02/17 Пнд 21:59:10 #220 №927880 
>>927620
Не советую хранить картинки в бд. Но самое главное, не храни их в контент провайдере.
Аноним 07/02/17 Втр 13:15:18 #221 №928127 
Есть сервис (расширяет Service), который стартуеся по интенту и начинает аплоад файла по апи, загрузка с помощью rx на io, по выполнению возвращается в мейн тред и кидает бродкаст с одним экшоном и результатом если все ок и с другим экшоном если вылетел эксепшн, ловлю ресивером во фрагменте. Ресивер регается в onResume и убирается в onPause. Проблема в том что бродкасты об ошибках до фрагмента доходят, а вот саксес - нет. Пробовал и локальные ресиверы и глобальные, даже в манифесте регал, до него тоже не доходит успешный интент. В чем соль?
Аноним 07/02/17 Втр 13:43:13 #222 №928137 
>>928127
Вопрос снят, хуй знает в чем проблема, переделал цепочку, теперь бродкаст шлется, но непонятно почему если до onNext доходит в обоих случаях, бродкаст шлется только в одном, мда.
Аноним 07/02/17 Втр 15:58:22 #223 №928226 
Репостну сюда, раз уж пилится мое говно все равно под ведро.
>>928197
Аноним 07/02/17 Втр 19:50:11 #224 №928326 
>>928226
юзай ретрофит, а там уж как с кукисами работать легко гуглится
Аноним 07/02/17 Втр 20:31:21 #225 №928342 
>>928326
Мне кажется, проблема не с куками а с самим запросом, потому что возвращается не страница "ошибка логина" или "логин успешен", а главная. Видимо, с передачей параметров в POST загвоздка.
Но за ссылку спасибо, посмотрю.
Аноним 07/02/17 Втр 21:04:34 #226 №928357 
>>928137
>>928127
дело было в том, что я использовал setData, а там бывали uri file:// или content:// вот их видать и не пускало, чудно.
Аноним 07/02/17 Втр 21:16:58 #227 №928365 
аноны как сделать нормально спиннер? обычным способом или можно как то с recyclerview?
Аноним 07/02/17 Втр 21:19:56 #228 №928369 
>>928365
По моему опыту спиннер не самым очевидным способом готовится. Чем тебе не подходит существующее апи?
Аноним 07/02/17 Втр 21:42:50 #229 №928388 
Что скажете про долгосрочные курсы Гик Брейнс ? Заинтересовался Мобильной разработкой
https://geekbrains.ru/professions/mobile_developer
звучит красиво и цена неплохая, каково обоснованное мнение Анона?
Аноним 07/02/17 Втр 22:34:29 #230 №928420 
>>928388
если есть опыт в программировании то не стоит, сам во всем разберешься. Ежили нет, то зависит от упорства, желания или денег. Если есть первые 2 качества, то таки сам до всего дойдешь не потратив ни копейки, но если деньги не проблема - пройди курсы, промотивируй себя тем что заплатил
Аноним 07/02/17 Втр 23:08:54 #231 №928429 
>>928388
Никогда не связывайтесь с этой конторами и прочими курсами от Васяна.
Годные курсы могут быть лишь у хороших университетов (курсера, едх, степик) и у технологических компаниях уровня Яндекса, JetBrains.
И всегда они бесплатные.

На курсах от Васяна вы будете слушать пересказ официальный документации и решать хеллоуворды из книг серии "ххх for doomies", получите меньше навыков и опыта, чем если бы потратили неделю на самообразование, и сертификат, которым можете подтереться.
Аноним 08/02/17 Срд 03:41:08 #232 №928494 
>>919538 (OP)
юзаю андроид студию
так получчилось, что нужно использовать именно встроенный эмуль. пишет:
waiting to target device to come online
хотя эмуль запущенный, летает, запускается тоже быстро, анончик, как лечить?
Аноним 08/02/17 Срд 17:00:20 #233 №928805 
Посаны, не знаю где такое спросить. Есть android устройство на arm процессоре, есть разные ядра (версии 3.10) от васянов к этому устройству. Я хочу подключать wacom планшет через usb-otg. Планшет видно в dmesg, лампочки на нем горят, но ничего не работает. Стоит ли пердолиться и пробовать собрать ядро с вакомовскими модулями или это дохлый номер? Впустую тратить время не охото.
Аноним 10/02/17 Птн 12:00:43 #234 №930087 
>>928494
Поясни, у тебя девайс запускается и нормально функционирует, но студия не видит этого и ждет, или же эмаль висит в загрузке ?
Аноним 10/02/17 Птн 12:01:48 #235 №930088 
>>928365
Хватит мозгов и выдержки - сделай свой кастом на базе ReyclerView, не хватит - юзай офф доки по спиннеру
Аноним 10/02/17 Птн 12:03:17 #236 №930089 
>>927702
Можно, методом тыка все можно
Аноним 10/02/17 Птн 12:04:04 #237 №930090 
>>927209
startActivityForResult ? Ну, если есть какие-то манипуляции с инвентарем, то вполне уместно выглядит
Аноним 10/02/17 Птн 12:05:26 #238 №930091 
>>927127
Можно через IPC callback передавать, а сервис сделать started и вручную убивать по окончанию загрузки
Аноним 10/02/17 Птн 12:07:35 #239 №930092 
Народ, а вообще с приходом чистого MVP, RxJava, Retrofit и прочего, помимо специфических юз-кейсов, используются ли Service-ы, BroadcastReceiver-ы и прочее ? Просто, как по мне, ведь все в рамках приложения спокойно реализуется без них, и, более того, данные компоненты лишь ухудшают читабельность кода, из-за обязательной привязки к контексту, следовательно, загрязняя активность/фрагмент.
Аноним 10/02/17 Птн 16:16:03 #240 №930204 
>>930092
Если можешь реализовать без них, то так и делай. Но как ты будешь например отправлять или получать данные в фоне (с закрытым приложением) без сервисов? никак
Аноним 10/02/17 Птн 16:57:05 #241 №930231 
Как вызвать метод public void onButtonStopClick(View view) реагирует на нажатие кнопки в другом методе. Не знаю какой что передать в параметр "View view"
Аноним 10/02/17 Птн 17:57:41 #242 №930263 
14853578639462.jpg
Анон, помню в одном из тредов скинули тестовое задание для джунов.
А именно, требовалось создать приложение, которое берет данные с сайта вроде weather.com и отображает их.
У кого-нибудь сохранилась ссылка на это тестовое задание?
Где можно найти актуальное тестовое задание Российских компаний?
Аноним 10/02/17 Птн 18:01:26 #243 №930264 
CkfEDC0G69s.jpg
O6BcWNU7lzM.jpg
>>930263
Лучше, сохранился рисунок.
Аноним 10/02/17 Птн 18:23:45 #244 №930275 
23346623209086.jpg
>>930264
Люблю тебя, анон! Пусть всё у тебя будет хорошо.
А ты сам работаешь, или вкатываешься?
Аноним 10/02/17 Птн 18:26:31 #245 №930278 
>>930275
Вкатился на работу недавно, постоянно задаю тут глупые вопросы. Иногда отвечают
Аноним 10/02/17 Птн 18:31:37 #246 №930283 
6e48688e9b21e6cccaf1dba48c9ceb4e344.jpg
>>930278
Можно я тебя поспрашиваю?
А какой лвл, если не секрет? Живешь в ДС?
Как вкатывался, что именно делал для вкатывания? Смотрели ли твой гитхаб?
Аноним 10/02/17 Птн 18:46:59 #247 №930301 
>>930283
20 лвл, живу в украине, львов.
Вакансий на трейнии мало, ходил только на одно собеседование, обычно всем нужны джуны с 1+ годом опыта. Потом один знакомый написал что ему нужны андроид пацаны и дал контакты чувака, который меня на работу и взял. Этот чувак собирается свою фирму открывать, спрашивал не сильно, в основном какую-то глобальную теорию типа: "как тянул инфу с сервера, как работают джсон обьекты, генерализацию джава", потом я показал свой курсач, там были sqlite и ретрофит, потом кинул гитхаб, на который по его просьбе закинул этот курсач и лабы, которые писал на андроиде в универе, штук 5-6 их было.
Пока что работаю дома, пилим апки для рекламы фирмы.
>что именно делал для вкатывания
ну вот курсач и лабы помогли, так то они говорили, что хотели тестовое задание дать, но т.к. у меня уже было свое говно, то не дали.
Аноним 10/02/17 Птн 20:49:21 #248 №930366 
>>930301
Понятно. Львов охуенный город, кстати.
Аноним 11/02/17 Суб 01:40:26 #249 №930622 
>>930087
загрузился, но андроидстудио ждет пока загрузится. пишет типо вейт фо онлайн
Аноним 11/02/17 Суб 14:55:32 #250 №930869 
Решил разрешить пересоздание activity при повороте экрана. В результате одна принципиально важная view, размеры которой match_parent, имеет размеры 0x0. Не знаю как сформулировать вопрос гуглу, так что спрашиваю об этом здесь
Есть цикл, который ждет пока размеры не станут нормальными, и пробует их раз в 10мс. Он ждет вечно
Почему такая херня?
Аноним 11/02/17 Суб 16:23:49 #251 №930947 
Проясните за Rx. Как привязать Observable например к ArrayList? Гуглю туторы - но они вроде устарели - так как на новых версиях либы много чего горит красным. ЧЯДНТ?
Аноним 11/02/17 Суб 17:40:57 #252 №931019 
>>930869
> Есть цикл, который ждет пока размеры не станут нормальными, и пробует их раз в 10мс.
Пиздец у тебя говнокод.
Аноним 11/02/17 Суб 17:48:07 #253 №931026 
>>930947
> ЧЯДНТ
Используешь rx2
>>930869
> Есть цикл, который ждет пока размеры не станут нормальными
view.post { view в лэйауте и имеет размер }
Не говоря уже о том, что ты и сам можешь вызвать view.measure
Аноним 11/02/17 Суб 18:04:11 #254 №931041 
>>931026
Прояснилось за rx2
Аноним 11/02/17 Суб 21:11:24 #255 №931211 
>>930264
Сука, у меня пригорает, это разве задание для джуна??
Аноним 11/02/17 Суб 21:12:40 #256 №931213 
>>931211
Слишком простое?
Аноним 11/02/17 Суб 21:19:53 #257 №931220 
>>931211
Мне тут на днях прислали задание на трейнии, надо сделать десктопоне говно, которое режет фотку на пазлы, сейвит N фоток в папке, а потом другой алгоритм это все собирает. Чтобы первый и второй алгоритмы не были связаны и ничего друг о друге не знали.
Аноним 11/02/17 Суб 22:26:00 #258 №931250 
>>931213
тянет на середнячкового миддла, но на джуна.
>>931220
а третий алгоритм в отдельном потоке должен пройти тест тьюринга
Аноним 11/02/17 Суб 22:58:10 #259 №931267 
>>931250
>>тянет на середнячкового миддла
лол, ты что поехавший?
Аноним 11/02/17 Суб 23:00:30 #260 №931270 
Аноны, вот вам дают дезинг в psd, но без всяких размерностей в dp, как вы верстаете это?
Аноним 11/02/17 Суб 23:01:11 #261 №931271 
>>931250
> тянет на середнячкового миддла, но на джуна.
Шутишь что ли? На джуна в самый раз. Мне подобные давали как тестовые задания. Если ты нормально андроид знаешь, а именно основы и пару либ, то ты это за 2-4 дня сделаешь.
Аноним 11/02/17 Суб 23:16:51 #262 №931281 
>>931270
Хуевые макеты, не признаю ничего кроме sketch.
Берешь фотошоп дроченый, открываешь эту хуйню и смотришь размеры. Дизайнер же по гайдам верстал? Если да, то почти без проблем можешь считать что 1px на макете = 1dp.
Аноним 11/02/17 Суб 23:51:11 #263 №931288 
Facebook проталкивает React Native.
Один код на двух платформах, вездесущий Javascript,еще один конкурент нативной Jave.
Нам пиздец?
Аноним 11/02/17 Суб 23:52:08 #264 №931289 
>>931288
тебе - да
Аноним 11/02/17 Суб 23:56:32 #265 №931290 
>>931289
Зачем бизнесу тратиться на java и swift макак, если можно купить одну javascript макаку? Результат будет один и тот же практически.
React native выйдет из преальфы, релиз за релизом.
Аноним 12/02/17 Вск 00:03:00 #266 №931292 
https://facebook.github.io/react-native/showcase.html
Аноним 12/02/17 Вск 00:10:52 #267 №931294 
Live reload, один код на двух платформах, падение производительности по сравнению с нативом незаметны.
Киллер фичи.
Не убьет нативные языки, так потеснит
Аноним 12/02/17 Вск 01:03:33 #268 №931315 
>>931281
Скеч тоже говно. Проприетарное, только для мака.
Аноним 12/02/17 Вск 01:17:41 #269 №931319 
>>931315
Ну охуеть теперь, швабодка жму пинус? Для винды есть пару программ позволящию просматривать макеты в скетче + zeplin.
Аноним 12/02/17 Вск 04:24:27 #270 №931372 
>>931319
В том то и дело, что ни одной программы, которая нормально показывает его файлы нет. Так что дизайнер должен юзать общепринятый в отрасли psd или идти нахуй.
Аноним 12/02/17 Вск 04:27:42 #271 №931373 
>>931319
Вернее, он должен уметь не только предоставить макет, но и нарезать в соответствии с разными плотностями экрана, состояниями и так далее.
Аноним 12/02/17 Вск 08:20:16 #272 №931391 
>>931372
> Так что дизайнер должен юзать общепринятый в отрасли psd
А ты psd будешь в гимпе открывать, швабодный?
Аноним 12/02/17 Вск 12:07:30 #273 №931474 
Реквестирую какой-нибудь гайд по TDD. Прошёл раздел про тесты на вогелле, но нихуя не понял. Желательно какой-нибудь гайд, где мы последовательно разрабатываем какую-нибудь приложеньку по TDD.
>>931270
На глазок. А цвета пипеткой замеряю.
Аноним 12/02/17 Вск 12:58:51 #274 №931515 
>>931373
Нормальный дизайнер сам тебе все нарежет, существует куча плагинов экспортирующих асеты под ведро/гейось/уеб/десктоп. Все это закинет в папочку и пришлет тебе вместе с макетом.
Аноним 12/02/17 Вск 12:59:46 #275 №931517 
>>931372
Zeplin нормально показывает, даже позволяет доставать асеты. Но все это только если дизайнер не мудак и все правильно разметил.
Аноним 13/02/17 Пнд 13:32:09 #276 №932260 
Подкиньте пример или идею, как прикрутить к GridView матрицу (многомерный массив)?
Все что нахожу - одноклеточное говно, работающее на одной последовательности.
А где есть матрицы - они сливаются в один лист и хуй знает как вообще потом определять строки\столбцы при нажатии.

В других графических фреймворках почему-то grid'ы с православными строками\столбцами, и только в ебаном ведре хуярят через сплошной лист.
Аноним 13/02/17 Пнд 13:52:51 #277 №932267 
>>932260
Что у тебя конкретно не получается? btw GridView устарел. Ты же знаешь что матрицы тоже обычно хранятся линейно.
Аноним 13/02/17 Пнд 14:04:15 #278 №932277 
>>932267
А что есть на замену ему?

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

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

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

Мне это нужно, чтобы оперировать самой матрицей. Например, поменять несколько объектов местами. Передвинуть выше, например. Я же не могу сделать это в одномерном массиве.
Аноним 13/02/17 Пнд 14:06:21 #279 №932278 
>>932277
Или можно хранить позицию элемента в матрице в самих объектах?
Аноним 13/02/17 Пнд 14:27:30 #280 №932294 
>>932278
>>932277
Сделай класс матрицы который инкапсулирует доступы/смены элементов. Типа такого: http://pastebin.com/MecHx61p
Вообще сейчас норм использовать RecyclerView, и что бы получить грид - GridLayoutManager
Аноним 13/02/17 Пнд 14:31:33 #281 №932295 
>>932294
А забыл, там же в адаптере только одна позиция, ну можно добавить метод:
public final T getRaw(int position) {
____return data[position];
}
Аноним 13/02/17 Пнд 14:38:59 #282 №932296 
>>932294
Та сама логика у меня уже готова отдельно. Я с представлением больше мучаюсь, чем с ней. На каком-нибудь GTK или QT уже сделал бы и забыл.
Аноним 13/02/17 Пнд 14:59:39 #283 №932304 
>>932296
Задаешь лэйаут менджеру ширину матрицы как спан каунт и все. А дальше тупо по позиции дергаешь элементы, она тупо слева на право, сверху вниз.
Аноним 13/02/17 Пнд 17:11:32 #284 №932356 
Подскажите нубу.
Годная книга?
http://www.ozon.ru/context/detail/id/135513511/
Аноним 13/02/17 Пнд 18:22:26 #285 №932417 
>>931250
Я андроид еще толком даже не нюхал, но судя по описанию - не вижу в задачке ничего сверхъестественного.
Аноним 13/02/17 Пнд 18:24:28 #286 №932421 
Анон, а можно менять XML файл во время работы программы, например добавить стринг?
Аноним 13/02/17 Пнд 18:27:55 #287 №932428 
>>932421
Нет. Они лежат в только читаемой области, с рутом можно делать все что хочешь, плохая идея.
Аноним 13/02/17 Пнд 19:22:06 #288 №932475 
suspiciousfry.jpg
Вот учу я андроид и чем дальше тем больше узнаю о всяких мелких нюансах и подводных камнях. Сейчас читаю "The Busy Coder's Guide to Android Development", так там в одной главе про ресурс сеты и конфигурации черт ногу сломает во всех возможных сценариях. При этом сам автор говорит, что несколько лет кодил и о некоторых имел ошибочное мнение все это время.
Я не пойму почему вкатывальщикам советуют андроид, мол легче чем в энтерпрайз? При том что тут надо сначала знать джаву нормально, что бы не обсираться, а потом еще и знать андроид фреймворк со всеми его правилами.
Аноним 13/02/17 Пнд 19:32:30 #289 №932480 
>>932475
>фреймворк
Платформу + фреймворки.
Аноним 13/02/17 Пнд 21:24:32 #290 №932558 
Всем привет, хочу написать свой вьюпэйжер, который динамически подгружает при свайпе влево право, предыдущую страницу или следующую на основе фрагментов. Кто подскажет как свой компонент сделать? Искал в оф доке, там про создание компонентов хуй да нихуя, как вообще работает отображение компонента?
Аноним 14/02/17 Втр 01:01:24 #291 №932737 
>>932558
Нахуй тебе свой? Всё, что ты описал реализается стандартными средствами. К тому же, это не функции ViewPager'а, а его адаптера.

Если всё же нужен свой, то открывай исходники и смотри, делай похоже.
Аноним 14/02/17 Втр 06:49:37 #292 №932795 
Как отобразить один виджет над другим?
Например, что-то над фоном.
Я знаю, что можно сделать один parent'ом, но как быть, если они оба child другого parenta?
Как внутри parent'a регулируется, какой виджет перекрывает другой?
Аноним 14/02/17 Втр 07:25:27 #293 №932804 
>>932795
Отрисовывается все по очереди заданной индексом в родителе. Меньше - раньше.
Аноним 14/02/17 Втр 10:16:39 #294 №932847 
Почему у GridView есть метод setColumnWidth, но нет метода setColumnHeight?
Я понимаю, что можно другим способом программно задать, но все же.
Аноним 14/02/17 Втр 10:21:41 #295 №932850 
>>932847
> setColumnHeight?
У row посмотри.
Аноним 14/02/17 Втр 11:47:58 #296 №932880 
>>932737
Значит я не понимаю как это сделать в адаптере,
Начальное состояние вьюпейжера мне нужно такое даны три фрагмента, активити открывается на втором фрагменте. Далее после свайпа, например вправо, текущий фрагмент становится третий, теперь мы должны удалить первый фрагмент и добавить 4й, так чтобы количество фрагментов осталось 3 и по прежднему текущий фрагмент был вторым.
Мне нужно поставить обработчик на onchangepage метод onpagechaged и в нем пересоздать адаптер с новым содержимым?

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

Вообщем не понимаю как сделать так чтобы оставалась позиция страницы всегда вторая.
Аноним 14/02/17 Втр 12:18:13 #297 №932900 
Повторю вопрос из ньюфаг треда, так как тут больше java-анонов.

Посоны, кто-нибудь проходил курс Java rush? Стоит он затраченного времени? Потому что я вот на втором уровне и меня как-то настораживают многократно повторяющиеся задачи типа "выведи петросянские смехуечки на экран".
Аноним 14/02/17 Втр 12:18:21 #298 №932901 
>>932260
https://github.com/zhouchaoyuan/excelPanel
sageАноним 14/02/17 Втр 12:18:57 #299 №932904 
>>932900
Тебе в java-тред.
Аноним 14/02/17 Втр 13:12:59 #300 №932952 
>>932900
Нет, лучше мне деньги отдай.
Аноним 14/02/17 Втр 13:27:35 #301 №932972 
Аноны поясните за констрейнтлейаут. Годная штука или хуйпизда?
Аноним 14/02/17 Втр 13:35:44 #302 №932978 
>>932972
Годная, но сырая.
Аноним 14/02/17 Втр 13:45:33 #303 №932989 
Как вычислить размер вложенного один в другой layout'a, если у вложенного есть отступ от краев?

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

Аноним 14/02/17 Втр 13:47:37 #304 №932993 
>>932989
У обоих стоит match_parent.
Более менее сходится, если отступы умножить на 5, но это пиздец какая-то магия.
Аноним 14/02/17 Втр 13:54:49 #305 №933002 
>>932989
>>932993
А чем тебе getWidth не угодил? Ну кроме того что его имеет смысл брать только после полного лэйаута и возвращает он в пикселях.
Аноним 14/02/17 Втр 14:03:54 #306 №933011 
>>933002
Я из onCreate вызывают, а он выдает 0 там.
Аноним 14/02/17 Втр 14:14:45 #307 №933018 
>>933011
Ну потому что ничего еще не вымерено. Засунь его в колбек на глоабльный лейаут, так будет правильней.
Аноним 14/02/17 Втр 14:55:39 #308 №933047 
Где и как вы храните реквест коды, что бы все было ништяково и не совпадало со всякими пейсбуками, вкашками и прочими гугл сервисами? Ну и что бы собственные между собой не пересекались естественно
Аноним 14/02/17 Втр 15:36:48 #309 №933072 
>>933018
Фокус в том, что мне нужно в GridView динамически подгонять размер ячеек под размер экрана.
Если я засуну определение ширины в Runnable, это же все равно случится после того, как адаптер распихает все в GridView, не? Мне вот надо как-то в момент впихивания первого элемента успеть получить значение.
Аноним 14/02/17 Втр 15:42:48 #310 №933082 
>>933072
Ммм, а если адаптер регистрировать как раз в Runnable, который впихнуть в post?
Аноним 14/02/17 Втр 15:43:48 #311 №933086 
>>932900
На 16 уровне сейчас. Довольно годно, если вообще 0 в программировании. Задрочка кода там повсеместно, но зато действенно. Для того чтоб вкатится в андройд достаточно 10 бесплатных уровней. Так что можешь не покупать подписку.
Аноним 14/02/17 Втр 15:45:07 #312 №933088 
>>933072
Почему бы тебе не посчитать размер до прицепливания адаптера? Получаешь размер доступной области для своего грида, вычитаешь место для отступов между объектами, или как ты там себе думаешь, и потом задаешь эти параметры адаптеру, который будет знать какого размера вьюхи делать.
Есть другой способ, не требующий специфических действий извне. Берешь percent relative/frame layout, используешь его как корень вьюхи итема, ширину итемы всегда будут получать одинаковую, а ты просто задаешь нужный тебе аспект рэтио.
Аноним 14/02/17 Втр 15:49:08 #313 №933094 
>>932952
За что тебе деньги отдавать?

>>933086
Спасибо, а то я боялся что там все бесплатные уровни будут на уровне хэлло ворлдов. Я уже пару лет пишу под android, но есть определенные пробелы в знаниях по Java, вот решил этот курс попробовать.
Аноним 14/02/17 Втр 15:53:10 #314 №933097 
>>933094
ну ты же хочешь положить деньги кому-то в карман за то что можно получить бесплатно? Чем я хуже, со мной хоть времени терять не будешь на смехуечки.
Аноним 14/02/17 Втр 15:53:30 #315 №933098 
>>933088
А у грида тоже match_parent. И у всех его родителей.
Я пытался считать через
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

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

Да и я уже наконец-то сделал, что нужно через задание адаптера в post.
Аноним 14/02/17 Втр 15:53:45 #316 №933101 
>>933094
>Я уже пару лет пишу под android, но есть определенные пробелы в знаниях по Java
Как же ты это пишешь? Как чучело из изумрудного города?
Аноним 14/02/17 Втр 15:54:25 #317 №933103 
>>933098
Зачем задавать размер грида, ладно ебись как хочешь, дело твое.
Аноним 14/02/17 Втр 15:58:59 #318 №933109 
>>933103
Я и не задавал.
Я делал так.
Допустим, экран 1000 пикселей. По бокам от gridView по отступу в 10dp. Перевожу их по формуле в пиксели, получается допустим 100 пикселей на отступ.
1000 - 100*2 = 800. Но атятя, не сходится почему-то.
Аноним 14/02/17 Втр 16:05:45 #319 №933117 
Анон есть 3 активити.
Активити 1 передает через интент значение в 2, 2 просто запускает активити 3, 3 делает запись в бд и возвращает на 1 активити, как сделать так, чтобы с 3 вернуться сразу на 1, не открывая 2?
Аноним 14/02/17 Втр 16:12:22 #320 №933124 
>>933117
FLAG_ACTIVITY_CLEAR_TOP
?
Аноним 14/02/17 Втр 16:14:01 #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()).
Аноним 14/02/17 Втр 16:15:09 #322 №933128 
>>933124
>>933127
Благодарю
Аноним 14/02/17 Втр 16:41:55 #323 №933145 
Котаны, вот к примеру вайбер, окно с чатом. Там же нихуя не списочек? Там ScrollView на которое накидали кучу отдельных вью с сообщениями?
Аноним 14/02/17 Втр 16:50:57 #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];
}

я все верно понял?
Аноним 14/02/17 Втр 16:52:34 #325 №933154 
>>933145
Нет, там список, скорее всего RecyclerView. ScrollView сожрал бы кучу памяти под вьюшки которых нихуя не видно.
Аноним 14/02/17 Втр 16:54:46 #326 №933158 
>>933150
Ты должен читать поля в том же порядке в котором записывал, в newArray ты просто должен создать массив своего типа с данным размером, количество полей там не при чем. Это сделано для того что бы избежать рефлексии для создания массивов.
Аноним 14/02/17 Втр 21:17:17 #327 №933361 
>>919538 (OP)
Анон, спасай! Нужен код простой программки которая выведет информацию о RAM и HDD памяти телефона.

Если это как-то можно сделать стоковыми средствами Андроид то вообще заебись, но пока ничего не нашел.
Аноним 14/02/17 Втр 21:28:03 #328 №933368 
От чего может падать эмулятор? Поворачиваю устройство, он думает-думает... И вылетает, ничего не сказав. Критическая ошибка,пожаловаться разработчикам, все такое.
Задача у меня: сохранить большой объект (лабиринт, который может генериться секунд 40, если большие размеры указать) и не генерить его заново после поворота. Делал через static - падало с размерами 23x23. Сделал с повторной генерацией после поворота - начало падать на 40x40.
Не знаю чего еще сказать
подскажите, кто знает
Аноним 14/02/17 Втр 21:35:20 #329 №933371 
>>933368
Проверь на всякую хуйню типа переполнения стека или памяти. Что такое "размеры 23x23"?
Аноним 14/02/17 Втр 21:40:07 #330 №933376 
>>933371
23х23 клетки - размеры поля
а где это в студии можно посмотреть?
Аноним 14/02/17 Втр 21:45:36 #331 №933380 
>>933376
Внизу где-то, android monitor смотреть. Алгоритм генерации чей? 40 секунд на лабиринт в 500 клеток это не очень.
Аноним 14/02/17 Втр 21:50:50 #332 №933383 
О, тут и такие мониторы! Прикольно. Спасибо, посмотрю
не, долго он генерит большие, а такой за секунду.
Алгоритм моего друга-заказчика
Аноним 14/02/17 Втр 22:07:06 #333 №933395 
>>933361
бампбамп!
Аноним 14/02/17 Втр 22:18:13 #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

щенок ебаный
Аноним 14/02/17 Втр 22:19:34 #335 №933411 
>>933410
Надеюсь это то что надо, пока качается среда.
Спасибо
Аноним 14/02/17 Втр 22:39:25 #336 №933434 
>>933411
Код по ссылкам может не работать или быть с багами или просто ты не догадаешься его правильно испльзовать.
головой кароч подумай чутка. Если думать не хочешь, открывайанус кошелек.
Аноним 14/02/17 Втр 22:46:01 #337 №933443 
>>933434
И почем цена скрипта обращающегося к API дроида?
Аноним 15/02/17 Срд 10:03:38 #338 №933607 
Анон, хочу вкатиться в андроид. Начал заниматься по startandroid, но это все-таки не то. Хотелось бы найти какую-нибудь нормальную книгу, чтобы получить общую картину, а не обрывки в духе "как сделать xyz?". Что посоветуешь?
Аноним 15/02/17 Срд 12:08:21 #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/02/17 Срд 12:20:47 #340 №933674 
>>933663
Спасибо, милчеловек!
Вообще, "Философию Java" я освоил еще полгода назад, но до сих пор иногда почитываю. Можно ли с учетом того, что мне не придется ее заново перечитывать и что я уже немного помацал SQLite осилитт все это до начала (конца) лета?
Аноним 15/02/17 Срд 12:26:35 #341 №933678 
>>933674
У меня ушло чуть меньше двух лет, чтобы выйти на уровень "опишите стек технологий, почитаю доки если че непонятно и скажу вам срок выполнения". Но если у тебя хорошая подготовка (ладно, будем честны, если у тебя есть хоть какая-то подготовка) то до этапа "фреймворки" дойти должен успеть
Аноним 15/02/17 Срд 12:28:28 #342 №933680 
>>933674
Даб к слову, я придерживаюсь мнения большинства, философию нужно периодически (раз в три-четыре месяца) перечитывать. Во-первых там треть вопросов с собесов покрывается, во-вторых, ИМХО, приятно читается.
Аноним 15/02/17 Срд 13:29:14 #343 №933730 
Можно ли предотвратить открытие активити вызова? Ну то есть у меня в приложении есть видео общение и тут пользователю звонят, я хочу показать диалог/нотификацию мол у вас тут вызов думайте куда отвечать, а не так что бы активити вызова тупо открылось не давая пользователю шанса не выходить из моего приложения. Ковыряю пока TelephonyManager но еще не нашел похожего.
Аноним 15/02/17 Срд 13:36:29 #344 №933737 
>>933663
Хороший совет, на самом деле.
Главное, с голым андроидом не переусердствовать, а то он может всё желание отбить.
Аноним 15/02/17 Срд 14:06:42 #345 №933756 
Почему если начинать startDrag для Drag'n'Drop в OnClickListener - то DragEvent не срабатывает при пеовом же нажатии? Только при быстром повторном.

Проверял у себя и на примере (в последнем заменил только OnLongClickListener на OnClickListener).
Аноним 15/02/17 Срд 14:07:46 #346 №933757 
>>933756
Ах да, пример

https://github.com/patrick-iv/DragNDropApp/blob/master/app/src/main/java/com/patrick_iv/examples/dragndropapp/MainActivity.java
Аноним 15/02/17 Срд 14:11:16 #347 №933758 
>>933756
>OnClickListener
Причем, нажатие обрабатывается 100%, я проверял в логах.
А вот в OnDragListener эвент прилетает только при повторном.

Как-то связано с тем, что OnClick OnClickListener ничего не возвращает, а OnLongClickListener возвращает boolean?
Аноним 15/02/17 Срд 19:10:19 #348 №933925 
Вечер в хату, арестанты. Подскажите, нужно из изображения удалять его фон, например, сфоткана вещь на кровати, нужно оставить вещь а весь задний фон сделать прозрачным. Фон всегда разный так что сравнивать изображение фона с конечным не вариант. Смотрел на opencv, но по яве не нашел никакой инфы, а с плюсами не горю желанием сношаться. Какие варианты подскажете?
Аноним 15/02/17 Срд 19:14:45 #349 №933929 
>>933925
OpenCV самый оптимальный вариант на ведре. Вроде ещё tensor Flow должен прикручиваться, но не пробовал
Аноним 15/02/17 Срд 19:57:09 #350 №933959 
Помните РИНГТОНЫ на говеных старых мобилодровах?
Что есть сегодян есть для обработки мелодий в вибрации для видра?
Аноним 15/02/17 Срд 19:58:02 #351 №933961 
>>933959
Закажи дилдак на али и не парься.
Аноним 15/02/17 Срд 20:02:00 #352 №933962 
>>933961
Пидорские советы от пидора.
Аноним 15/02/17 Срд 20:15:02 #353 №933963 
>>933962
Ну просто я ещё под iOS разрабатываю.
Аноним 15/02/17 Срд 20:35:59 #354 №933965 
>>932880
Пацаны помогите разобраться с viewpagerом и adapterами всякими, чот нимогу раскурить. Смотрел в оф доках как работать с ним и фрагментами. Смотрел на стартдроиде статью. Я чет не догоняю никак как это все утсроено. Паможите!!!
Аноним 15/02/17 Срд 20:56:17 #355 №933970 
>>933965
Можно вызвать в нужном тебе месте метод
notifyDataSetChanged(), который уведомит адаптер, что нужно отобразить измененное содержимое.
Все манипуляции производить с данными в последовательности, которую передал адаптеру, потом вызывай notifyDataSetChanged().
Это можно прям из активити делать.
Аноним 15/02/17 Срд 21:09:20 #356 №933979 
>>933970
А как изменять индексы страниц у вьюпейжера? можно как то отказаться вообще от позиций вьюх? типа 1 страница поумолчанию только. Но когда свайп случается билдится вторая или предыдущая.
Аноним 15/02/17 Срд 21:29:37 #357 №933993 
В андроид студии можно как-то изменить цвет счетчика строк?
Красные слишком выделяются на фоне всего, отвлекают и вообще глаза разъезжаются, я так косоглазым стану.
Отказываться от белой темы и стирания шишки на сотни строк в день не хочу.
Аноним 15/02/17 Срд 21:34:52 #358 №933997 
>>933993
Settings - Editor - Colors&Fonts - General - Code - Line Number.
Аноним 15/02/17 Срд 22:23:15 #359 №934025 
>>933663
Если я .NET помидор с 6летним стажем, могу ли я не читать философию жабы? Глянул на синтаксис - от шарпа существенно не отличается.
Я так понимаю, что это книга для разного рода вкатывальщиков, которые не имели дело с чистым ООП.
Аноним 15/02/17 Срд 22:27:27 #360 №934030 
>>934025
А чо есть грязный ооп? Или какой то другой ооп который типа вкатывальщики учат, а 6летние помидоры знают уже какойто другой ооп?
Аноним 15/02/17 Срд 22:38:47 #361 №934038 
>>934030
Ну например тот же C++, который является от части структурным языком в подмножестве C. Т.е. существование функций, которые живут вне класса.
Так же можно упомянуть про всевозможный сахар аля C#, который позволяет обходить ограничения, которые могут возникнуть в Java, решаемые там с помощью использования паттернов те же ивенты и делегаты.
Мультипарадигменный ЯП, который лишь предоставляет ООП как возможную парадигму написания JavaScript

Java - сферический ООП в вакууме. Я считаю, что если ты помидор, знающий паттерны хуяттерны, то читать книжку, которая представляет их как часть философии - нахуй ненужно.
Аноним 15/02/17 Срд 23:04:07 #362 №934051 
>>934038
ой камон кто тебе мешает статик методов напилить аля фюнкции си.
Аноним 15/02/17 Срд 23:16:22 #363 №934055 
>>934051
При чем тут это? Я имел в виду возможность написания функций вне класса в принципе.
Аноним 15/02/17 Срд 23:22:13 #364 №934060 
>>934055
Ладно это все фигня лучше поясни как в андроиде из хмл описания виджетов объекты создаются, и как с тем же вьюпейжером разобраться.
Аноним 15/02/17 Срд 23:34:48 #365 №934072 
>>934060
> из хмл описания виджетов объекты создаются
Если тебе нужно описание внутреннего устройства, то я тут тебе не помошник сам вкатываюсь. иначе не спрашивал бы про необходимость изучения жабы по философии. А так из того, что знаю - LayoutInflater все делает.

> и как с тем же вьюпейжером разобраться
в смысле, как сбрасывать вьюпажер при поворотах экрана? Честно говоря, сам не знаю. Чому в гугле не спросишь?
Аноним 15/02/17 Срд 23:42:21 #366 №934078 
>>934072
Не, я хочу бесконечный вьюпейжер сделать, где типа у него только три фрагмента. Когда свайпаешь типа все красиво свайпаецо на левый или правый фрагмент, но после окончания свайпа я хочу перегенерить позиции вьюпейжера, чоб было как до использования свайпа. Типа в текущей памяти три фрагмента, текущий, левый и правый они не видны. При свайпе перелистывается например на правый фрагмент. Дальше вот хуй пойми где код писать перестроения всего этого дела. В пэйжер адаптере или в пейжер фрагменте или допиливать вьюпэйжер.

А про инфлейтор хмм что он вообще делает, можешь если не сложно на пальцах как дауну пояснить.
Аноним 15/02/17 Срд 23:54:40 #367 №934086 
че то проиграл с их диалога
Аноним 15/02/17 Срд 23:57:13 #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 доставить всякие конторы, которые ты в этом лэйауте определил. В принципе нихуя сложного.
Аноним 15/02/17 Срд 23:57:32 #369 №934089 
>>934086
на кожаной флейти поди поиграй, дудочник
Аноним 16/02/17 Чтв 00:03:55 #370 №934097 
>>934088
Мм, да я это видел, но а б с страницы типа будут по кругу скролится, но типа надо чтоб данные то менялись в них. Для этого завести какую нибудь глобальную переменную, которая взависимости от свайпа +-1 делает и уже от этого в пэйжере контент выводить?

А еще вот пэйжадаптер, он логически отвечает за информацию подаваемую в фрагмент? Тоесть пэйж адаптер знает что третья страница и достает инфу из третьей строки в бд и передает в фрагмент, где тот уже запихивает переданые поля из адаптера в свой фрагментный лэйаут.
Аноним 16/02/17 Чтв 00:15:38 #371 №934106 
>>934088
Если грубо говоря это похоже на лэйзи лоад чтото, подгружать новые фрагменты, но удалять старые.
Аноним 16/02/17 Чтв 00:29:46 #372 №934112 
>>934106
Если юзать FragmentPagerAdapter, то так и должно работать, если я не ошибаюсь.
Аноним 16/02/17 Чтв 01:55:19 #373 №934141 
Обратный вопрос. Как вкатиться в разработку из Android. Есть смарт, но под Android даже нормально блокнотика и SSH клиента не нашел.
Нашел убогий SSH клиент под свободной лицензии и тот даже ключ добавить не дает.
Как поставить какое-то окружение на эту недосистему вообще незнаю. Рута нет. Получить через уязвивость в кит-кат незнаю как.
Аноним 16/02/17 Чтв 09:52:15 #374 №934294 
>>934141
>вообще незнаю.
>Рута нет
>незнаю как
Ну и иди тогда нахуй если ниче не знаешь.
Аноним 16/02/17 Чтв 10:36:27 #375 №934305 
>>934294
А ты знаешь, как получить рута? Без всяких китайских троянов. Незнаешь? Так тоже иди нахуй.
Аноним 16/02/17 Чтв 11:03:30 #376 №934322 
>>934305
Пиздуй в тему своего смарта на 4пда. Мудак поехавший.
Аноним 16/02/17 Чтв 11:20:57 #377 №934331 
Есть способ вызвать стандартную камеру и получить фотографию, а не настраивать все самостоятельно?
Аноним 16/02/17 Чтв 11:23:57 #378 №934334 
>>934331
Вы блять хоть чуть-чуть в гугл умеете?
https://developer.android.com/training/camera/photobasics.html
Аноним 16/02/17 Чтв 11:26:08 #379 №934336 
>>934334
Не работает эта хуйня.
Аноним 16/02/17 Чтв 11:32:35 #380 №934339 
>>934336
Хуйня это ты, у меня все фотки берутся. Ты же даже не можешь сказать что у тебя не работает, даже никакого кода небось нет.
Аноним 16/02/17 Чтв 11:41:27 #381 №934342 
>>934339
Да я там просто обосрался, впрочем ничего нового. Не полностью старый код откатил и камера лочилась перед отсылкой интента.
Аноним 16/02/17 Чтв 11:49:13 #382 №934344 
>>934342
Обтекай
Аноним 16/02/17 Чтв 12:21:44 #383 №934353 
>>934344
Ебанашка пытается выебнуться тем, что удачно копипастит готовые примеры.
Да ты же утрешься при первой же нестандартной задаче, которую не реализовать стандартными средствами без киянки и мата.
Аноним 16/02/17 Чтв 12:33:02 #384 №934360 
>>934353
Громкое заявление.
Аноним 16/02/17 Чтв 12:35:10 #385 №934365 
>>934360
Надеюсь, тогда найдется ЧСВшный хуесос, который встанет и ололокая пустит тебе тугую струю в ебало.
Из-за такого говна вот и не хочется куда-то идти, кроме как на stackoverflow.
Аноним 16/02/17 Чтв 12:37:10 #386 №934366 
Поставил Xamarin поверх студии. Создаю пустой проект. Запускаю. На эмуляторе черный экран. Даже не запускается операционка. Иногда после завершения пишет, что были проблемы с деплоем, а иногде не пишет. Это на дебаге. На релизе сразу говорит, что проблемы с деплоем. При этом никаких ошибок или ворнингов не выводится. В чем может быть дело? До этого ставил андроид студию и там было всё нормально, но мне нужно на шарпе делать.
Аноним 16/02/17 Чтв 12:49:15 #387 №934375 
>>934365
Когда я задаю тут вопрос, я не ожидаю на него другого ответа, понизь свои ожидания.
Аноним 16/02/17 Чтв 12:49:38 #388 №934377 
>>934366
Какие-нибудь логи есть?

https://forums.xamarin.com/discussion/64088/android-emulator-opens-but-project-does-not-deploy-and-start

Как вариант можно попробовать adb.exe прибить, но это уже из области танцев с бубном.
Аноним 16/02/17 Чтв 12:53:10 #389 №934383 
>>934375
Ясно, латентный мазохист ожидает, что другие оценят его попытки при чинить добро.

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

Блядь, даже вот не думал, что pr собрал такой гной из профессии. Неудивительно, что здесь так тихо. Безрукие агрессивные ебанашки-копипастеры разгоняют всех адекватов.
Аноним 16/02/17 Чтв 13:08:14 #390 №934403 
Анон, доставь хороший туториал по bitmap, а то в документации ничего не понятно.
Аноним 16/02/17 Чтв 14:05:03 #391 №934449 
>>934403
Что тебя конкретно интересует? Не встречал какого-то общего гайда, соскейлить/вырезать/записать это есть.
Вот пара толковых:
Крутой блюр - https://habrahabr.ru/post/215077/
Подрезки/масочки - https://habrahabr.ru/company/badoo/blog/310618/

Короче надо гуглить определенную тему. Опять же многое можно подчерпнуть из исходников glide/picasso, но там больше про менеджмент.
Аноним 16/02/17 Чтв 15:26:14 #392 №934492 
сап, сообщество! реквестирую хелпы в тривильном вопросе
public class Example {
public static Example get(Context context){
}}
Это именованный конструктор или как?
Аноним 16/02/17 Чтв 15:29:26 #393 №934496 
>>934492
Example слева от get - это возвращаемый тип. То есть это статический метод, который возвращает экземпляр этого класса.
Метод класса, грубо говоря, а не экземпляра.
Аноним 16/02/17 Чтв 15:39:10 #394 №934502 
>>934496
метод get, объявленный в классе Example, возвращает экземпляр Example? (Example = Example)
Аноним 16/02/17 Чтв 15:48:38 #395 №934507 
>>934502
Ну да, может там в методе какая-то хитрожопая инициализация, и дополнительная обработка (что и отличает от простого создания через конструктор) которую не хотят доверять тебе?
Аноним 16/02/17 Чтв 15:49:46 #396 №934508 
>>934507
Все так, анон. Спасибо тебе!
Аноним 16/02/17 Чтв 16:41:24 #397 №934542 
Что почитать про оптимизацию? Кроме курса на юдасити не нашел ничего толкового.
Аноним 16/02/17 Чтв 16:41:42 #398 №934543 
>>934383
Уот ета пичооот, еще небось и рута у тебя нет, маня?
Аноним 16/02/17 Чтв 17:56:58 #399 №934604 
>>934542
Во-первых она не должна быть преждевременной. А во-вторых - https://www.youtube.com/watch?v=qk5F6Bxqhr4&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

Ну и вообще надо думать и все будет в норме. Обычных джавовских навыков хватит.
Аноним 16/02/17 Чтв 20:03:32 #400 №934671 
Необходимо сделать приложение, которое будет по Bluetooth опрашивать устройства и сохранять в файл/отсылать в базу/показывать на экране данные.
В принципе оно сейчас это делает, но Bluetooth создается объектом в MainActivity c соответствующими последствиями. А мне нужно, чтобы соединение не терялось при переходе из одной Activity в другую (и полученные данные обрабатывались по-разному соответственно).
Как грамотно сделать подобное? Что почитать про Bluetooth? Я так понял, нужно мутить Service, в правильном направлении копаю?
Аноним 16/02/17 Чтв 20:30:15 #401 №934682 
>>934671
Вариант для обрыганов - синглтон/инстанс блютуса в апликешоне.
Вариант для норм пацанов - блютус в сервисе. Возникает два варианта - сервис который ты сам стартуешь и который стопается тобой же, из форграунд нотифкации или аллаха. Вариант второй - байндишся при старте активти и анбайдишся в стопе, если юзер переходит на следующее активити товего приложения то сервис не помрет, в обоих вариантах можно организовать общение через байндер и будет ништяк, ну или бродкастами хуярить.
>что почитать
Доку для начала. Тем более если приложуха уже умеет все что надо из активти то и читать особо ничего не надо, кроме существующего кода.
Аноним 16/02/17 Чтв 20:49:27 #402 №934698 
>>934682
почему не помрет? если у него 0 биндов, то помрет
Аноним 16/02/17 Чтв 21:06:08 #403 №934717 
>>934322
Уровень знаний обитателей 4пда недостаточен, что бы ответить на мой вопрос. Похоже здесь тоже.

sageАноним 16/02/17 Чтв 21:13:17 #404 №934720 
>>934717
Иди нахуй просто.
Аноним 16/02/17 Чтв 21:18:20 #405 №934727 
>>934720
Быдло
Аноним 16/02/17 Чтв 23:03:30 #406 №934802 
>>934698
Сервисы хранятся в дебрях активист менагера, и когда одна активитя стопается и анбайдится сервис подождет старта следующей, а там и байнд есть, ничего не пропадет, проверено музыкальным плеером и вебртисишным аудио/видео чатом. Еще можно форграундную нотификации бахнуть.
Аноним 16/02/17 Чтв 23:24:51 #407 №934816 
>>934802
Вы красивые слова говорите, еще б я понимал чего-то. Завтра буду переводить ваши речи.
Аноним 17/02/17 Птн 01:19:32 #408 №934870 
>>934802
И ты это тестил на всех китайских телефонах?
Аноним 17/02/17 Птн 04:19:35 #409 №934919 
https://github.com/mchav/try-frege-android/blob/master/app/src/main/frege/io/github/mchav/tryfrege/MainActivity.fr
Аноним 17/02/17 Птн 09:14:51 #410 №934966 
>>934870
На хуеми, который больше одной залоченой приложухи не держит - норм, на мейзу тоже. А если китайфон не тянет то пусть нахуй идет. Андроид нигде гарантии не дает что все будет круто, но форграундную сервис это как форграундную активитя и грохать ее будут в самом крайнем случае.
Аноним 17/02/17 Птн 11:52:59 #411 №935015 
Есть вопрос касательно гитхаба.
Я скачал Git, запилил аккаунт на гитхабе. Делают пуш из Android Studio - коммит отображается как совершенный с аккаунта Git, а не гитхаба. Как исправить? Не вручную же кидать файлы...
Аноним 17/02/17 Птн 19:17:08 #412 №935201 
Купил Huawei P9 lite, телефон хороший, но есть одна проблема...
Иногда(весьма часто) не пробрасываются ошибки и ты сидишь, кучу времени пытаешься догадаться, что наебнулось. В гуглах ничего вразумительного не нашел, с другими телефонами таких проблем нет. На нём стоит Android 6. Были у кого-нибудь похожие проблемы?
Аноним 17/02/17 Птн 23:49:36 #413 №935377 
>>935201
С мейзу такая хуйня, но крашлитика все ошибки ловит и исправно шлёт.
Аноним 18/02/17 Суб 00:22:11 #414 №935387 
Constraitlayout в студии так требователен к железу? У меня дикие лаги когда я им пользуюсь, перетащить что то на макете невозможно из за лагов.
А если и получится, то одно неверное движение и все сбрасывается.
Аноним 18/02/17 Суб 00:35:42 #415 №935393 
>>935387
Он не особо стабилен ведь ещё. У меня вроде нормально работает, без тормозов. Отправь багрепорт, может починят.
Аноним 18/02/17 Суб 00:56:21 #416 №935408 
>>935377
> но анальный зонд все ошибки ловит и исправно шлёт.
Мразь
Аноним 18/02/17 Суб 10:22:19 #417 №935488 
>>935408
Лол. Какой анальный зонд? Может ты и против гугл аналитики? Пиздос какие шизики бывают.
Аноним 18/02/17 Суб 13:02:24 #418 №935554 
>>935015
Червь пидор, в архивах и папачках храни типа Laba1_21072006, Laba1_210720061701, Laba1_21072006_1vasya_edit.rar
А про гит забудь не твое это не лезь туда. Через пару лет когда окончишь школу можеш попробовать но только под надзором взрослых
Аноним 18/02/17 Суб 13:43:15 #419 №935570 
>>935488
> Может ты и против гугл аналитики?
Ясно.
Аноним 18/02/17 Суб 15:06:54 #420 №935628 
>>935377
Крашлитикс то да, но пользоваться ей для отладки куда запарней, чем созданными, для этого, инструментами, лол.
Аноним 18/02/17 Суб 16:22:22 #421 №935653 
Нормально ли хранить различные приватные данные (ключ шифровки бд, ключи api и прочее) в gradle.properties (своем .properties файле) и доставать их оттуда в каком-нибудь ленивом синглтоне в java-коде ?
Аноним 18/02/17 Суб 18:22:19 #422 №935744 
>>935653
>Нормально
Нет. На клиенте не должно быть ничего "секретного". Может ты и сертификат в assets пихаешь? Ключи апи (гугл хуялитика, вк хуяпи и тд не секретные данные если чо)
Аноним 18/02/17 Суб 19:00:44 #423 №935760 
>>935744
Ну, а где тогда хранить то то, что ДОЛЖНО быть на клиенте и ДОЛЖНО быть секретным ?
Аноним 18/02/17 Суб 19:04:54 #424 №935763 
>>935760
Конкретней, что ты считаешь секретным? Есть множество замечательных статей, которые поясняют, что как бы ты не изъебывался за сравнительно не долгое время все на твоем клиенте вынюхают и реверснут.

http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android
Аноним 19/02/17 Вск 03:22:52 #425 №936057 
>>935653
Вся секретная хуйня если она действительно секретная должна быть только на серваке.
Аноним 19/02/17 Вск 03:25:27 #426 №936058 
>>935387
Что у тебя за компьютер, лол?

Сижу с fx8300 с 16 гб на борту - работает все нормально.
Вообще, считаю андроидстудио максимум легковестным после многолетнего опыта в VisualStudio.
Аноним 19/02/17 Вск 13:04:28 #427 №936199 
>>936057
А сикретный ключ для несиметрических алгоритмов шифрования где должен храниться?
Аноним 19/02/17 Вск 16:15:23 #428 №936344 
>>936057
Прости, но с таким же успехом можно подружить с сервером со своего устройства, и оттуда вытащить те же ключи. Разницы будет - 0. А вот как ты после DexGuard-а что-то с клиента, подверженное, вдобавок, дополнительной обфускации, вытащишь 0 мне стало интересно уже
Аноним 19/02/17 Вск 16:39:41 #429 №936353 
>>936199
Ну расшифровывать ты все равно будешь на бэкенде. Так что там же.
>>936344
Сервер взломать сложнее, чем декомпилировать и деобфусцирвоать твой хуевый жабокод. Мобильное приложение - фронтенд. Нахуй нужен бэкенд, если твоя мобилка сама себе секьюр.
Аноним 19/02/17 Вск 17:08:36 #430 №936376 
>>936353
Может чтобы разгрузить твой клиент от ненужной хуйни ? Мне собственно интересно, как ты хранишь ключи апишек, например, или ключи от базы данных с пользовательскими данными (и не пизди, что ты не делал ни одного приложения с ними, ога), ну или токены, что самое банальное ?
Аноним 19/02/17 Вск 17:09:15 #431 №936378 
>>936353
И да, чет ты загнул, что DexGuard-ом прогнанный код легко деобфусфируется
Аноним 19/02/17 Вск 17:55:48 #432 №936408 
>>936376
API keys не защитить никак. Как бы ты их не прятал, сетевые запросы легко перехватить и прочитать.

БД шифровать тоже особого смысла нет. За это отвечает (и должна отвечать) ОС.

Если у тебя OAuth, не какая-то самописная хуйня, то токены тоже нет смысла прятать.

Другой анон
Аноним 19/02/17 Вск 18:01:41 #433 №936413 
>>936408
Почему с oauth не надо прятать токены?
Аноним 19/02/17 Вск 18:59:01 #434 №936460 
Есть вьюшка, а ней прикручен OnTouchListener.
Все замечательно до тех пор, пока вьюшка не разблокируется через setEnabled(false)
Проблема в том, срабатывает эвент ACTION_MOVE, а ACTION_DOWN нет - ведь вьюшка была заблокирована в момент приложения пальца.

В итоге получается очень не желательное поведение, которого должно происходить, только если был эвент ACTION_DOWN.

Как игнорировать все эвенты, перед которыми не было ACTION_DOWN?

Ничего не приходит в голову, кроме как в onDown() ставить переменную в true, а в другом месте проверять и после действия ставить обратно в false.
Аноним 19/02/17 Вск 19:14:49 #435 №936469 
>>936460
>setEnabled(true)
Аноним 19/02/17 Вск 19:26:27 #436 №936477 
>>936460
Блядь, хуепадла ACTION_DOWN втискивается еще до блокировки вьюшки, и затаивается там, как сука крыса на весь процесс блокировки. А потом продолжает свое дело как ни в чем не бывало.

Видимо, вместо setEnabled придется еще и откручиватьэ\прикручивать OnTouchListener.
Аноним 19/02/17 Вск 19:28:12 #437 №936479 
>>936477
Причем, втискивается в милипиздрическое окошко по времени, пока вызывается метод и доходит до строки блокировки вьюшки.
Коварно как.
Аноним 19/02/17 Вск 20:42:11 #438 №936538 
Котоны, помогите оценить стоимость работ: нужно приложение для андроид 5+, авторизация + 4 въюхи. Данные берутся по JSONRPC и отображаются в виде текстовой информации на вьюхах, бэк сервер готов
Аноним 19/02/17 Вск 20:53:22 #439 №936549 
>>936538
Подробнее про вьюхи: какие и что на них будет отображаться.
Если хочешь - сразу на мыло: [email protected]
Аноним 19/02/17 Вск 20:58:06 #440 №936552 
>>936058
Я вот использую Visual Studio 2010 Express для C# и по сравнению с AndroidStudio она выглядит максимум легковесной.
core i5 4690 8 gb ram
Аноним 19/02/17 Вск 21:19:30 #441 №936568 
>>936549
Проверяй мыльцо
Аноним 19/02/17 Вск 22:56:37 #442 №936666 
>>936538
>>936568
Вы хоть ракалам-нубасам покажите, какие там суммы и примерно зиз чего складываются.
Аноним 19/02/17 Вск 23:45:26 #443 №936721 
>>936378
Маня. Обфускация - не панацея. Ты же не будешь например хранить secret_key в четырежды минифицированном js на странице. Отличие минифицированной жсины от обфусцированного жабоговна отличается лишь необходимостью декомпиляции последнего. Конечно, ты можешь хранить апи ключи в клиенте сделав многоходовочку - есть надежда, что просто не будут там искать.
Аноним 20/02/17 Пнд 02:54:43 #444 №936801 
Подскажите какие нибудь более менее крупные проекты, которые можно понюхать. Дрочить мелкую хуйню по мануалам заебало. Свои проекты делаю, но иногда все же хочется посмотреть на нормальные проекты, пишущиеся командой людей, где все более менее по феншую.
Щас вот открыл дашчан пока что.
Аноним 20/02/17 Пнд 05:09:37 #445 №936813 
>>936801
Глянь здесь haskell.org
Аноним 20/02/17 Пнд 05:51:46 #446 №936848 
>>936801
https://bitbucket.org/derekwilson/recommender-android/src/eeb49ff42b301bd42350d9ee5212998d4ef33ccf/RecommenderAndroidStudio/app/src/main/java/net/derekwilson/recommender/?at=master
Аноним 20/02/17 Пнд 17:09:49 #447 №937142 
А как можно в чистой архитектуре дядюшки Боба использовать сервисы, AccountManager и прочие контексто-зависимые классы ? Вроде и в Activity/Fragment пихать не хочется, а вроде и в data layer контекста быть не должно
Аноним 20/02/17 Пнд 17:22:59 #448 №937151 
Анон, как сделать чтобы floatinActionBar пропадал по скроллу вниз и появлялся по скроллу вверх, как в апке для вконтакте?
Аноним 20/02/17 Пнд 17:42:01 #449 №937167 
>>937142
В дата леере контект какраз таки плавает, ибо там в любом случае приходится иметь дело с интернет конекшном.
Остальные классы либо во вью, либо в дате.
Аноним 20/02/17 Пнд 19:09:44 #450 №937219 
>>937151
Гугли про CoordinatorLayout, если я правильно тебя понял
Аноним 20/02/17 Пнд 20:05:09 #451 №937243 
кто работал с камерой? у меня такая проблема, пропорции превью и реальные не совпадают вот
Аноним 20/02/17 Пнд 20:08:01 #452 №937246 
Как сделать возможность добавлять картику с телефона/камеры/соц.сетей и т.д.?
Аноним 20/02/17 Пнд 20:40:06 #453 №937255 
У меня есть активити, с которым связано 3 *.xml файла:
activity_layout.xml
activity_content.xml
cardView.xml

так вот в контенте у меня RecyclerView из CardView
на CardView кнопочки, как мне написать для них обработчик нажатий и как привязать к обьектам, чтобы кликнув по карточке я мог получить id обьекта, который эта карточка представляет?
Аноним 20/02/17 Пнд 21:09:42 #454 №937265 
>>937255
http://stackoverflow.com/questions/24471109/recyclerview-onclick
Аноним 21/02/17 Втр 08:51:07 #455 №937475 
>>937243
Посмотри исходники barcodescanner в проекте zxing на github
Аноним 22/02/17 Срд 12:47:39 #456 №938409 
Сап, почаны! Опять реквестирую ответ на глупый вопрос:
почему многие методы стандартной библиотеки начинаются с on? onStart, onCreate, onSet.., это специальная синтаксическая приблуда закрепленная традиционно или как? Или есть спец смысл?
Аноним 22/02/17 Срд 14:44:52 #457 №938460 
>>938409
onStart - при старте.Сразу понятно, когда вызовется этот метод.Такое много где встречается (onClickListener тот же).
Аноним 22/02/17 Срд 15:38:14 #458 №938483 
Есть анимация с

setRepeatCount(INFINITE);
setRepeatMode(REVERSE);

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

Не получается через AnimationListener.
onAnimationRepeat выполняется два раза за цикл, а onAnimationEnd вообще ни разу.

Как, посоны?
Аноним 22/02/17 Срд 15:41:04 #459 №938489 
>>938483
Или нужно сделать анимацию без повторов, а уже в ее AnimationListener выполнять метод, который сделает что нужно и запустит другую анимацию, которая движется в обратную сторону (а в конце запустит первую)?
Аноним 22/02/17 Срд 15:46:43 #460 №938498 
14816403942883.jpg
Поясните. Как вот это https://github.com/yctung/AndroidLibSvm запустить на планшетике?
Аноним 22/02/17 Срд 15:57:50 #461 №938509 
>>938498
Скачать zip.
Запустить андроид студию.
File -> import project на распакованную папку.
Run -> Run/debug
Аноним 22/02/17 Срд 16:01:28 #462 №938511 
14827611111960.jpg
>>938509
Спасибо, попробую.
Аноним 22/02/17 Срд 16:02:41 #463 №938514 
>>938509
Проще же
git clone & gradlew installDebug
Аноним 22/02/17 Срд 16:09:50 #464 №938520 
>>938514
>gradlew installDebug
Ну проще разве что для красноглазых пердоликов, у которых припадки эпилепсии от человеческих интерфейсов.
Аноним 22/02/17 Срд 16:55:40 #465 №938546 
>>938520
Но это же реально проще и быстрее.
Аноним 22/02/17 Срд 18:12:12 #466 №938592 
react-native-calendar-events кто-то юзал?
sageАноним 22/02/17 Срд 18:13:58 #467 №938593 
>>938592
В js-тред, уебище.
Аноним 23/02/17 Чтв 10:09:11 #468 №939050 
Как поменять цвет контекстного меню? Какой атрибут темы за это отвечает?
Аноним 23/02/17 Чтв 11:00:52 #469 №939065 
Ребят, почему используя Retrofit последней версии я получаю
Exception: Cannot read raw response body of a converted body
при попытке прочесть сырой body?
String raw = response.raw().body().string()?
Аноним 23/02/17 Чтв 15:17:26 #470 №939313 
А на питоне нельзя наебашить под андроид? А на го?
Аноним 23/02/17 Чтв 17:04:24 #471 №939383 
>>939313
Ебашь на Хаскелле: https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs
Аноним 23/02/17 Чтв 17:16:20 #472 №939397 
Есть одно активити, оно запускается как popup, тоесть занимает не фулл экран, на фоне видно активити с которого я его запускал.
Как сделать чтобы фоновое активити было темнее, чем popup?
Как сделать анимацию, чтобы popup появлялся снизу вверх?
Аноним 23/02/17 Чтв 19:20:59 #473 №939499 
>>939313
На питоне есть киви, ебашишь сразу под всё кроме винфона.
Аноним 23/02/17 Чтв 19:54:53 #474 №939531 
>>939397
А нахуя активити то? ебашь алерт диалог или диалог фрагмент, а там уже гуглится как анимировать эту срань
Аноним 23/02/17 Чтв 20:35:00 #475 №939547 
>>939397
У активностей можно переопределить анимацию через overridePendingTransition.
> Как сделать чтобы фоновое активити было темнее, чем popup?
Че?
>>939531
> алерт диалог или диалог фрагмент
Менее удобно же, с активити есть ламповый onActivityResult, а не богомерзкие колбэки. С просто алерт диалогом нихуя не удобно работать, если тебе приходится setView делать.
Аноним 23/02/17 Чтв 20:48:25 #476 №939560 
Котаны, как заново запросить разрешения после того, как пользователь выбрал "больше не спрашивать" в диалоге запроса разрешений?
Аноним 23/02/17 Чтв 21:06:13 #477 №939577 
>>939560
Никак. Показать ему диалог с инфой что без разрешения кина не будет, и выдать он его может в настройках, можешь даже сделать кнопочку которая его в эти самые настройки кидать будет, с помощью интента.
Аноним 23/02/17 Чтв 21:19:56 #478 №939589 
>>939577
Ага, спс. Так и сделаю.
Аноним 23/02/17 Чтв 21:26:17 #479 №939594 
Как грамотно прятать токен с сессией пользователя? Пока храню в шайредпрефс, но очевидно это не лучшее решение.
Аноним 23/02/17 Чтв 21:32:22 #480 №939603 
>>939594
Зачем его сохранять? Он же по-идее должен генерироваться при каждом логине и удаляться через какое-то время неактивности.
Аноним 23/02/17 Чтв 21:38:04 #481 №939612 
>>939594
Ниче не меняй, так нормально, можно сделать что бы он через некоторое время становился неактивным, это все на серваке.
Аноним 23/02/17 Чтв 22:45:32 #482 №939669 
nexus2ceeandroid-n-popup-menu-old-2.png
>>939547
Ну вот так
Аноним 23/02/17 Чтв 22:54:38 #483 №939676 
>>939669
Так там по дефолту в теме dim указан вроде.
Аноним 23/02/17 Чтв 22:55:59 #484 №939677 
>>939676
Нет.
Аноним 23/02/17 Чтв 22:56:59 #485 №939679 
>>939669
Просто используй DialogFragment
Аноним 23/02/17 Чтв 22:58:33 #486 №939681 
Screen Shot 2017-02-23 at 10.00.32 PM.png
>>939677
Я такую использую, затемняется нормально.
Аноним 23/02/17 Чтв 23:09:50 #487 №939692 
>>939681
Помогло, благодарю.
Аноним 23/02/17 Чтв 23:26:55 #488 №939711 
Доставьте, пожалуйста, туториал для загрузки пика из галереи, сохранение его в битмап, обрезку и вот это все.
Аноним 23/02/17 Чтв 23:29:12 #489 №939712 
>>939711
ПРОСТО берешь и запускаешь интент ACTION_PICK
В результате получишь uri к файлу, если ты не с помощью DocumentProvider'a делал, то прийдется попросить пермишен на внешнюю память. А дальше берешь одну из сотни кропалок с гитхаба и без задней мысли кропаешь.
Аноним 24/02/17 Птн 02:22:16 #490 №939822 
>>939547
>>а не богомерзкие колбэки
если собираешься быть андройд разработчиком то придется привыкать, они везде
Аноним 24/02/17 Птн 08:20:30 #491 №939907 
>>939594
Если это временная сессия, то нормально и так. Если это какой-то более живучий по времени токен, то его хранят в AccountManager.
Аноним 24/02/17 Птн 11:30:05 #492 №939974 
zXH-upDzPw.jpg
Есть тут люди которые работали с модулей Camera Fragment ? нужна помощь, потому что я дико криворукое хуйло. пишите в телегу t.me/ksmolniy
Аноним 24/02/17 Птн 12:20:57 #493 №940000 
0f2b6c31-d7b6-4377-b5b3-63d55e3862e2[1].png
Сап /pr/, есть один RecyclerView.
Нужно сделать чтобы даты выводились как в скайпе. Всегда висела полупрозрачная дата сверху, а при скролинге встраивалась в divider.
Есть варианты?
Аноним 24/02/17 Птн 12:23:49 #494 №940002 
44854-7887[1].jpg
>>940000
Хм, сейчас подумал что проще всего будет декомпилировать сам скайп
Аноним 24/02/17 Птн 12:42:38 #495 №940007 
>>940002
Хуйня будет. Делаешь тип вьюхолдеров для дат, они будут в общем списке. А по скролу берешь у LinearLayoutManager'a первую и последнюю частично видимые позиции, дальше опираясь на свой список данных чекаешь есть там интересующая тебя дата или нет. Если есть прячешь отдельную вьюшку, показывающую дату, иначе делаешь ее видимой, как-то так, но я пиздабол с двача и возможно это будет не эффективно/не красиво.
Аноним 24/02/17 Птн 12:56:32 #496 №940014 
>>940007
> но я пиздабол с двача и возможно это будет не эффективно/не красиво.
На самом деле норм, сам так делал.
sageАноним 24/02/17 Птн 13:05:04 #497 №940017 
>>939974
Обоссал тебе ебало.
Аноним 24/02/17 Птн 14:26:48 #498 №940056 
Небольшое приложение состоит из одной активити и кучки фрагментов которые добавляются/заменяются/удаляются когда нужно, иногда используется back stack. Как правильно сохранять состояние иерархии фрагментов на случай если активити терминируют?
Аноним 24/02/17 Птн 14:54:21 #499 №940072 
>>940056
Бэкстек фрагментов сохраняется в onSaveInstanceState, в чем твоя проблема?
Аноним 24/02/17 Птн 15:11:20 #500 №940085 
>>940072
> Бэкстек фрагментов сохраняется
Я значит неправильно причину определил. У меня один фрагмент добавлялся в активити при создании (в onCreate), и потом он заменялся (когда нужно) на второй с помощью replace. При пересоздании активити фрагменты накладывались друг на друга. Я думал что там с бекстеком какие-то пиздарики, - но проблема в том что первый фрагмент добавляется всегда, и при восстановлении активити - кода он уже в бекстеке и новый добавлять не нужно. Какой нормальный способ следить за подобным? Конкретно в моем случае достаточно проверить глубину бекстека, это норм подход или нужно что-то более надежное писать?
Аноним 24/02/17 Птн 15:13:33 #501 №940088 
>>940085
В onCreate:
if (savedInstanceState == null) {
addFirstFragment();
}
А иначе ниче не делай.
Аноним 24/02/17 Птн 15:25:38 #502 №940102 
>>940007
Спасибо анон, пошёл пилить.
Аноним 24/02/17 Птн 16:56:45 #503 №940176 
Untitled.png
Каким образом можно проиграть анимацию до закрытия активити? То есть мне нужно при создании или уничтожении активити проигрывать анимации появления/пропадания вьюх в активити. С анимациями при создании активити разобрался, а вот при уничтожении чёт не могу. Пробовал пихать анимации в finish() и onDestroy(), но они само-собой убивают активити прямо во время отрисовки анимации. Мне же нужно что бы оно подождало завершения анимации. Возможно ли это вообще сделать без фрагментов?
Аноним 24/02/17 Птн 18:22:16 #504 №940224 
>>940176
Короче в пизду, ебанул колбеком.
Аноним 24/02/17 Птн 19:54:55 #505 №940267 
>>940176
> Мне же нужно что бы оно подождало завершения анимации
Берешь onBackKeyPressed, вызываешь в нем анимацию без super, в onAnimationEnd - finish. Но это похоже на лютую хуйню, что ты пытаешься сделать.
Аноним 24/02/17 Птн 20:03:15 #506 №940271 
>>940267
Вот типа такой хуйни пытаюсь сделать - https://developer.android.com/design/material/videos/ContactsAnim.mp4
Там прежде чем закрывается активити floatingActiobButton сворачивается в точку. Соответственно при создании активити она восстанавливается обратно. Т.е. у меня будет куча анимаций (на каждую вьюху) и мне надо было сделать функцию, которая бы их все вызывала при открытии и при закрытии активити.
Аноним 24/02/17 Птн 20:43:28 #507 №940307 
1234.png
Возможно ли это как-нибудь упростить?
Аноним 24/02/17 Птн 21:38:47 #508 №940352 
>>940307
Щас бы в subscriber'e observable создавать, вместо flatMap.
Аноним 24/02/17 Птн 21:45:17 #509 №940356 
>>940352
Так-так. Вот тут по подробнее. Мне вообще что нужно - чекнуть бд на предмет записи, если запись == null, то вызвать функцию. Если запись != null, то сделать реквест на сервер, получить ответ, сохранить его в бд и вызвать функцию. Получается, я могу этот запрос сделать из flatMap? Но как тогда быть с вызовом функции? Бросить эксепшон и вызвать её в onError? Так бы не хотелось делать.
Аноним 24/02/17 Птн 21:46:25 #510 №940357 
>>940356
А, точно, я же могу просто null вернуть и в subscribe если null то вызвать функцию.
Аноним 24/02/17 Птн 21:56:17 #511 №940363 
1234.png
Заебись.
Аноним 24/02/17 Птн 22:47:09 #512 №940390 
>>940363
Зачем тебе onLoggedIn() в onError, у тебя такого не было.
> Бросить эксепшон
Есть же Observable.error, этот метод лучше чем throw.
Аноним 24/02/17 Птн 23:01:20 #513 №940398 
>>940390
>Зачем тебе onLoggedIn() в onError, у тебя такого не было.
Короче там суть в том, что эта функция вызывается в любом случае. Она запускает новое активити, даже если произошла ошибка. Просто само активити будет работать либо в гостевом режиме (если в бд не было логина и пароля) либо не в гостевом (если логин и пароль в бд были и авторизация прошла). Вообще, наверно, лучше поменять их на две разных функции.

>Есть же Observable.error, этот метод лучше чем throw.
Запомню.
Аноним 25/02/17 Суб 10:03:44 #514 №940566 
>>940363
Пиздец макаронину ты написал
Аноним 25/02/17 Суб 10:08:37 #515 №940570 
voprosy.png
Недавно читал в перезвоним-треде вкатчика из ваших, ему выкатили список вопросов пикрелейтед на 30к рублей. У вас правда всё так печально?
Аноним 25/02/17 Суб 12:14:59 #516 №940618 
>>940570
Пиздец, на 30к просто сразу нахуй. Еще не удивлюсь, если позиция была на джуна.
Аноним 25/02/17 Суб 12:17:29 #517 №940621 
>>940570
Вопросы на 200 к.
Вообще охуели конечно.
Аноним 25/02/17 Суб 16:00:08 #518 №940782 
ПЕРЕКАТ https://2ch.hk/pr/res/940781.html

ПЕРЕКАТ https://2ch.hk/pr/res/940781.html

ПЕРЕКАТ https://2ch.hk/pr/res/940781.html
Аноним 28/02/17 Втр 08:32:05 #519 №942771 
>>938520
Дожили, открыть консольку и ввести одну команду умственно-остальным дегенератам уже сложно, им подавай жирную иде на скачивание чтобы разово собрать какую-то срань.
sageАноним 28/02/17 Втр 08:32:56 #520 №942772 
>>942771
*отсталым, конечно же.
 Аноним 02/03/17 Чтв 21:52:46 #521 №944887 
>>919925
Лучше сделать REST-сервис, а не использовать FTP.
 Аноним 02/03/17 Чтв 22:18:21 #522 №944915 
>>922508
Мы используем AdapterDelegates
Аноним 04/03/17 Суб 19:01:30 #523 №946348 
Аноны, есть один сервис, у сервиса есть API.
Сейчас вот задумали писать под него в том числе Android-клиент.
Подскажите, какой библиотекой проще всего организовать отправку и получение данных по POST в Android? А то я вот сейчас читаю и понимаю, что вариантов дохуя, при этом половина уже deprecated
Что нынче в тренде по этой теме?
Аноним 06/03/17 Пнд 10:33:30 #524 №947475 
>>946348
Retrofit/Guava (последняя - многофункциональная йоба, если нужно только запросы делать, лучше - Retrofit + OkHttp)
Аноним 07/03/17 Втр 19:44:31 #525 №948669 
А кто какие исключения отлавливает, делая http запрос ? Из очевидного только UnknownHostException всеми нами любымый приходит :)
Аноним 26/03/17 Вск 17:49:39 #526 №961386 
Котаны, поясните за Xamarin плиз.
Я тут просто попробовал пару приложений накатать совсем простых. И вроде все удобно и интуитивно понятно после AndroidStudio.
Поясните, кто любит, кто ненавидит и за что, почему...
Не такой как все 28/03/17 Втр 02:41:25 #527 №962204 
Антоны, шо за хуйня? Мне кажется, или блять все дружно решили вкатиться в андроид весной? я уже 1.5 года ебусь с джавой и андроидом, а тут набежало блять стадо с вопросом "как установить андроид студио", заебала уже эта ебаная ревность, аноны. Я из Харькова, аноны. Так вот, знаете, у нас общество делится на две категории, угадайте блять какие - фотографы и айти. Все вагоны в метро облеплены рекламой "обучим макакингу за нехуй делать и за ваши деньги", айти-школ больше чем детских садиков. На днях мне блять звонили с ШАГА УГОВАРИВАЛИ прийти к ним! переодически наталкиваюсь на комменты в стиле "вакансий джунов давно нет, идите нахуй". Знаете, все это как-то демотивирует и разрушает мои розовые мечты о светлом будущем, хоть я и такой же как все остальные, когда въебала крыза пошел в айти (но пока не дошел), но страшно бесит эта массовость и как-то хочется идентифицировать себя как уникальную личность, но не поулчается. Все. Очень. Плохо.
Аноним 06/04/17 Чтв 20:23:24 #528 №968326 
>>962204
Та же хуйня, решил вкатиться в ведро потому что думал, что веб и энтерпрайз это мерзко, а на всё остальное вакансий всё равно нету.
Только я ещё и живу в ебенях, и в отличии от тебя мне надо переехать и снимать хату и ещё мне 27.
Впрочем, если ничего не получится, то думаю выпилиться, так что похуй, уже можно сказать смирился.
Аноним 08/04/17 Суб 17:36:39 #529 №969376 
>>940307
Удали нахуй. Реально. Это убийство моих глаз должно умереть. Разбей логику по clean mvp
comments powered by Disqus

Отзывы и предложения