Вы видите копию треда, сохраненную 22 ноября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Мир твоему смартфону, анон. Прежде чем задавать свой вопрос, прочитай:
FAQ
> Хочу вкатиться в разработку под Android!
Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> IDE и инструменты?
Android Studio — основной инструмент разработчика. Кроме неё потребуется Android SDK (устанавливается вместе со студией).
> Мануалы?
- Официальная документация: 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.
> Есть что-то кроме нативных приложений?
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия.
- 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/846976.html (М)
как презентеру
Chrome? Он опенсорс?
Если это правда, то получается что гугл сам себе ссыт в ебло, запрещая это в документации.
Одни и те же говноеды делали, что и котлин
>Иди-ка ты нахуй, с такими советами
Аргументируй или умолкни.
В iOS/WP нет никаких разрушений при поворотах.
В Android это была ошибка проектирования, которая уже >6 лет будоражит неокрепшие умы
и является основным источником костылей.
И как же они так по хитрому мутят? Кляти индусы говна в андроид залили, когда это уже задеприкейтят?
>Одни и те же говноеды делали, что и котлин
Сильное утверждение, проверять мы его конечно же не будем.
Там ващет предупреждение для ебантяев, мол сильная ссылка, используйте с умом.
Я даже не нашел, сколько времени хранится этот "кэш". Получается, самый оптимальный вариант - нихуя не кэшировать, и хранить презентер в ретейн фрагменте со слабой ссылкой на вью.
Я делаю как в mosby, все экраны - ретеин фрагменты, и в них соответственно находится презентер, минусов пока не вижу
Retainfragment - это вообщем очевтдно.
Единственная полезная вещь, которая есть в mosby - прослойка viewstate.
Только если у тебя дохуя бабла.
Лично мне нинужна Firebase TestLab.
Бизнес-логика тестируется на JVM; инстурментационные юнит-тесты, интеграционные и системные на эмуляторе на CI сервере.
На джяве писать - как говна поесть.
Фрилансер же, нет никакого тестировщика.
Даже если бы был, написание тестов - это всё равно задача разработчика.
Хватит ли ноута
https://www.ulmart.ru/goods/3805012 ? Или онли стационарник с лучшими характеристиками? Бюджет 70к.
https://www.youtube.com/watch?v=AlxMGxs2QnM
Двачую.
У меня щас в onDraw рисуется график из 1000 точек через path + drawCircle. Выделений памяти нет, точки из ArrayList беру. При скролле недостаточно плавно скроллится.
Смотри что жрет время. Вряд ли замена на массив тебе поможет, хз, вон даже блюр динамический умудряются делать что бы не лагало, код в студию.
- Результаты профайлера в студию (или хотя бы код)
- Нафиг ты рисуешь в 1000 точек? Погуги про Levels Of Detail и подумай как это применить (вряд ли пользователь может воспринять твои 1000 точек)
Хуячить всю логику в отдельный интерактор?
Напиши Adapter
Передавать презентеру Calendar.
Прореживание и так есть.
>>857253
Вот код отрисовки точек:
https://gist.github.com/anonymous/1db126a2d96ad1e860095ab5e01d6561
Здесь что-то можно оптимизировать?
>>857325
Так и есть.
Расставляй приоритеты, накладные расходы на эту арифметику ничтожны, в масштабе 1000 точек это всего лишь пара лишних микросекунд.
Можно конечно два деления из каждого витка убрать, но это тебе вряд ли тебе поможет. Тут именно что обращений к канвасу много, может там и есть какие-то батчи.
> может там и есть какие-то батчи
https://developer.android.com/reference/android/graphics/Path.html
Можно делать один drawPath, но его тоже долго собирать.
Как запилить ебаные локальные юнит тесты?
Сделал все по гайду, от гугла:
1. положил класс с тестами в src/test/java
2. прописал зависимости testCompile.
Нихуя не работает, причем никакие зависимости со скоупом testCompile не подтягиваются вообще.
Либо мб есть способ использовать файл из файловой системы в androidTest?
То еще хуже, ведь они будут также 1000 раз вызывать onDraw, так еще и будут 1000 раз вызывать onMeasure, onLayout.
Ну тогда только SurfaceView/TextureView.
Есть класс com.example.TestClass лежит в src/test/java/. В нём есть метод аннотированный @Test, при запуске этого теста через Ctrl+Shift+10 он запускается на виртуальном устройстве, при попытке запуска через JUnit-овский run config он мне сообщает, что no test found. И плюс к этому всему зависимости с testCompile скоупом не видны в src/test/java
Ну, у меня всё работает, говорю же.
Создай новый проект, там будет пример тестов в test и androidTest, проверь, запускаются ли они. Потом ищи, что ты сломал в своём проекте.
P2P*
Потому что в rx какого то хуя на самом деле понятно какого Signle, Completable и Observable несовместимы. А дрочить toSingle() toObservable() неудобно.
>RxSingle
Я юзал Single/Completable везде где было явно 1/0 onNext(), что бы убрать явный unsibscribe().
Потом меня тоже заебали toSingle/toComlpletable/toObservable (и то что они по умолчанию "холодные")
и я вообще ущел на CompletableFuture
Нужно писать самому протокол и реализацию.
вот дали задание написать фоторедактор с сервером приложения
короче юзер авторизируется в сети, выбирает пикчу из галереи и редактирует ее(яркость,контраст,фильтры етс)
после чего у него есть возможность созранить эту картинку на сервере приложения, что бы не засорять память телефона
так же он может с этого сервера загрузить фоточки, которые редактировал
в качестве сервера приложение решил юзать Firebase, почитал про него, вроде подходит под мою задачу
пара вопросов:
1) как реализовать загрузку фоток из галереи?
2) какими фреймворками пользоваться для редактирования фотки?
3) есть ли какой то получше вариант, чем Firebase, в данной задаче?
>Большинство приложений написано на Java
Вот те раз. Она же будет течь и тут же втягивать в себя вытекшую память сборщиком мусора. Это лишние циклы и потребление.
>2016
>называть не закрытые ресурсы утечками
Node.js получше будет.
Что не так?
пикчу потерял
30к, дс-2
про бел
>вот дали задание написать фоторедактор с сервером приложения
>1) как реализовать загрузку фоток из галереи?
>2) какими фреймворками пользоваться для редактирования фотки?
Нахуй ты сюда пришел, макака?
Хуяч на glsurface нативно
>фундаментального
>по котлину
>без джавы
>на русском
Я даже не знаю можно ли тебе помочь. Можешь посмотреть презенташки.
https://kotlinlang.org/docs/reference/ - online доки (и список книг)
https://kotlinlang.org/docs/kotlin-docs.pdf - offline доки (сойдет за книгу)
https://www.manning.com/books/kotlin-in-action - книга от разработчиков языка (как обладатель, могу сказать что это пересказ доков)
https://blog.jetbrains.com/kotlin/2016/03/kotlin-educational-plugin/
Поставь этот плагин в IDEA (AndroidStudio) - если сделаешь все задачки, считай что язык освоил
Когда станет лень читать глянь видосики из этого плейлиста (начинай со старых)
https://www.youtube.com/playlist?list=PLVe-2wcL84b8pj7VOoa-6L9Q0sDjibdoF
+
https://www.youtube.com/watch?v=9x6utkLDBs8
Дорого ли будет, если веб-приложение почти полностью готово?
Ты, вот ты, суперразработчик, за сколько бы взялся за такое?
Перепост из прикреплённого, вдруг суперразработчики его скрыли
А серьезно? Я в крестах себя чувствую гораздо комфортнее, чем в шарпе, джава явно не лучше зайдет.
Ты в крестах будешь голый, без кнопочек и формочек. Можешь конечно попробовать Qt. Кресты для всякой низкоуровневой поебени со звуком и прочими акселерометрами.
~500$-1f$ - пальцем в небо без ТЗ
P.S. Я бы и не взялся за такое, ибо это просто омерзительно.
P.P.S. Да, нюфаг-тред всегда скрываю - это же как и /b/ по сути помойка.
сеньер-разработчик
Спасибо за ответ, бро.
500-1к именно за кроссплатформенный клиент?
Омерзительная именно кроссплатформенность?
Ну а как быть, если на iOS самая платёжеспособная часть аудитории, а на Android - бОльшая часть аудитории, причём не менее платёжеспособная? И рыбку съесть, и на ёлку влезть.
Кроссплатформа может получится кривой. Да и тот ценник что он тебе назвал какая-то шляпа. Нельзя сказать стоимость, не зная че ты там хочешь.
Ну то да, конечно.
Там покупки должны быть встроены, а так вроде ничего больше, кроме синхронизации.
А вообще как тут обстоят дела, с чего это начинается? Мне нужно все исходники зарядить разрабу, это ж не один месяц трудов!
>500-1к именно за кроссплатформенный клиент?
За обертки под android/ios/windows + пуши (не понял что за синхронизация).
Что бы меньше возиться с android фрагментацией, можно взять кросплатформенную (ios/android) библиотеку
для webview на хромиуме.
Для пушей тоже есть единый GCM (под android/ios).
На WP с оберткой и пушами придется поебаться отдельно тк он нахрен никому не нужен.
>Омерзительная именно кроссплатформенность?
Нет, а реализация через веб клиент.
>И рыбку съесть, и на ёлку влезть.
На Xamarin.Forms / RoboVM+Kotlin я бы еще подумал, но там будет дороже в разы.
Синхронизация с веб-приложением. Основным всё-таки будет просто сайт, доступный из браузера. Или приложение на мобильнике, по идее, и является копией веб-приложения, о чём я несу... То есть все изменения в мобильном приложении и так должны отображаться в основном.
Я просто нуб, даже не подумал о таком, ну тупой.. Это же как другой браузер открыть, залогиниться, внести изменения и увидеть их в основном браузере на сайте.
>Нет, а реализация через веб клиент.
Ну просто это основное, пока никуда не деться от этого.
>На Xamarin.Forms / RoboVM+Kotlin я бы еще подумал, но там будет дороже в разы
Спасибо, записал это.
Нахуй ты тогда в программирование попёрся? Улицы грязные, щебень не разгружен.
Будто он в нужен в реальной ит-индустрии, тем более порядочным андроид-господинам.
Будто безмозглые макаки, неспособные ёбаный метод Гаусса понять, нужны.
https://github.com/konstantinx/simplemailclient
Можно ли такой говнокод кидать в резюме на джуна java или лучше не стоит?
Оформи код хотя бы согласно java code conventions, попытайся не пихать всё в кучу, а разбить на отдельные классы, каждый из которых выполняет отдельную задачу.
rxjava
Поясни: чем плох первый пик? Одни орут, что без геттеров и сеттеров - никуда, другие - что они не нужны, ибо раздувают код. Заодно приглашаются сениоры притащить свой вариант их использования.
>>860300
Я посмотрел только общую структуру и пару классов.
1) Java code conventions
2) Все константные значения должны быть обозначены. Если ты хочешь идти Android-джуном - за отображение строк не из XML, твоё резюме мгновенно пошлют нахуй.
3) Рефакторинг кода, пик 2 намекает
4) Читай про архитектуру проектов. А лучше, посмотри пример чужих проектов. У тебя нет даже чёткого логического разбиения на модули.
5) Твой анонимный асинктаск содержит в себе неявную ссылку на объект - хранителя. Это 100% утечка. За такое могут тоже обоссать.
6) Я не вникал в логику, но если у тебя там хуйня общается по почтовому протоколу - нужно учитывать возможные ошибки протокола, и обрабатывать их. Если идёшь в ведроид - ситуации отсутствия сети, или внезапной её потери тоже нужно обрабатывать.
Это если не говорить о тестируемости, расширяемости, внедрении зависимостей...
Код слабый, на яваджуна врядли потянет, на ведроидера - точно нет. Сама идея неплохая, по сравнению со змейками и отображателями погоды.
Так что редактируй. Длинная простыня - но похуй, тред полумёртвый
Тут в треде орудует несколько Rx-дебилов, которые ненавидят все стандартные решения.
Асинктаск плох тем, что для его корректной работы нужно писать много обслуживающего кода.
Для Rx нужно всё тоже самое, ибо слабые ссылочки никто не отменял. Но там хотябы можно нормально обрабатывать ошибки.
Мог бы и дата классом сделать.
сиглтон кэш для запросов и синглтон кэш для ViewState
юзай linkedhashmap, индекс - порядок отрисовки, ключ - координаты, данные - rgb
У него с с количеством проблемы.
В школу уже собрался, синьор?
Есть, значит, инфа в JSON, которую принимает приложение. Примерно вот такого вида:
[code]
{
"title": "Test to file2",
"description": "Test description1245",
"fileGroup": "file2",
"icon": "check_i"
}
[/code]
В поле icon передаётся название drawable-ресурса, который должен выводиться при выводе этого JSON-объекта на экран. Если я напишу что-то вроде
[code]
JSONObject jsonData = getJSONObject(R.raw.json);
String icon = jsonData.getString("icon");
[/code]
то при вызове R.drawable.icon компилятор меня закономерно пошлёт нахуй, сами понимаете. Что делать, анон?
Может, сразу перечислять где-нибудь ссылки на ресурсы? Что-то вроде
Array(
"icon" => R.drawable.icon;
"picture" => R.drawable.picture;
...
);
А потом просто брать элемент из массива. Но это же такой костыль, просто пиздец.
Может, для методов с заранее неизвестными аргументами это и великое благо, но если метод вообще без параметров и обрабатывает, например, заранее заданную строку - это какое-то излишнее загаживание кода.
Пример тому - обработка строки через парсер json-simple.
Типа
String response = "{"p_item": [{"p_id": 132},]}";
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject)parser.parse(response.toString());
Это обязательно нужно обернуть в блок try, отловить исключение, или прописать в сигнатуре через throws (и тогда отлавливать нужно будет в вызывающем коде). Что тут отлавливать? И самое главное - какие действия я должен прописывать при отлове на случай исключения?
Почему нельзя просто заранее протестировать эту строку и забить хуй, не засирая код говном без задач?
И вообще, является ли хорошей идеей взять и все эти исключения, для которых не нужна особая обработка - обрабатывать только на самом верхнем уровне вызывающего кода?
Тем более, что обработка для всех отдельно была бы одинаковой, уровня вывода инфы.
Нет. Исключения не должны пролетать слишком высоко. В идеале должны ловиться уже на уровне, с которого была вызвана упавшая функция.
Твой JSON парсер не может (да и не обязан) знать, является ли корректным форматом json входная строка. Если в процессе анализа он видит, что не является - анализ дальше продолжаться не может, и ему надо тебя как-то уведомить. Что тебя смущает?
Если у тебя ошибка в организации кода (выход за пределы массива и им подобные) - бросается runtimeexception, который не ловят. В случае с парсером ты должен сам обрабатывать некорректные данные
Ебани gson, что ты хуйней занимаешься?
Звук с микрофона, записанный с помощью MediaRecorder (ставил все возможные энкоды и аудиоформаты) не воспроизводится десктопным ява-приложением. На выходе получаю файл с расширением .мп3, но, как я понимаю, это не тру мп3 (в настоящем мп3 еще есть хедеры), итого мой ява десктоп клиент без проблем воспроизводит песню, скачанную с интернета в мп3, но не может в проигрывание того, что я записал с трубки. Как это можно было бы организовать? (Огг прошу не предлагать, ебал я ндк за свою зарплату)
Правильно. Смотри Sunshine
Запиши wav при помощи AudioRecord.
Мы продаем bluetooth le считыватели rfid меток для складов (узкая сфера) и пару раз за год попадаются клиенты с китайскими смартфонами (THL, Highscreen), которые после своих же обновлений не находят bluetooth low energy девайсы.
Причем блджад это массовая проблема с конкретными моделями смартфонов.
Как грамотно и технично послать таких людей нахуй?
>Котаны, как в крупных компаниях борются с проблемами, когда ПО не работает из-за кривой прошивки смартфона?
К сожалению Ваш смартфон не входит в список официально поддерживаемых нашим продуктом. Пожалуйста пососите писос.
Ага. Вот только по всем параметрам смартфон соотвествует требованиям.
Здесь нужно что-то другое.
>Вот только по всем параметрам смартфон соотвествует требованиям
Не требования пишите, а список трубок по моделям. Если трубы нет в списке, пусть пользуются проводным устройством (если оно у вас есть).
>список трубок по моделям
Можно конечно, но тогда перестанут покупать - "ведь моего LeTV там нет".
Connection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
Джава обрезает урл при реквесте, если в нем есть пробел!
Если уж добавили обработку, сложно было сделать автозамену пробелов на %20?
Сука крыса блять, ладно бы исключение возвращала, что такого адреса нет или урл неправильный, но нет - падла тихушничает и творит свои черные дела на свое усмотрение.
{"4143634":"hui"}
Если цифры каждый раз отличаются? И при этом это не Array?
У JSONObject можно получить список ключей.
если всегда цифры и тебя этот ключ интересует, грязно можно пытаться привести к инту, если эксепшн, следющий ключ.
Почему джава виновата в том, что ты по своей тупости или невнимательности не энкодишь свой урл? И где там ты обработку видишь?
Аноны, вообщем такая проблема:
Есть два фрагмента и между ними анимация с shared elements. Так вот, первый фрагмент это список, а второй соответственно детальное отображение списка. При запуске приложения данные для списка берутся из бд и только потом берутся из сети. Вся эта логика у меня в презентере, от которого я детачу вью в onDestroyView(). И проблема в том, что shared elements работают только с методом replace(), а не с методом add() у FragmentTransaction. А метод replace дестроит мой первый фрагмент, и соответственно данные из сети он не получит, что делать?
Потому что, не нужно изобретать очередной велосипед.
Повеситься.
Данные из сети ты должен получать не в презентере, презентер должен лишь вызвать соответствующий метод репозитория.
Приложение для Android 4.0.4 и выше.
ой бля, я так и делаю, и зачем ты это написал? Как это помогает решить мою проблему?
>>861506
ретеин фрагменты
http://hannesdorfmann.com/mosby/
Делаю как в мосби, но саму либу не юзаю, считаю её избыточной, т.к. проще и понятнее сделать самому.
> А метод replace дестроит мой первый фрагмент
Он его не дестроит если ты добавляешь его в бэкстек.
> я так и делаю, и зачем ты это написал? Как это помогает решить мою проблему?
Если ты так и делаешь, то в чем твоя проблема? Обновление данных происходит в репозитории, вне зависимости от того, какой у тебя там фрагмент показан.
У меня есть интерактор, в котором методы для работы с бд/сетью, все они возвращают observable с разными данными, городить какой нибудь синглтон класс не вариант, и вопрос скорее не про архитектуру, а дестрой фрагмента и анимацию
> ретеин фрагменты
Не распишешь подробнее, пожалуйста?
Т.е., твой View - это фрагмент, у которого вызван setRetainInstance(true);. Как ты тогда создаешь презентер? Проверяешь в onViewCreated(), создан ли уже презентер или он равен null, так? А когда тогда нужно вызывать attachView() и detachView() у презентера?
ньюфаг, пытающийся войти в mvp
я скинул сайт, прочитай, там все написано про это с диаграммами
Тебе какое дело до вью, если ты в презентере? Ты отписываться в onDestroy должен.
Смотри, я в презенере получаю данные, в это время я сделал replace (вызвалось onDestroyView) данные пришли, я их хочу отправить во фрагмент, но там ничего нет, все скрашится просто, даже течь не будет
> все скрашится просто
И че, у тебя презентер не в состоянии проверить, приаттачена к нему вьюха или нет? В аттачвью потом покажешь свои данные.
Ну качай тогда заново, хули.
>>861643
Вариант отписываться И отключать вьюху, имхо, самый безпроблемный. Если у тебя там в презентер прилетит много разных, а еще часть уже висит в адаптерах - заебешься это все разруливать. У мосби по это организован отдельный компонент viewstate
Сделай класс Viewstate который реализует тот же интерфейс что и View и зеркально отображает всю инфу на View, если оно не null, а иначе сохраняет и синхронизирует состояние View с тем, что сохранило при помощи метода sync(), который ты дёрнешь когда заново после смены ориентации создастся вьюха.
У меня есть viewstate, но он лежит во вью
>иначе сохраняет и синхронизирует состояние View
Ты предлагаешь передавать viewstate в presenter?
Viewstate со стороны презентера тоже что и View.
Так что без передачи его в презентер не обойдется.
да, похоже это самый лучший вариант, спасибо
Viewstate должен в любом случае сохранять состояние гуя. Не толтко, когда гуй уже null.
Альтернатива - это гугловский подход: перевернули смартфон - заново сделали выборку из БД / отправили запрос. Верно?
Неверно. Гугловские приложения не теряют данные и не вызывают повторно уже завершенные запросы.
Охуенно. А теперь у нас будет дохуя вьюх, и у каждой своя инфа и тип отображения.
юзаешьдженерик и все, иногда придется создавать новый viewstate, да. Но лучше больше классов, и понятная реализация, чем какая то хуйня
Как они это делают? Где хранят данные, откуда подтягивают при пересоздании UI?
>2016
>ебаться с фреймворком, основанным на костылях
>не мочь в обработку звонков и смс
>ебаться с версткой под зоопарк устройств
>ссать петухов с китайскими говнофонами
>иметь потлок зп 90к в рашке
ведропетухи, вам не стыдно сидеть на этой борде?
Конечно стыдно, но куда деваться.
Лучше ебаться с легаси 20 летней давности на бэкенде?
Попизди мне тут про потолок в 90к.
https://hh.ru/search/vacancy?text=программист+android&area=1
ща буду обоссывать
1) выпили нахуй .idea и .iml - у тебя есть файлик .gitignore - добавь это туда и выполни команду git rm --cached name_of_file
(если не можешь в консольку - иди нахуй или учись)
2) зачем https://github.com/konstantinx/simplemailclient/tree/master/commons-lang3-3.4-javadoc https://github.com/konstantinx/simplemailclient/tree/master/app/libs https://github.com/konstantinx/simplemailclient/tree/master/commons-lang3-3.4 вот это говно? гугли подключение зависимостей через gradle
3) Хули тестов нет? Запили хотя бы по тесту на класс чтобы показать, что ты можешь в тесты. Сделай хотя бы самые тупые, но в идеале гугли JUnit, Mockito, Dagger 2
4) Форматирование кода - не умеешь? запомни сочетание клавиш для автоформата и нажимай их сука всегда
5) Про код в целом - ГОВНО (я даже не стал пытаться вникнуть). Гугли принципы солид, а особенно это
>Принцип единственной ответственности гласит — «На каждый объект должна быть возложена одна единственная обязанность». Т.е. другими словами — конкретный класс должен решать конкретную задачу — ни больше, ни меньше.
То есть разнеси свою ебучую лапшу на отдельные классы + гугли архитектуру мобильных приложений.
Про AsynkTask тебе писали выше.
В общем я надеюсь, что ты не расстроишься (хотя мне похуй), а сделаешь правильные выводы и исправишь свое говно и тогда, быть может сможешь найти работу.
>3) Хули тестов нет? Запили хотя бы по тесту на класс чтобы показать, что ты можешь в тесты. Сделай хотя бы самые тупые, но в идеале гугли JUnit, Mockito, Dagger 2
Вот эта хуйня там будет чисто для галочки. Даже на продакшене в конторах порой нет тестов, ибо ненужны.
Имхо, тестить стоит только всякую сложную логику.
>>862147
Говнище. Был один проект на нем, так до сих пор воротит. Ебаная прослойка, лишь добавляющая свои баги.
Сейчас конечно прибегут подсоски мелкосовта и будут утверждать, что я всё вру.
Спасибо.
На работе коллега заебал упоминаниями, как было бы неплохо, по его мнению, переписать андроид-приложение на C# c ксамарином. Он сам C#-кодер, я джавист, писал это приложение года полтора, а он несколько несколько месяцев назад пришел, щегол. И, кажется, начальнику он тоже ездил по ушам.
Может подскажешь разумные аргументы, чтобы отбить у него эту идею? У меня уже горит от него.
Dagger 2, retrofit, rxjava все стандартно проекты сложные и разные
Пусть покажет хоть одно приложение в google play, имеющее больше 10000 загрузок и рейтинг выше 4,0, которое написано на ксамарине. Нет таких
То, что надо.
Нет, просто горит от того, что он хочет затянуть в анальное рабство всю команду. Таки я сам увольняюсь скоро
1) Ты чего-то не договариваешь.
Никто не будет тратить ресурсы на переписывание с одного языка на другой.
Небось ты там макарон наварил, что проще заново переписать чем поддерживать
2) Предложи ему переписать на Kotlin, это тот же C# только для JVM.
Можно будет постепенно изменять уже существующий проект, дописывая новый функциона на Kotlin, а старый оставляя на Java.
Говорю как человек много пишущий на Xamarin/C# и Kotlin/Java.
Нет, в коде все норм. Более того, он этот код никогда и не видел, и пока что приложение поддерживаю я один. Честно, не знаю, зачем он это предлагает. Он даже как-то спрашивал что-то в стиле "ой, а почему ты сервер на джаве написал, а не на шарпе, ведь есть же asp.net" (я параллельно бэкенд веду)
Каждый кулик своё болото хвалит
А если он тебе коллега, а не начальник - не похуй ли? Поясни ему, что СДК тут родное, и ксамарин ебучий будет тормозить?
оригинал в mobi
кросспост в pr
Потому что он не анальный раб мелкософта?
Потому что с ней я имею выбор опенсурс библиотек, фреймворков и серверных контейнеров, а не пародию на опенсурс как в случае шарпа. И я не хочу быть в анальном рабстве М$, я могу поставить тестовый сервак на машину слюбой ОС.
Два чая. Шарпобляди не нужны.
Бамп вопросу!
Кнопка работает так: юзер ее зажимает -> начинает записываться звуковое сообщение; если он ее отпустил в границах кнопки - оно отправляется, если же он убрал палец с кнопки - запись останавливается и никуда не отправляется, но у меня не получается различить эти два экшона.
Пытался онтачлистнером смотреть какие есть экшоны у кнопки: при нажатии - даун, при движении по ней - мув, при отжимании - ап. Как мне в конце при отжимании(ап) проверить, находится ли палец юзера в границах кнопки?
Подскажите, есть ли такой сервис или софт типа Битрикса, который позволит клепать простые приложения с выводом текста с наших сайтов?
Спасибо
> приложений на основе веб контента
> Это когда есть сайт, и текст с него показывается в приложении
Браузер, который открывает только один конкретный сайт?
Да, стандартным. А также реальными устройствами.
Нихера там нет. NDK не для этого. Но ты конечно можешь или вызовы яве возвращать, или сам пердолится с кучей библиотек. Благо они существуют.
Мне для опенгл, я бы и с Qt въехал, но он монструозный пиздец. А доступ к ассетам через яву идет или через наливные вызовы?
Действия приводящие к запросам прокидывай Джаве, пусть ебется с ними, а потом закидывает тебе результаты.
Ни с кого не берем, у нас с десять сайтов, надо вывести их в приложениях, чтобы занять имена. Есть какой-то шаблон или конструктор для этого? Не ругайтесь анончики
Гугли phonegap, cordova.
Точно знаю что есть такие сервисы (проводили в свое время исследование).
Хотя решили все таки сделать такую парашу сами, через webview.
В общем здесь тебе не помогут.
>писал это приложение года полтора
Ты писал одно ведроид-приложение полтора года? Это какой-то очень крупный мессенджер уровня телеграма? Или ты сам пилил весь дизайн, тз и прочее?
У нас что-то похожее на стартап, четкого видения не было, все наращивалось постепенно и функционал часто переделывался. Да, приложение не простое, функционала много, и да, дизайн если это можно назвать дизайном, лол, я в этом слаб тоже я пилил.
Просто в один момент понял, что надо что-то менять. Перестал заходить на борды и вместо этого стал проводить ночи за кодингом (жил в студенческой общаге, спал во время пар). Потом сконнектился с одним стартапером в вакууме, начал пилить стартап с ним, я кодил, он дизайнил, потом пошел на собеседование, показал наш проект, наговорил много терминов - взяли на испытательный, хотя тоже требовали опыт. В общем, реальный прект за плечами решает.
Пиздуешь на 4PDA в раздел "ищу работу", публикуешь туда анкету с почтой.
Получаешь по паре писем за день от всяких хуев.
20% будут пользователи смартфонов которые хотят чтобы ты сделал за 500 р уникальную вещь для его смартфона (сразу нахуй, 99% пилить с нуля)
30% будут дельные заказы от мелких фирм и частников
50% будет левак вида "запилите соцсеть за 30 тр"
Делаешь - вот тебе и портфолио.
Сайт для пир-ту-пир конференций на webrtc. Тогда это была еще молодая технология, инфы на русском почти не было. Разумеется, проект не взлетел, но у меня был рабочий проект, который можно было показать на ноуте вживую.
Спасибо
Вот даже интересно, какие тогда приложения, что их "пара"?
Сложная логика в ведроиде требуется только в отдельных случаях, в основном массе приложения - либо классический фронтенд "отправь -> прими -> покажи няшку", либо 2D-говноигры, читалки сообщений, книг и прочей хуйни.
Вот недавно поц вкидывал в слак
https://github.com/AlexParfenjuk/MaterialMovies
ему сказали, что уже не джун.
Года 2-3, 60к, 23 лвл, мухосрань 200к, через пару недель съебываю в галеру на фронтенд
https://2ch.hk/gd/ (М) - как делать игры
https://2ch.hk/biz/ (М) - обсуждать продвижение
Прошу не возвращаться сюда без технических вопросов.
Захотел расчехлить армв7 платку (из под читалки), накатив на нее линупс. Но столкнулся с тем, что все обещают одну сплошную ЭМУЛЯЦИЮ.
При обновлении прошивки оно смотрит на сд-карточку и грузит обновления с нее. По идее очень похоже на то, как биос пеки может загрузиться с другого носителя. Так что же мешает так же загрузить и установить какие-либо прыщи?
мне скорее интересен вопрос бута андроида чем программы
Для даунов.
Иди нахуй уже, а?
В чем твоя проблема? Ты за 2 дня даже гуглить не пытался? ADB апачевская лицензия, драйвер хуй знает, ищи сам.
спасибо анон. учёл . но всё же после целого вечера танцев у меня всё совсем скрашилось .в итоге я отказываюсь от этого говна и в резюме напишу ,что просто делал ,не давая ссылку на гитхаб
2 глобальные переменных, одна из которых подгружается:
TutuApplication.getAppInstance().getStationToFullList();
TutuApplication.getAppInstance().getStationFromFullList();
размером по 2 мегабайта данных.
>почему может тормозить активность при первом запуске
>размером по 2 мегабайта данных.
Ну епта.
Сомневаюсь, что это причина проблемы. Тем более, раз у него последующие запуски не приводят к долгой загрузке.
Хренли ты ленивый такой.
Шипилёв бы тебя тапком забил за гадание "где тормозит".
Быстро взял и измерил все профайлером:
1) В начале измерений вызываешь
https://d.android.com/reference/android/os/Debug.html#startMethodTracing(java.lang.String)
2) В конце
https://d.android.com/reference/android/os/Debug.html#stopMethodTracing()
RxJava облегчит твои страдания. Суёшь в обсёрвабл всякие ситуации типа проверки токена, наличия интернета, сам реквест и т.д., на это всё пили экзепшены. Потом всё это обрабатывай в презентере.
Отдельное окошко для логина - только через onActivityResult
У меня и так все на RxJava, не вижу как мне она поможет с навигацией. У меня все приложение на фрагментах в одном активити. onActivityResult не вариант
Статическая переменная грузится один раз.
>Отдельное окошко для логина - только через onActivityResult
И пермишены. И вк. И фейсбук. И гугл. И результаты интентов.
И небо. И Аллах.
Бля, а какие еще варианты ты хочешь услышать, если тебе нужно получать резалт из отдельных активитей? Можешь эвентбасовый велосипед попробовать запилить. Ну или в синглтончик инфу ложить
Решил для этого использовать джаву, с чего посоветуете начать изучение? Есть какие-то интересные материалы?
До этого учил С++ и похапе.
Да и можете пояснить за игори на ведро? (нужно ли там юнити, как именно будет организовываться графическая часть?)
> Хочу писать игры!
LibGDX или Unity. Спрашивать в /gd/
Да, понимаю, лаконичность, все дела, но это немного мало, думал, сол тут есть товарищи с опытом написания игорей под ведро, и немного растолкуют
https://2ch.hk/gd/res/250576.html (М)
Если будешь там задавать адекватные вопросы, то может что и отвечу.
За хардкод логов ненадо. А вот за хардкод той хуйни, которая выводится во view...
Допустим, класс А имеет внутри себя приватный класс Б.
Метод класса А создает и возвращает экземпляр класса Б.
А теперь вопрос.
Какой тип указывать переменной jopa, которой присваивается результат этого метода? Если вызов происходит в третьем классе, а класс А - импортирован. Нужно отдельно импортировать класс Б? Он же приватный. Или просто лепить Object?
Вообще, имеет ли смысл в таком случае вкладывать один класс в другой? Ведь он будет иметь доступ к объемлющей области видимости.
Или же лучше пилить его в отдельном файлике?
Класс B имеет только несколько полей, никаких методов, никакого наследования.
Самая дешевая - инди лицензия. Стоит 136$ в год
Пройди уроки на javarush
Говна себе на литсо вылепи.
Была мысль создавать на каждый такой клик AsyncTask, но идея не очень хорошая, т.к. клики могут совершаться очень быстро -> много работы для сборщика мусора.
Думаю запускать поток, а затем передавать в него что нужно записать в бд. Какие здесь подводные камни? Есть ли какой-нибудь стандартный класс для этого?
>ListView
Выкинь нахуй, юзай ресайклервью.
На каждый вьюхолдер должен быть презентер, который подрубается при аттаче/детаче вьюхолдера.
Презентер лезет в базу асинхронно.
Чтобы не засрать систему кучей потоков - юзай пулл потоков ограниченного размера
Вполне себе клево получится если сделать таску и закинуть её в пул.
http://howtodoinjava.com/core-java/multi-threading/java-fixed-size-thread-pool-executor-example/
Писать в базу на андроиде параллельно в паре потоков имеет смысл вообще иил нет?
Oh you.
>>863526
Нет не очень, у SQLite может быть только один writer одновременно, но множество reader'ов.
> Нет не очень, у SQLite может быть только один writer одновременно, но множество reader'ов.
Thread + BlockingQueue. Можно даже в синхронной коллекции данные хранить чтобы разом обновлять.
А его разве нельзя обновить через android manager ручками? Или я что-то путаю.
>Thread + BlockingQueue
Шо? Ты имеешь в виду Executors.singleThreadExecutor с правильными настройками?
Так тоже можно, просто ThreadPoolExecutor из одного потока немного оверкилл как по мне.
Впрочем, обладая синхронной коллекцией, можно и без очереди обойтись, используя wait/notify.
Вообще-то нет. Сам подумай, тебе надо постоянно значения в бд писать. Для снижения нагрузки логичнее накапливать данные и сразу группой записывать, причём накопление производится во время активной работы с бд. Так то wait/notify сильно помогает.
У тебя есть какие-нибудь кусочки кода демонстрирующий подобную роботу с бд?
Записываешь состояние чекбокса в Map, вызываешь у него notifyAll.
В потоке в цикле: while size == 0 — wait, если нет — копируешь Map, вне сихронизации пишешь запись этой копии.
Ну че ты так рвешься. Я увидел что ты предлагаешь дрючиться с wait/notify и мне стало интересно как ты это видишь. Зачем такая дрочка ради каких-то чекбоксов, мне искренне не понятно.
Лан :))
Поменяй чекбокс на любые данные, что тебе нужно — будет глобальный ответ.
Вопрос: как эту хуйню внедрить через даггер 2?
В ней есть пустая неиспользуемая таблица, которую я удалил к хуям.
Что-то нужно делать в onUpgrade, обязательно менять номер версии?
Пытался. Нихуя на нагуглил.
Не шарю.
>>864056
Ресивер зарегать в манифесте/активити.
https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
Вот эта перда имеется на yii2, мне что нужно сделать, чтобы создать мобильное приложение?
Ещё одно ТЗ писать для мобильного разработчика или вообще просто подарить ему весь проект, дав доступ? Ну боязно же как-то!
К тому же, там ему лишь часть имеющегося функционала будет нужна, многое (допустим, статистика для админов и лекторов) совсем не нужна в приложении.
Мучает этот вопрос, короче.
Я такой тормоз, что даже и не знаю.
Я не сам делаю, а со знакомым программистом.
Я больше руковожу и слежу за UI, а он реализует всё.
А в случае с REST API как это делается? Просто структура передаётся, а мобильный разработчик делает по ней?
Если есть нормальное АПИ, тебе нужно только задокументировать его.
Вообще, поговори с самим разработчиком, не? Он тебе и расскажет, что ему нужно и в каком виде. Странно это на дваче спрашивать.
Ну просто интересно это, в наш-то век смартфонов. Как всё бывает и как проходит, что нужно сделать, чтобы всю работу (не бесплатную) не спалить в один момент.
Спасибо за ответы!
ну а нахуя тебе смотреть за ним пока ты в бекграунде, для этого есть https://developers.google.com/cloud-messaging/network-manager
Красивое представление даных. Я пробовал graphView, но она хорошо подходит для матиматических/физических задач, а мне нужен график рейтинга для обычных пользователей
https://youtu.be/-03R4Fj79_E
Кросплатформенные Android/iOS приложения в Material Design на Dart
Можно поробовать прям в IDEA/AndroidStudio/Atom скачав плагин Flutter и поставив sdk.
Ставлю ему app:elevation - и ему похуй. Саппорт либа 24.2.1, compile 24, target 24. Если не ставить то есть какой-то дефолтный, который работает.
Используй эту:
https://github.com/PhilJay/MPAndroidChart
Там есть демо приложение в маркете.
Отрисовка очень оптимально сделана.
Ой, не может быть! Hello World компилируется и работает! Ну что, теперь-то Java точно всё? У нас новый убийца жабы!
Вот это да! Ещё одна революционная технология для кроссплатфорсенного написания рест параши! Ух заживём!
Вспоминаю наши проекты с bluetoooth и signal processing.
Таки да, это только для рестопараши годится.
>>864623
И еще лови, но эту я не юзал:
https://github.com/diogobernardino/WilliamChart
Демка тоже есть.
Там можно вызвать нативный для платформы код без танцев?
ctrl+b на любом классе и читаешь сорц.
И вот опять!
Хаскелем.
Стартуй активити с которого будешь возвращаться, через startActivityForResult. А потом словишь onActivityResult, если правильно оверрайднешь onBackPressed стартуемого.
алсо лик кенери утечек не наодит
FrescoLib
Тут просто всё за меня было сделано. Я только фичу добавляю. Можешь подсказать где примерно копать?
Спасибо, анон, разобрался. Там оказывается адаптер наследовался от FragmentPagerAdapter, а не FragmentStatePagerAdapter
В onViewRecycled адаптера ресайклил бы картинку епт.
Эмулятор как один из вариантов...
Алсо, какие параметры важны для быстрой сборки?
Для сборки важна память. Гугли CI, на серваке будет происходить сборка после коммита и прогон тестов.
Разрешается ли в приложении размещать ссылку на youtube канал?
Приложение для BLE брелка, на канале видео про его применение.
На грани уже тащемта, скоро 32 надо будет.
https://github.com/Sayales/recycler-view-adapter-creator
Запилил нахуй никому не нужную либу, но вдруг нужна кому.
а что за реп topjava?
Просто как мне кажется, легче всего посмотрев на демо проект понять что там происходит
Затем чтобы можно было по фасту создать рекуклер вью с хедерами/футерами и он свайп екшенами
Ну в 2016 то процы уже спокойно жрут даблы не хуже флотов. Можно уже не обращать внимания
p.s. Суть траблы заключается в том, что dto построен по образу и подобию прилетающего json-а, тобеш как куча Map<String, Map<String...>...>>, а для базы требуется конвертирование всего этого в List ибо по Map не особо пробежаться forEache-ем или Observable::from-ом
окей, не знал, но это все равно не сильно влияет на ужасность алгоритма записи и маппинга. Идет 4 табоицы - Параметры с OneToMany переводы, так же с OneToMany к опциям, которые OneToMany к своим переводам; Json же - жирный ассоциативный массив, в котором все это представлено в виде словарей id:smth. Что мне вообше делать с этим ? Резонно ли кэшировать не структуру dao в бд, а json-строку ? В основной программе есть поиск по этому говну с выбором нужного перевода, то есть вообще SQL запросы будут удобнее копания в json-е или даже в массиве dto-шек
Gson (и др. парсеры) умеют сохранять такие ассоц. массивы в списки пар ключ-значение (List<Pair>)
Нет. Просто ты не умеешь в тестирование.
p.s. Загугли don't break the chain, rxJava. Подробно все написано про compose и про Transformer<T,T> ...
> don't break the chain, rxJava
Спасибо конечно, но я могу спокойно написать расширение на Kotlin
fun <T> Observable<T>.doAsync(onSuccess:(T)->Unit, onFail:(Exception)->Unit):Observable<T> {
return subscribeOn(Schedulers.compute())
.observeOn(AndroidSchedulers.mainThread())
}
Вообще я хотел сказать что ты мог сделать простое преобразование в Stream подобном API из Kotlin
+ взять CompletableFuture (из библиотеки с github) для асинхронности
>onSuccess:(T)->Unit, onFail:(Exception)->Uni
Нафиг конечно нафиг не нужно. Хотел др написать, но потом передумал.
Чтобы экономить строчку но иметь лишний класс ? Спасибо, не голодный. Compose то я над обычным обсерваблом юзаю
unit testing, ваш Кэп
И верстать все отдельно? Ну это какой оверхед. Тем более как я указал, у меня все приложение в лендскейпе, и размеры которые норм смотрятся на телефоне плохо смотрятся на планшетах, особенно на больших смотрятся пиздец убого, пока ставлю именованные дименжены местам которые хочу скейлить, и в папочке sw600dp множу их на два, смотрится более не менее.
Опять котлинодауны протекли.
тогда сделай так: добавь в res bool isTablet = false, в sw600dp - true, потом программно выбирай layout
Никогда так не делай.
>>868087
Используй модификаторы sw. Измени значения в dimens.xml
Хотя, если ты использовал dp и sp, то всё должно быть ок.
Я использовал dp и sp, но ок не будет. Просто потому что, например у телефона 640x335 dp, а у планшета 1280x728 dp, тогда аватарка 64 на 64 будет совсем по другому смотреться на них.
Ну и да, я использую sw600dp. В итоге буду аккуратненько смотреть что где можно в два раза увеличить, а что нет, все множить совсем не вариант. Жаль что картинок не векторных прийдется заготавливать больше для красивости.
Абсолютно, эти значения я брал таким образом:
final Configuration configuration = getResources().getConfiguration();
configuration.screenWidthDp;
configuration.screenHeightDp;
Запусти на планшете и на телефончике.
На телефоне:
screen dp width: 640
screen dp height: 335
screen px width: 1920
screen px height: 1080
На nexus 10:
screen dp width: 1280
screen dp height: 728
screen px width: 2560
screen px height: 1504
Поэтому одинаковые dp, выглядят и чувствуются по разному на телефоне и на планшете.
Если задавать размеры в dp - то физические размеры везде будут одинаковыми.
sdp - отличная вещь, я использую его на экранах приветствия и в некоторых случаях при построении интерфейса. К примеру в приложении, которое отображает данные с датчиков.
github (при создание репозитория) и Android Studio могут сами его создавать - чаще всего этого хватает.
> Android Studio
Не полностью игнорирует студийные файлы, которые нахуй не нужны в гите. Да, проект не подцепится сразу, а через import gradle project.
Платформозависимые бинарники
Кодить можно в Notepad++ или Sublime, собирать Gradle'ом в консоле, тестировать на реальном устройстве и эмулятором на CI сервере.
MPAndroidChart
Возникали у вас задачи отображения сотен тысяч точек на графике?
Ты хотел сказать либами?
Закончил курс Udacity, немного поэкспериментировал после. Сейчас перечитываю учебник. Мало знаю, но простенькое приложение собрать могу... Наверное.
Ну, до этого написал еще простенькое CRUD приложение на Java Spring MVC, но так и не закончил его на 100% (запорол логику БД). В общем я около двух лет в свободное время учился, сначала Java, потом Android. Но последние пол года я разленился и начал многое забывать. Я месяца четыре не открывал IDE.
Посмотри шапку треда.
>Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library, shared preferences, SQLite), знание популярных библиотек типа Retrofit + Glide/Picasso. И хотя бы оно готовое приложение.
Почему так слабо распространена практика белого списка? Лучше по дефолту всё игнорить же, кроме того, что тебе нужно.
Ну вообще-то, Git именно так и работает. Пока ты сам вручную нужные файлы не добавишь через add, он с ними ничего делать не будет.
Можно случайно чего лишнего добавить. А с белым списком хоть git add . используй.
1) наследоваться от классов этой SDK
2) копировать их в свой проект, изменив функционал
3) вообще забить SDK, и пилить свой ретрофитный велосипед
Как лучше поступить, чтобы на собеседовании не обоссали?
Уже не вк ли это? Я предлагаю тебе гибридный вариант - сделать ретрофитовский велосипед конкретно для этого запроса, в будущем может совсем на него переехать.
Как загружать пикчи? Что писать в хмл файле? Например, в html есть input type='file', в андройде есть что-то такое? Тег там или кнопка
>Как загружать пикчи?
>Что писать в хмл файле?
>Например, в html есть input type='file', в андройде есть что-то такое? Тег там или кнопка
ХАХАХАХАХАХАХАХАХАХАХ
Может ты хочешь еще бордер-радиус, или какую-то другую шутку найти?
Для начала не пиши андроЙд, пожалуйста.
Во воорых по поводу картинок, вариантов очень много.
1) Ручками грузить картинку в другом треде, далее преобразовать байты в битмапку как тебе надо и встаивть в ImageView;
2) UniversalImageLoader/Picasso/Glide - удобные апи для загрузки картинок, могут даже кучу вещей сделать за тебя, но опять же в коде;
3) Volley, не знаю насколько она еще жива, но раньше в ней был NetworkImageView, который по указанной ссылке будет грузить имедж, так себе вариант;
Чето вообще не увидел там sdk для ведра. А джавовскую либу советую посмотреть на предмет количества методов.
Возможно, стоит выбрать что-нибудь другое
> посмотреть на предмет количества методов
Серьезно, кто-то в 2016-м еще парится по поводу количества методов, когда есть MultiDEX и Proguard?
СДК у них было, но я его нигде не нашел, а из ответа на стеке выходит что оно старое и всеми забытое. Если можешь скинь ссылку на джавовский клиент, я на их гитхабе не нашел. Увы я не ответственен за выбор, просто в вебе уже используют эту поебень.
Спасибо.
Ну это другое. Тем более ставить картинку через атрибут uri немного плохо, с большими картинками начинает тупить, так как грузит их в главном потоке.
Поэтому посоветуйте инструменты для рисования графиков в Java, которые норм бы прикрутить к приложению.
Мне нужно будет по двум точкам строить прямые, находить на их пересечении подходящую область, и находить нужную точку.
Вроде ничего особенного.
Я использовал для схожих целей дискретные монады. Просто, удобно и не нужно никаких дополнительных инструментов.
Что за дискретные монады, можно подробнее? Сам только учу яву и вообще андроид разработку, об этом не слышал.
Суть в том, что мне еще и рисовать эти графики нужно.
Ну кто же в 2016-м учит яву, ты серьезно? Она уже мертва давно, новых версий не будет https://habrahabr.ru/post/304812/
Учи Хаскель, пока молодой, будешь крутым специалистом: https://www.haskell.org/tutorial/monads.html
Или учи js, если хочешь легких денег.
Ой, не начинай.
Джавовские рисователи графики слабо подходят для ведра. Я бы брал gnuplot или что такое, но существующие порты мне как-то не нравятся. Если там только линии то как бы не сложно и тебе нужно сделать кастомный вью и ему переопределить onDraw. А как искать пересечение точек, смотри на каком-нибудь maxalgo.
Спасибо.
Графопостроитель MPAndroidChart
Для того чтобы заполнить дерево из View объектов согласно xml разметке, которую ты в этот файл передашь.
>заполнить дерево из View объектов согласно xml разметке, которую ты в этот файл передашь
Не понял
Напиши кастомный View, делов-то.
*В этот метод а не файл
Пока что я делаю так: пишу все это одной строкой в бд в первой активити, затем с интентом перехода передаю юри-ссылку на эту строку и извлекаю значения из бд уже во второй активити. Мне кажется, делаю что-то лишнее.
Extras
@Override
public void onItemClick(AdapterView<?> parent, View itemClicked, int position,
long id) {
Intent intent = new Intent(LadderActivity.this, PlayerInfoActivity.class);
startActivity(intent);
}
});
NullPointerException, в чем ошибка? Не могу открыть активити по клике на айтем листвью.
http://4pda.ru/forum/index.php?showtopic=608702
Человек просто перечислил всё, о чём слышал.
А что не так? Если у него действительно опыт 6 лет, то он действительно всё из этого знать должен. Перечислять кейворды для hr - нормальная практика.
Меня бы смутило незнание иностранных языков и отсутствие ссылок на приложения или хотя бы примерное описание проектов. Но может на этом форуме просто такие правила или так принято, не знаю.
Пришло время покупать ноут для работы, до этого все делал на десктопе, но сейчас придётся каждый день кататься в офис и обратно, ввиду этого рассматриваю 13.3" и 15.6" ноуты, ибо 17" таскать с собой каждый день как-то не очень. Встал вопрос о выборе диагонали и разрешения. Есть к анонам два вопроса по этой теме.
1)13,3" кажется мне слишком маленьким для кодинга и этот вариант стоит отбросить сразу, прав ли я?
2)На 15.6" какой стул выбрать: 1366х768 или 1920х1080. К первому варианту меня склоняет его цена (минимум на 25% ниже), но отпугивает моральная старость таких экранов. От преславутого фулл ашдэ меня отпугивает только то, что на 15 дюймах при таком разрешении все будет настолько мелкое, что придется увеличивать масштаб интерфейса чтобы не вытекали глаза, при таком раскладе смысл покупки фуллхд частично теряется, прошу чтобы кто-то подтвердил или опровергнул это мнение.
С удовольствием выслушаю ваши советы по моему вопросу, так же пишите какой дисплей на вашем рабочем зверьке (чем довольны, чем недовольны)
У меня экран ноута 15.6" с разрешением 1920х1080, никакого "слишком мелко" там нет.
Дома и на работе всё равно подключаю ноут к внешнему монитору и пользуюсь только им. Брат жив.
Года 3 разрабатываю под андроид на macbook 13'' - все отлично видно.
Последнее время даже увеличил шрифт на ~25% тк слишком много кода за раз видно на странице.
Юзаете ли веса? match_parent/wrap_content, или же пилите все размеры в dp?
Я просто к чему пишу - решил немножко подзапариться с вёрсткой своего проекта, адаптивностью и прочей малафьёй, и подохуел с того, что все это делают абсолютно по-разному (пример https://habrahabr.ru/company/touchinstinct/blog/191910/).
Лично я раньше просто пилил всё, что можно match_parent + Space + веса, в dp в основном отступы. Но тут проблема, что в списках эта хуйня не работает, и веса хуесосят на хабре за производительность. Плюс, если текствью match_parent - настраиваемый шрифт не запилить.
Как делаете вы?
Берешь и без задней мысли верстаешь. В документации всё описано. Не можешь её понять - смотри видеокурс на юдаси.
По ссылке описана какая-то хуита.
Я сейчас сделал так: сохраняю сам презентер (а не Observable или Subscription) в пустой retained фрагмент. Предварительно "открепляю" от презентера View, чтобы не было утечек.
Очевидный минус такого подхода: не получится в качестве View использовать фрагмент (ибо retained фрагмент не может находится внутри другого фрагмента). Может, есть еще какие-то?
Какой вариант посоветуют опытные аноны?
> Может, есть еще какие-то?
Имел в виду, может есть еще другие минусы, у подхода, который я описал.
Обоссыте меня, если есть за что. А еще лучше расскажите, как вы делаете.
А что если я скажу тебе, что ты можешь отключить пересоздание при повороте через configChаnge,
а остальное решит кэширование на уровне доменной логики.
Нет, спасибо.
Кто такой жека, и почему гейось нормально обрабатывает повороты, а ведроид через жопу?
https://medium.com/russian/почему-мой-телефон-не-обновится-до-нового-андроеда-e4cd5fa3fa85#.uesdnrt1b
Типа это проблемы железа, а не архитектуры? Сильное утверждение, я с ним не согласен.
Хендлинг смены конфига не должен происходить в софте вендора, в котором фиксят "плохое" железо. Да, вендор может дописать своих изменений конфига, и соответсвенно должен был бы дописать правильный хендлинг этих изменений, опираясь на дефолтный хендлер, который умеет решать такую хуйню как смена языка, часового пояса или не дай бог размера экрана. Но этого не появилось в ядре ведроида, соответсвенно в вендоровских прошивках этому неоткуда взяться. Статью я эту читал давно, насколько я помню смысл сводился к тому, что из-за "мусорности" телефонов всем похуй, а потому ебашат говенный хард, на него натягивают еле дышащую прошивку, и всем похуй.
Стоит ли гнаться за ноутом с хорошими тачпадом и жестами (макбуки, последние асусы) , или в любом случае все сводится к мышке? Смог ли вам хороший тачпад заменить мышь?
Везде кроме игр пользуюсь тачпадом, много где достаточно клавиш и тачпад/мышка только тормозят.
макбук
kot2]&N0162ANUSgmaCkeilPUNCTUMcg!-om
Почему не делать всё в ретеин фрагментах? То есть там у тебя будет хранить и презнтер, и вся работа с андроидскими вьюхами.
Потому, что Retain фрагменты не должны хранить ссылки на android.View, Context и т. д. - при каждом повороте экрана будет утекать память. Поэтому и нужно откреплять от презентера активити, чтобы не было утечки.
Кроме того, Retain фрагменты нельзя добавить в back stack.
Так что, делать непустой фрагмент с UI retained - плохая идея.
Application context принадлежит всему приложению, когда как просто контекст принадлежит конкретной активити. Т.е. простой контекст "сломается", когда соответствующая активити будет уничтожена.
Какой проц стоит в вашей рабочей лошадке и довольны ли вы им? Сейчас в ноуте 8гб озу, ссд и i5 второго поколения. Думаю именно проц все портит, ибо ide тупит как мразь. как раз выбираю машинку помощнее. Что бы вы не/рекомендовали? Извиняйте, что скатываю тред в хардверач.
Просто я не знаю, как тогда получить объект Offer, к которому привязан мой холдер? Через значения image или text вьюшек, естественно, не вариант. Поэтому и пришлось такое пилить
Понятно, что ксамарин несет сильный оверхед. А как дела обстоят с qt и, например, дельфи под андроид? Они же создают наивные бинарники?
Наивный здесь ты. Может считать они что-то быстро и будут, но у них все свое, потому что в противном случае им нужно делать вызовы в джаву, что еще медленней чем вызов из джавы. И все ведроидовские компоненты стандартные преврщаются в хуй пойми что, так что получишь большой оверхед по коду и сопровождению.
> при каждом повороте экрана будет утекать память
в Butterknife есть метод unbind, ничего не течет
> Кроме того, Retain фрагменты нельзя добавить в back stack.
это ты сам придумал? У меня все отлично добавляется, и уверен у тебя тоже
> Так что, делать непустой фрагмент с UI retained - плохая идея.
Не соглашусь, взял эту идею из mosby
> в Butterknife есть метод unbind, ничего не течет
Окей, допустим.
> это ты сам придумал? У меня все отлично добавляется, и уверен у тебя тоже
void setRetainInstance (boolean retain):
Control whether a fragment instance is retained across Activity re-creation (such as from a configuration change). This can only be used with fragments not in the back stack. https://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)
Mosby 2.0 uses retaining Fragments or for activities lastNonConfiguration method to keep presenters. There is nothing wrong with retaining fragments that have UI. The only downside of retaining fragments are that you can't put them on the back stack.
http://stackoverflow.com/a/36437802
Fragment is on the backstack it can not use setRetainInstance(true).
https://github.com/sockeqwe/mosby/issues/153#issuecomment-241201734
Последние две цитаты принадлежат собственно создателю Mosby.
Собственно, Mosby 3.0 будет работать иначе:
In Mosby 3.0 (SNAPSHOT available but Fragment on backstack not implemented yet) all presenters will be saved in a Map bound to the hosting activities lifecycle. That means, Presenter can be kept for non retrainig fragments on the backstack. In contrast to Nucleus, they are only kept as long as Activities lifecycle or removed from backstack by the user (navigation). Furthermore, this allows Mosby 3.0 to support custom views (FrameLayout etc.) too.
> У меня все отлично добавляется
Если действительно так, опиши, что и как ты делаешь или покажи код.
>>872905
Так что должно произойти?
>https://github.com/sockeqwe/mosby/issues/153#issuecomment-241201734
Вот тут у него, как я понял, когда фрагмент в бэкстеке и он переворачивает экран, тот фрагмент теряет данные, да?
Странно, но я щас затестил свое приложение - и там запрос,который нужен для фрагмента в бэкстеке, не повторяется при перевороте. Может быть это так работает только для фрагментов из саппорт либы?
А вот нашел в чем проблема http://stackoverflow.com/questions/13420448/how-i-can-break-things-with-fragments-with-setretaininstancetrue-and-adding-th
Просто я не юзаю onSaveInstanceState, у меня все хранится в поле ретеин фрагмента (ViewState), и ничего там не пересоздается в бэкстеке при перевороте. Но спасибо, анон, что написал про это, потому что у меня могли возникнуть баги из-за этого, и я бы долго искал в чем проблема
Ну а проверка на разных устройствах? Лучше узнать, что твоя программа не работает на Гэлекси до того, как пользователь начнет ругаться.
В договоре указывается reference device, правильную работу приложения на котором нужно реализовать и протестировать.
Тестирование на старых самсунгах и безымянных китайфонах — если заказчик захочет (разумеется, не бесплатно).
А как ты тогда восстанавливаешь состояние вьюх, если у тебя onCreateView() не вызывается?
Вызывается, только после переворота в backstack'е в него приходит null bundle. И из за этого Гугл предлагает не юзать ретеин фрагменты с backstack'ом, как я понял. Ну все равно все можно засейвить во вьюстейте
Хм, окей.
Но мне всё равно не особо нравится идея делать все фрагменты setRetainInstance(true)
можно через сокеты попробовать, но нужно подключение к интернету и сервер. Ну и конечно будет небольшая задержка
Используй dlna для поиска в локальной сети другого смартфона и удаленного воспроизведения песни. Часы смартфона для синхронизации.
>>873345
Только не смейтесь если что - а без интернета это возможно? Очевидно остается только синий зуб для коммуникации.
Вы видите копию треда, сохраненную 22 ноября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.