ИТТ продолжаем обмазываться коллбеками и форматировать XML.
Коротко о главном: 1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - добро пожаловать в андроид разработку. 2) Android Studio & Java - единственный легитимный набор, теперь стал еще легитимнее. 3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах. 4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js. На самом деле изменил свое мнение, всякие поделки на js имеют место быть, и более того, в наших же интересах клепать несложные проекты на нем, так как объективно быстрее сделать юи.
Где брать инфу: Интернет-ресурсы 1) http://developer.android.com/index.html Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта. 2) http://stackoverflow.com/ Пользуюсь чаще чем первым сайтом. Можно найти практически все. 3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже. http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/ Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить. 4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять. 5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.
Книги, их никто не читает, но все советуют только одну 1) The Busy Coder’s Guide to Android Development
Привет, анон. Хочу вкатиться в программирование, но боюсь начинать. Знаний у меня нет никаких и поэтому я уже 100500 раз пытался забросить идею начать программировать, но мысли меня мучают и места не даёт покоя. В общем, я понял, что мне нужно изучить Джаву, а потом вкатываться в андроид разработку. Мне нужно помощь, анон. Во-первых расскажи как вкатывался сам, о свих начальных условиях и подводных камнях. Сколько время тратил, кокой был первый проект и получается ли на этом деле зарабатывать. Моя цель - создавать приложения для ведроида, но я совершенно не знаю с чего начинать. Подскажите сперва как начать вкатываться в джаву, книги, видео уроки, которые вы реально на себе проверили и которые годные. Я слышал про джава-раш и про "философию джавы" Эккеля. Как понять, когда вкатываться в андроид? Спасибо большое, если адекватно ответите.
>>619578 Прочти философию java. Прорешай на javarush все задачи, на которые хватит баллов, это всё полезно. Далее бери подписку на месяц и вкалывай, решая остальные задачи. Придумай себе проект на андроид, к примеру клиент для двачей. Читай то, что в ОП посте и фигачь. Как толтко твой клиент сможет просматривать хотябы фурряч - приходи сюда, мы будем твой код хуями крыть.
Я начал кодить без знания Джавы и ведра вообще. Немного знал ООП, и всё. Синтаксис джавы - си-подобный, так что это проблем вызывать не должно. Просто взял и без задней мысли начал делать. Да, у меня всё ещё выходит говнокод, и я постоянно исправляю старые косяки из-за того что узнаю новые особенности платформы, но как по мне так такой спонтанный и бессистемный подход в некотором роде лучше. Учиться на своих ошибках - дорого стоит, но и понимание более фундаментальное приходит, когда исправляешь эти ошбики. А обучение по книжкам чаще всего у всех отбивает желание продолжать изучать какой-либо язык на стадии написания хеллоуворлдов и сортировок. Просто берешь в зубы стаковерфлоу и ведроидовскую документацию и начинаешь изобретать велосипеды на костыльной тяге, после чего переписываешь их до тех пор пока они не превратятся в изящный мотоцикл.
Оп в треде, спасибо что тред создали, а то я приболел малость.
>>619639 >Какой опыт? Опыта около 10 месяцев. Как раз в первый месяц работы первый тред и создал. >Выгодно ли на яве вообще писать? Тупой вопрос на самом деле. Конечно выгодно блять, один из самых популярных языков, в тройке точно. И оплата как на остальных примерно. Можно хуярить как бекенд так и ведроид. Для фронтенда нужно будет все равно дрочить джаваскрипт.
А сугубо для ведра джава незаменима ну котлином мб разве что. Вариант еще на джаваскрипте писать, но там говорят может оказаться много пердолинга. Но для простых проектов советуют. Но опять же, там 3-4 популярных технологии на js и они все друг от друга отличаются.
>Какие проекты делали? Делал 3 клиент серверки. Первый проект сам клепал на стартапе за гроши, там многому и научился. Мое портфолио собственно. Правда стартап сдох, благо на плеймаркете осталось. Второй делал месяц, успел только наклепать общую архитектуру и классы для работы с ебанутым Json-rpc. Но сьебал на другую работу. Сейчас пилю говносоциалку, допиливаю за каким-то идиотом, такого хуйового кода я с первого курса не видел. Но проект мертвый и не оживет и от этого печально, пока нечем гордится.
Хуй знает что это такое, но вот принес с прошлого треда. Алсо, я сижу в конфе в скайпе, там конфа под 300 человек, разумные вещи говорят, да и опытные все, правда туда без инвайта не попасть.
>>619370 (OP) Хотел посмотреть в Wireshark-e как проходит аутентификация одного андроид приложения (интересуют реквесты к закрытому API и ключи, которые оно отправляет). Девайсов на андроиде нет, поставил Bluestacks, Wireshark видит его трафик, но пользы от этого мало - реквесты все идут через HTTPS. Люди как-то получают нужные реквесты и ключи. В какую сторону смотреть? Реверс инжинирить приложение? Если да, то как? Если нет, то что посоветуете?
>>620096 Есть REST API, через который приложение отправляет команды на сервер. Его адреса и json-параметры не задокументированы, так как подразумевается, что команды будут отправляться только через само приложение. Разумеется, с каждым реквестом шлется ключ авторизации (я пока не знаю, генерится ли он кодом в приложении или другим веб-сервисом). Но я знаю, что люди как-то достают эти эндпойнты и ключи, и получают доступ к сервису напрямую, без приложения. Ну и я хочу того же самого. Перехватить пакеты Wireshark-ом - не вариант, так как API работает только через HTTPS. Остается реверс-инжинирить? И если да, то что там самое удобное для этого под андроид?
Рисую пикчи с помощью(или правильно говорить в?) канве canvas.drawBitmap(); Скалирую канву canvas.scale(); рисую сетку canvas.drawLine();
И в результате не все линии рисуются, КАК НАСТРОИТЬ ПРАВИЛЬНЫЙ РЕНДЕРИНГ?! Так чтобы рисовались все линии и ни одна не пропадала. В интурнетах только какие-то вопросы по рендерингу видео нахожу.
>>620130 Если я правильно тебя понял то тебе нужны все стринги из апликухи? Т.е. эндпоинд куда шлется, названия методов и тд? Если да то реверс инжинирингом ты их получишь,они не обфусцируются. Реверс инжиниринг сам нагуглишь,там работы на минут 15. А вот ключ авторизации другой вопрос, скорее всего она в шаредах хранится, но далеко не факт, он может на сессию создаваться. Но да скорее всего в shared preferences ищи.
Анон, дробить проект на несколько модулей хорошая практика или нет? Вот допустим я написал view-писечку, и вынес её в отдельный модуль и всякая разметка для неё в layout не болтается.
>>620694 Хороша практика выносить все кастомные View в отдельный модуль, но только в том случае, если это крупный проект и все эти кастомные view можно использовать где-то еще. В остальных случаях смысла нет. Просто именуй всё понятным языком, к примеру разметку для своих вьюшек именуй со слова: custom_
Парни, поясните за WebView. Я ТЗ пишу, мне нужно приложение, которое будет фактически только браузер внутри себя показывать. Объясните, можно ли настроить его так, чтобы при встрече определенных ссылок на сайте, при переходе по ним ссылка открывалась не внутри WebView, а предлагалось открыть в любом брауезере.
Причем пометка у такой ссылки могла бы быть data-..., то есть html5-атрибут. Другими словами, мне нужно сделать так, чтобы в WebView какие-то ссылки помеченные атрибутом data-... открывались в родном браузере телефона. Можно ли это вообще сделать? Если да, то не могли бы сказать куда копать, чтобы в ТЗ я сразу написал "смотреть в сторону NNNN"
>>620821 Ты ведь можешь получать текст ссылки при нажатии, проверяешь в нем нужный тебе атрибут и делаешь intent с этим урлом. вылезет стандартный диалог через что открыть
>>620851 Текст ссылки это анкор, href или весь тег "a" с атрибутами? Если весь тег с атрибутами, это было бы идеально, потому что я смогу через data-... отмечать часть ссылок.
>>620860 >>620821 Нет, вызывается shouldoverrideurlloading, куда передается только url. Про анкоры не уверен. Я бы лучше добавил в путь ссылки get параметр, например external=true, тогда бы все ссылки отправлял в браузер с таким параметром. Ну или наоборот intenal=true.
>>620871 Закидывай в папку lib. Нужный в градле пункт уже прописан, просинхронизируешь проект и готово.
>>620882 >Закидывай в папку lib. Нужный в градле пункт уже прописан, просинхронизируешь проект и готово. Т.е. просто в папку, где сама студия установлена? А как просинхронизировать?
Программач, пытаюсь осилить по совету анона из прошлого треда (спасибо, кстати) либу android-async-http, но что-то делаю не так, пример c их сайта (скопировал один в один из https://loopj.com/android-async-http/doc/ ) выдаёт какую-то хрень вместо ответа: I/System.out: [B@a1d543c
Запрос проходит успешно, но почему-то вместо нормального ответа выдаёт эту строчку. Если в примере поменять сайт и заменить хттпс на хттп, то ничего не меняется.
Пачаны, помогайте, а то уже пена изо рта от бешенства идет. Как совладать с поганым GridView? У меня в View, который я добавляю в GridView есть Спиннер, и когда я скроллю GridView, то значение у спиннера постоянно сбрасывается! Как совладать?
>>621026 В режиме дизайна отображаются и те и другие, просто для возможности обращения к ним. При запуска же чекбоксы заменяются чектекстом в зависимости от положения свитчера ниже.
Хочу вкатиться в андроид разработку. Знания нулевые (на уровне знания сишного синтаксиса и чуть-чуть ООП). С чего начать, что читать по джаве, насколько глубоко залезать в джаву?
>>619370 (OP) Как можно зарабатывать на этом деле адекватные деньги? Пусть у меня 100 тысяч пользователей в месяц, которых у меня никогда не будет. Пусть каждому из них я один раз покажу рекламку. Итого: ~1$ на тысячу = 100 долларов.
При этом средний разработчик получает в разы больше за месяц работы над приложением, которое точно не окупится.
Может и ошибаюсь, но средняя цена за interstitial 2.5$ за 1000 в нормальных странах. Если приложение используют в каких нибудь пакистанах, будет еще меньше, около 1.5$. Алсо может так выйти, что вообще кликать не будут, тогда CPM будет вообще маленьким. Потому и считаю 1$.
>>620975 Хранить значение спиннера в модели, с которыми работает адаптер. Обновлять спиннер из getView. А лучше почитай как ListView (GridView абсолютно аналогично) работает. Твой вопрос именно от непонимания идёт.
>>621161 >Релайтив не думал сделать? Эт хорошо когда под свой смартфон пишешь наверное. >Релайтив не думал сделать? Ммм, не задумывался. Просто сделал как знал что смогу.
Можно ли в режиме дизайна отключить обновление layout'а каждый раз при его изменении? Раздражает, что всё очень медленно работает. Студия часто вешается.
>>621128 Совладал, но возникла новая проблема: можно ли заставить адаптер создать больше элементов, чем умещается на экране, так сказать "заранее"? У меня умещается только 2 элемента, а мне нужно получить значение с, например, четвёртого, который ещё не создан, т.к. гридвью не скроллили.
Хочу вкатиться в андроид разработку. Знания нулевые (на уровне знания сишного синтаксиса и чуть-чуть ООП). С чего начать, что читать по джаве, насколько глубоко залезать в джаву?
Андроиданы, следите за руками: Действующие лица: MainActivity extends AppCompatActivity SupportFragment extends Fragment // сапортный епта WorkerFragment extends Fragment // опять же из сапортной либы
Легенда: WorkerFragment по нажатию на вьюшку в нем делает startActivityForResult (запускается метод фрагмента, а не активти, если сорцы библиотеки не врут моим глазам)
Действие 1: WorkerFragment цепляется в MainActivity все чики брыки всем все резалтится
Действие 2: WorkerFragment цепляется в SupportFragment который цепляется в MainActivity WorkerFragment цепляется через getChildFragmentManager Результат приходит в SupportFragment
Вопрос какого хуя? Или это by design и родителские фрагменты должны перехватывать старты от детей и не форвардить их автоматом?
Я конечно понимаю что схема тупая, но это как бы уже после того как сделал и на такое напоролся.
>>621161 >Я бы на твоем месте посмотрел бы в сторону дата биндинга. Там вроде траблы будут с онЧек событием.
>>621021 А они там точно по порядку все? Или порядок нахуй не уперся? Он же все же лист юзает.
>>621129 А вот это годная штука, спасибо. Только это говно затратное. А у него тут итем листа >>621024
>>621161 >Релайтив не думал сделать? А нахуй там рилейтив? Линеар в линеаре это удобная блочная верстка, что-то поменяешь все не пойдет по пизде. А релейтив с его идшниками та еще веселуха, и он скорее всего медленнее будет работать.
>>621117 >При этом средний разработчик получает в разы больше за месяц работы над приложением, которое точно не окупится. Ну как бы я так и делаю. Я не из тех дибилов которые работают для себя. Я бы ебловал если бы мог. А так я пока что деньги зарабатываю и скил повышаю, будет годная идея - буду делать но не во вред работе.
>>621557 > Вопрос какого хуя? Прост. Тоже с этой хуйней проебался когда то >>621593 > и он скорее всего медленнее будет работать Нет. Чем меньше уровней вложенности, тем лучше. Количество onMeasure вызовов уменьшается, в некоторых случаях сильно. > It is a common misconception that using the basic layout structures leads to the most efficient layouts. However, each widget and layout you add to your application requires initialization, layout, and drawing. For example, using nested instances of LinearLayout can lead to an excessively deep view hierarchy. Furthermore, nesting several instances of LinearLayout that use the layout_weight parameter can be especially expensive as each child needs to be measured twice. This is particularly important when the layout is inflated repeatedly, such as when used in a ListView or GridView.
>>621735 Уже много читал по поводу что быстрее. На самом деле строго похуй, но линеары до какой-то там вложенности должны быть быстрее. Рейлейтив тоже со вздрочем работает. Даже более того, есть люди которые говорят делать все блочкой, а есть те кто говорят что релейтив лучше. Но тут я вспомню правило "преждевременная оптимизация - зло". И потому советую всем хуярить как удобно.
>>621751 Так в любой либе для парсинга есть джейсон обжект, в который распарсится любой адекватный джейсон. А дальше растягиваешь его на джейсон элементы. Забираешь те которые нужны.
>>621679 Ну, во-первых таки не лист. Во-вторых можно и в листе. Опыт показывает, что даже getView можно забивать всяким говном на 150 строк — всё будет хорошо даже на старых бюджетках. >>621751 Ничего необычного в этом жсоне нет.
>>621770 >Во-вторых можно и в листе. Опыт показывает, что даже getView можно забивать всяким говном на 150 строк — всё будет хорошо даже на старых бюджетках. Это для тебя 150 строк, поиск не по идшникам потратит больше времени чем через айдишники. Но юзай холдерпатерн забиваем на это болт.
Привет котаны. Есть такая задача: пользователь скачивает файлы (.mp3), одновременно можно скачивать только 3 файла. Необходимо - организовать очередь и доставить в UI поток информацию о прогрессе и результате. Сохранить файл в стандартную папку с музыкой. Годный ли такой подход? 1) Создаем FixedThreadPool на 3 потока 2) Каждый поток занимается тем, что скачивает файл и сохраняет его в папку с музыкой, результат и прогресс сплёвывает через Handler?
>>621782 Мне другое не понятно: если у меня каждый элемент списка содержит вложенный linear layout, в который динамически добавляются элементы. То как здесь избежать findViewById? Никак?
>>621787 Никак. >в который динамически добавляются элементы Ты инфлейтишь их? Если да то это пиздец для листа, буде тупить при определенном количестве инфлейтов. И холдер не поможет.
Сап, андроны. Сорри, что не совсем в тему, но не могу придумать идею простого приложения под Андроид для запиливания. Нужно, чтобы приложение содержало несколько функций пользователя, было реализовано несколько собственных классов (помимо стандартных), использовался MVC, и также чтобы присутствовала работа с датчиками/устройствами, работа с файлами, с базой данных (SQLite), с облаком и пр. (что-то одно или несколько из этих вещей).
Подумывал какое-то приложение для мат. статистики запилить, типа для ряда значений рассчитать всякие хар-ки, мб графики построить, но работы с системой маловато (если только запилить чтение/запись данных в файл). Или органайзер времени (задач), т.е. вбиваешь задачи для выполнения и сроки, если какая-то задача близка к завершению, то выдается оповещение (мб с помощью Notification), но это, наверное, слишком заезженно и простовато. Алсо, думал простейшую гоночку в псевдо-3Д запилить, и управление сделать наклонами телефона (gravity sensor для этого нужен, как я понял?), но что-то боюсь сложновато будет, много по времени займет запиливание этого псевдо-3Д (еще для отрисовки хз что удобное использовать) и реализация управления сенсором.
Подскажите какие-то идеи. Или мб по приведенным выше что-то можете подсказать?
>>621826 Предмет "Мобильные и встраиваемые операционные системы". Другие варианты заданий: написание драйвера для устройства, написание приложение под Win Phone или написание программы для других встраиваемых систем с ОС. Выбрал себе написание приложения под Андроид, т.к. это как-то ближе хотя на самом деле ни с чем из этого не работал толком
>>621782 > Это для тебя 150 строк, поиск не по идшникам потратит больше времени чем через айдишники. Разумеется. Возможно, на порядок больше. Не 10 мкс, а 100. Бида.
Антош, сохраняю OAuth-токен доступа через getPreferences(Context.MODE_PRIVATE) всё правильно делаю? Кроме токена хранить ничего не требуется. Насколько безопасно так его хранить? Какие подводные камни?
>>621922 У меня была похожая хуйня, но неограниенное количество одновременных закачек с возможностью отмены, еще и в разных местах в приложении могло показываться и при закрытии должно было закончится в бэкгрануде. Наделал костылей с сервисом в котором есть ExecutorService с кэшем тредов. Из фичи общался с UI через интенты. Лучше бы сделал через DownloadManager и в одном треде его бы ебал вопросами ну че как там уже сколько загрузил и оттуда слал бы интенты.
На рутнутом телефоне может быть не безопасно, но во-первых кого это ебет, а во-вторых можешь шифровать своим еба методом уровня цезаря и тогда точно пока не возьмутся за реверс инжиниринг все будет ОК.
Платиновый вопрос: можно ли на купленную Idea наложить плагины, чтобы он был как Android Studio? Я не знаю что там есть в Студии (кроме заголовков библиотек), наверное, дебаггер
>>622258 В DownloadManager можно задать имя файла под которым он должен сохранить загруженное? Вообще вариант с DM выглядит более костыльным. По сути допиливаем нужный функционал через костыли.
>>622644 Незнаю, как сейчас - пару версий назад было можно. Я так делал, когда только начинал кодить под ведроид. Но потом всёравно решил перейти на студию.
Напиши мне приложение, ну как контакт, короче. Ну я знаю, что ты талантливый программист, тебе несложно будет))) Как только окупаться начнет, сразу заплачу, зуб даю) Еще и друзьям про тебя расскажу, нарасхват будешь)))
Как мне на устройстве развернуть базу данных? Открыл 2-й том Хорстманна, он грит мол иди к админу, сам не осилишь. Но это он про БД на сервере, а мне надо локальную.
Ребята, впервые вкатываюсь в ваш тред, дабы попросить помощи в простом деле. Придумайте мне тему для курсача. Знаю ооп ну, азы на крестах. Вот сейчас решился серьезно учить матчасть, начал с сиспа, а потом на джаву перекачусь, поэтому курсач мне будет за старт в джава будущее. Спасибо заранее, анон.
Если долго и с глюками грузится - перезапустите программу, сервер раскочегарится. Суть не в этом. Хотелось бы советов мудрых услышать насчет внешнего вида и требуемого функционала для программы такого рода.
>>623397 >>623398 Это обычная WebView, несложно догадаться. Сервер дрочит двач, формирует линки на пикчи, на клиенте картинки грузятся с двача, нет смысла их сперва перекачивать на сервер. Пока только /б в тестовом режиме, первые 20 тредов (всего в /b их 105).
>>623412 Можно, но это существенно повысит требования к скорости интернета клиента. Представь что инет у юзера не оч, и сраная страничка с картиночками будет грузиться 5 минут, так нельзя делать. Формировать же галерею все же куда проще на серве через ноду чем на телефоне.
Андроиданы, вопрос наверное не сложный, но я чего-то не нашел уверенного best practice для этого. Короче есть у меня вьюшка, которую я боюсь долго оставлять в памяти, но ссылка на неё должна быть в Runnable, который работает с интернетом. По-этому я хочу в момент cancel обнулить ссылку на неё. Ситуация примерно пикрелейтед. Как мне уловить момент отмены и обнулить объект? Я понимаю что можно через AsyncTask, но интересно как это в ванильной жаве сделать. Интенты не предлагать. Делается библиотека с баннерами. Извиняюсь за шакальство, не понимаю почему так хуево.
>>623951 Получится JSON в котором хтмл код который надо засунуть записать в базу и возможно засунуть в вэбвью. Ну короче баннер рекламный. Мне в ванильной жавы треде уже ответили, FutureTask конфетка.
У меня есть две версии приложения, full и free, различаются исключительно отсутствием рекламы. Предположим на девайсе установлены обе версии. Приложение умеет грузить картинки из галереи/с камеры (использую стандартные средства ведроида). При загрузке есть вероятность того что Активити вызывающая будет выгружена из памяти, и тогда при возврате она будет пересоздана. Как правильно описать intent-filter в манифестах платной и полной версии, чтобы при возвращении из стандартных активити Андроида не появлялся диалог с выбором, какое из приложений (полное или бесплатное) запустить?
>>624061 Так есть же post, а вообще я сделал через фичу, там не вьюшка висит, а просто интерефейс который умеет реагировать и в done() через предоставленный Handler или через Handler главного треда post.
>>624108 Я понимаю, что интересно всё исследовать, ты молодой-шутливый, но ты просто изобрёл велосипед. Абсолютно то же самое умеет делать AsyncTask: он именно так и работает.
Привет, ребята, очередной чайник в треде. В общем задумал я сделать одну классную вещь под андроид, но ни с чем, связанным с программированием в жизни дел не имел. Так вот вопрос. На каком движке можно написать игру типа "Взломщик 1.6", если помните такие были популярны лет 10 назад. Много ли нужно времени для того, чтобы новичку написать подобное?
>>619370 (OP) Анончики, хочу пойти на стажеровку в контору по разработке приложений под ведро, есть проблема из все что знаю это только с курса elegion от гугл ну так чуть тыкал в android studio. Вопрос в том что бы подготовить для собеседования, порекомендуйте самый минимум навыков, знаний что бы выглядить хотя бы знающим?
>>624802 >ничего не знаю и исправить это не пытаюсь, хочу быть девелопером Контора с таким же успехом может взять джамшута с улицы вместо тебя. Читай книжки, кури туторы, пили хелловорлды.
>>623587 >Я понимаю что можно через AsyncTask, У тебя раннейбл запускается в другом потоке? Тогда как ты вообще собираешься взаимодействовать с вьюхой? А так, можешь попробовать делать, например, thread interupt для отмена, если у тебя работа с интернетом не блокирует поток. Иначе никак - ибо состояние interrupted тебе придётся проверять вручную в методе run
Аноны, а что вообще представляет из себя кодстайл в реальных проектах андроида? Смотрю коды прог на гитхабе - у одних куча абстракций, все выдрочено до неузнаваемости в проекте с двумя активити, у других - наоборот - вся логика намешана прямо в активити, никаких паттернов, нихуя. Сам валю из тырпрайза в ведроид, ибо заебало бесконечное количество AbstractSingletonProxyFactoryBean, 20 слоёв ебаной бизнес логики над бизнес логикой, бесконечная абстракция и прочие радости тырпрайза. Правильно делаю, или путь онли в сишечку?
Я ньюфаг, но как понял по семплам от гугла. Что надо в каждое активити вставлять фрагмент и работать уже с ним. С лейаутами также, вместо того, что бы все запилить в одном надо делать <include> -> <include> -> <include> и так далее. Такое ощущение, что изначально все должно было быть по-человечески, но у них не получилось и в итоге сейчас понавставляли кучу костылей и у меня жопа горит от этой запутанности.
>>624953 >Я ньюфаг Вот покодишь еще годик и поймешь что так и надо, даже больше, что без фрагментов, отдельных ресурсов для всего и т.п. - без этого просто невозможно. Всегда для фрагмента, адаптера, хуяптера с листенерами и вообще любой дрисни можно запилить отдельный класс и спокойно ебать его, а не оперировать длиннющими на три экрана строчками с бесконечными анонимными функциями для описания сраного алертдиалога, который пользователь и не увидит никогда. Запилил нужное говно в классе и забыл. А когда о нем надо вспомнить - залез в класс и выдрочил его, без получасового поиска нужного женерик названия в документе.
Аноны, банальная ситуация: одно активити, несколько фрагментов, соответствуют пунктам в naviagtion drawer. У каждого фрагмента есть ui, и своя логика загрузки данных. Для загрузки данных используются методы стороннего апи (синхронные, либо асинхронные), и соответствующие им коллбэки. Есть 2 решения: 1) Захуячить setretaininstance(true) - но тогда надо смотреть, чтобы при доставке данных ui был доступен (как?), ибо при повороте он всёравно будет перерисовываться. 2) Не делать setretaininstance - но тогда придётся всю эту хуёню-малафью с методами апи оборачивать в лоадеры, что породит кучу огромных лоадеров с нехилым велосипедом.
>>625027 >1) Хранить подписки во фрагмeнтe с ретаэйном; >2) Хранить подписки в синглтоне Что не отменяет взаимодействия с ui при доставке. Надо как-то проверить, что ui доступен, особенно интересно, как это сделать во фрагменте с ретейном, где сам фрагмент не пересоздаётся, но ui перерисовывается.
>>625031 Нихрена не будет доставляться если ты отпишешься в onPause(). Ретэйн фрагмент умрет тогда, когда умрет активти, значит останавливай все. Ты не так понял ретейн фрагмент. Я имею в виду не UIшный фрагмент, а тот который просто висит в мэнэджере - UI не имеет. Так что смотри: UI фрагменты подписываются, отписываются, а ретейн держит сабскрипшены и вообще рулит процессом.
В MainActivity заменил модуль с MainActivity на "нужный_нейм", но приложение просто крашится, при этом создавал модуль в папке layout, короче говоря всё как у людей. В чём проблема?
Я вот не понял дроча на фрагменты. Они нужны в самой апликухе если есть переключения между пунктами меню например. Но нахуй окно логина вешать на фрагмент? С фрагментом работать намного хуевее чем с активити, как минимум из-за того что постоянно нужно смотреть привязан ли фрагмент к активити. В результате на каждый вызов ретрофита нужно прописывать ифы и так с любой асинхронной хуйней по сути.
>>625186 Что бы трекать сессиию например и другие похожие вещи. Да и проверок особенно не нужно если ты пишешь на диск, а фрагменты просто реагируют. Вот был бы нормальный колбэк как Application.onCreate(), только Application.onDestroy(), а так нужны костыли.
Сосаны, вот есть у меня aarник, но я хочу что бы его могли использовать другие люди, или я сам, но так что бы он не лежал как модуль в проекте, то есть взять грубо говоря vasyanliba.aar и вставить ее в рандомный проект, как сделать?
>>625314 Каким образом? Ну блять, подписка просто более правильный подход, но по сути все равно идет слежение за тем привязан ли фрагмент к активити.
На счет онДетача фрагмента, если убить процесс системно, онДетач не должен же срабатывать? Тогда каким образом можно следить за статусом пользователя? Ушел апликухой в бэкграунд, но еще в онлайне же, убило системой и онДетач скорее всего не сработает.
>>625455 Так я и говорю, что нет у апликэйшлна точного метода, когда все. Не знаю откуда ты он детач взял. А вот у активти есть, если ты убьешь процесс, то onDestroy() точно вызовется.
>>625474 >onDestroy() точно вызовется. Вообще-то нет, не вызовется. Я и подумал что ты хочешь сказать что при убивании процесса на фрагменте онДетач вызывается, но видимо нет.
>>619370 (OP) Ох, ебушки воробушки, аноны, как вы ебетесь с этими ведрами если тулзов адекватных и ускоряющих разработку гугол как не поставлял так и не поставляет? За что вы так ненавидите Xamarin? На ios разработка идет в лет, на ведро портируется в шум, если твоя аудитория это не носители говно-телефонов. Что не так?
>>625730 ну я имею ввиду что быстро фичи фичевать. Я не думаю я всякой низкоуровневой херне, которая в большинстве приложений нахрен не упала. Просто беру и юзаю из коробки то что есть и оно работает. Без глюков. Есть места которые надо напильничком подлатать - но таких немного. В основном ты пишешь бизнес-логику а не трахаешься с оптимизациями, куришь логи девайса, ковыряешь dSym итд На это же уйма времени тратится в нэйтиве
>>625744 >В основном ты пишешь бизнес-логику а не трахаешься с оптимизациями Это да. >>625744 Хз. Со студио не знаком, так что сравнивать не с чем, но хкод – это одна из самых уебанских разработок от Эппла в плане стабильности
Господа, если я хочу хорошо освоить SQLite, то мне нужно искать книгу по ней конкретно(если такие есть) или же просто брать книгу по SQL и по ней учить? Одно и тоже будет или же нет?
>>625930 Там есть разница, но SQLite попросту проще. Много чего нету, много что для галочки типы данных например и тд. Но всякие иннерджоины и тд аналогичны, так что пох на самом деле. Единственное что после обычной sql нужно будет почитать разницу чтоб не ожидать всяких убер фич и приемов.
>>625685 Ты только что сломал мои розовый очки. Действительно не вызвалось, но то был терминэйт мануальный. При более не менее нормальном поведении, то есть когда грохает система, но еще не так жестоко(don't keep activities) всем все вызывается.
>>626153 Android SDK тоже на Java, прикинь. Затащить любое .JAR дерьмецо можно быстрее чем это описано в туториале Xamarin, ибо понаписано плагинов для этого дела более чем достаточно. Все это превращается в пару раз тыкнуть мышкой в VS. Ну а рендер по сути это нативная обертка над любой вью. Там все пишется старым дедовским способом - как гугл завещал. В итоге я имею кнопку которая описана в кросс-платформенном лэйауте и которая имеет 1 вид на ведрах, и так же имеет другой вид на ios. При этом верстка не трогается. Я пишу её 1 раз и дальше подключаю необходимые эффекты если надо. Но большинство анимаций например из коробки есть. Если надо что-то вычурное - пишем сами или тащим либу
>>626261 Два дивана - это сила, называется. Бодишопы нужны аутистам, которые не могут в общение, и заказчикам, которые не хотят рисковать (энтерпрайз прежде всего).
Рейт $20 в бодишопе - это как минимум $10 на налоги (в отличие от хохлов, где все - ИП, в России за такое ебут), плюс офис (аренда, уборщица), плюс оплата труда хрюш, пинающих этих аутистов манагеров, тачку директору, хуе-мое, вот и $35-40 у заказчика. Заказчик тут платит не программисту, а за комплекс услуг. Заказчик тут - менеджер в каком-нибудь западном банке, у которого мысли о том, как он после 6 пойдет домой к жене, и ему гемор вообще не нужен, его интересуют формальные показатели и цифры, от которых у него зависит премия.
Напрямую платить $40/h заказчик за такой же скилл не будет, потому что бодишоп предоставляет услуги - он на себя берет риски того, что исполнитель может слиться, забухать, уйти на больничный. Поэтому, чтобы получать $40/h напрямую нужно развивать скиллы общения, наработать репутацию, что ты надежный и не сваливаешь на половине проекта, мучиться/наслаждаться с заказчиками не из энтерпрайза.
А столько же, сколько местным, платят только уникальным специалистам, когда гемор удаленки окупает пользу компании. Т.е. единицам. Обычно удаленность и отсутствие нативного английского уже подразумевает дисконт.
>>626250 Минуса есть. Иногда жестко тупит VS, приходится перезагружаться. Долгое время загрузки приложения, если не настроен линковщик, который должен уменьшать подключаемые библиотеки да и твой код тоже. И обновления в Xamarin это зло. Нужно очень долго работать с этой платформой чтобы вовремя обновиться без последствий. Да и то... Недавнее обновление например добавило в инсайты новых эксепшнов, которые раньше не возникали. Нужно точно знать номер стабильной версии Xamarin и библиотек Xamarin Forms. Ну и нельзя давать себе вольницу при верстке лэйаутов и фигачить высокую вложенность контейнеров и управлять их видимостью. Обычно в такие моменты вспоминаешь нативную работу с фрагментами, когда заменяешь один лэйаут другим в рамках одной activity. Это реализуемо в ксамарин, но расходится с парадигмой XamarinForms. Ну и опытный программист знает что на Xamarin списки из коробки неоптимизированны и есть отличное решение - отказаться от автоматических биндингов в ячейки и обновлять их ручками. Новички про это не в курсе и всегда когда получают глючное решение - ругают замарин. Может оно и объективно, но решение есть и оно даже на костыль не похоже. Работу с Http нужно организовывать не через стандартные немспейсы, а подключать либу которая работает с нативными инструментами - ибо работа в 2-3g сетях стабильнее. Вообще нельзя сказать что прям все работает из коробки, но магазин компонентов и Nuget полон самых разных решений. Если не надо делать что-то вычурное и необходимо это пилить на 2 а то и на 4 платформы сразу то Ксамарин самое то. Если нужно написать лаунчер какой или ещё что подобное - Замарин не ваш выбор однозначно.
>>626332 Время наш главный враг. В 1 рыло за месяц можно намутить добротный прототип на 3 платформы. Быстрота главное преимущество. Потому и денег стоит. Да и комфорт никто не отменял, я о многих вещах даже не задумываюсь, просто беру и делаю
Анон, помоги понять, чяднт. Пытаюсь прикрутить к приложению активити с гуглокартой, но, как только подключаю compile 'com.google.android.gms:play-services:8.4.0' всё отваливается и пидорасится, в логе только "Gradle build finished with 1 error(s) and 4 warning(s) in 2m 2s 280ms" а конкретику найти не могу.
>>626420 Плагин сервисов подключил? Попробуй только карты подключить и base (или core, если там есть, а то вдруг выдумываю). Проверь версию грэйдла и его плагина.
>>626459 Не помогает. >>626471 Вроде подключил. Если создать отдельный модуль, то всё работает, но почему-то при попытке вставить активити с картой в моё - валится.
Весь день ебусь, пиздец какой-то. Только что очередной раз добавил новую активити по шаблону гугломэпс, по ссылке создал ключ, вставил, запускаю, и снова Gradle build finished with 1 error(s) and 4 warning(s) in 1m 33s 994ms Если создавать с нуля апп и делать всё то же самое. то получается, а так - нет. Пиздец
>>626538 >Котаны, а подскажите, есть ли список полезных советов, каких-то фишек, которые бы экономили время и нервы? >Gradle build finished with 1 error(s) and 4 warning(s) in 1m 33s 994ms Используй линупс, там градл быстрее в разы работает. На моём ноуте в винде градл хэллоуворлд компилится за 10-12 секунд (с демоном, без демона однохуйственно, с демоном даже медленнее иногда почему-то выходило, хз, причём градл последний специально качал, а проебаться с настройками там сложно - их практически нет), а на линупсе (у меня centos 6.7, что для ведроразработки ещё и не самое оптимальное, приходилось вручную пердолиться с пакетами, которых в репозитории не оказалось) прямо сейчас запустил - первый раз раз 5.8 секунд (подрубился демон), последующие - меньше секунды (0.8-0.9)
>>626563 Кстати, сейчас специально ради тебя перекомпилировал свой проект. Первая компиляция (то есть, полная, с clean и всеми тасками градла) вышло 30 секунд. На шинде до 2 минут доходило.
>>619370 (OP) Привет пацаны! Как и многие решил угореть по андроиду, написал приложуху (афишу для местных кинотеатров) и заметил, что скролл не такой плавный как в приложении ВК.
Ради такого дела полез смотреть трассировку - если мотнуть экран вниз, то первое время все нормально (пик 1), но в какой-то момент все становится плохо (пик 2) и дальше лучше не становится. Во фрэйме, после которого все ломается, происходит "Expensive Bitmap uploads" Pixels uploaded "0.31 million", Time spent 11.750 ms, Upload 1038x300 Texture took 11.75ms. О каких текстурах идет речь я не понимаю, у меня даже при всех закомменченных ImageView такая же фигня.
>>626634 И хочу добавить что таких проблем как несколько постов выше с гугло-картами на замарине нет. Подключил за 2 минуты, расширил немного классец карт, добавил что надо и оно работает, компилится без всяких танцев с бубнами. Собсно за это фирма и деньги на лицензии платит
Ну и так по частям: 1) public class DataObjectHolder, почему не статик? 2) Этот OnCLikListener выглядит просто ужасно; Мне кажется легче в onBindViewHolder передать объект, который будет рисоваться во вьюхолдер и тогда нет нужды с этими кривыми хренями; 3) Есть подозрения, что все так хреново из-за RelativeLayout'a в корне иерархии;
>>626695 Код не мой, я другой анон но есть вопросы. >1) public class DataObjectHolder, почему не статик? Вообще правильно, мол чтоб мемори ликов не было нужно статик делать. Но логически я никак не могу понять каким образом в данном случае будет мемори лик? >3) Есть подозрения, что все так хреново из-за RelativeLayout'a в корне иерархии; Очень сомневаюсь в этом.
>>626695 > 1) public class DataObjectHolder, почему не статик? > 2) Этот OnCLikListener выглядит просто ужасно; Первое - это следствие второго.. Статик пришлось убрать, потому что myClickListener.onItemClick не получалось вызвать из статического объекта, а по-другому я не разобрался.
> Мне кажется легче в onBindViewHolder передать объект, который будет рисоваться во вьюхолдер и тогда нет нужды с этими кривыми хренями; Не совсем тебя понял, но мне кажется это дельный совет. Поясни, пожалуйста, подробнее.
> 3) Есть подозрения, что все так хреново из-за RelativeLayout'a в корне иерархии; В самом приложении нет релатив лэйаута, там вот так: http://pastebin.com/jjfBhMKx
>>626664 На эмуляторе такое же поведение, я трэйс в нем и сделал, в телефоне ядро без дебага собрано. Эмулятор у меня 5й версии вроде, на телефоне 4.4.2. Проблемы в обоих
Аноны, может быть проблема в том, что я в бете андроид студии 2.0 preview 4 пытаюсь работать?
>>626965 Аноны, я проверил, от версии студии тормоза по прорисовке не зависят. Кто-нибудь может проект с recyclerview и карточками у себя погонять и посмотреть, будут ли тормоза такие же как у меня?
Не понимаю как работает сборка мусора. Допустим, у меня есть Activity, с методом onResult. Activity создаёт другой объект, допустим Dowloader с помощью new Downloader(this). Downloader сохраняет эту переданную ссылку в поле mCallback. Внутри Downloader объявляется AsyncTask, который в onPostExecute вызывает mCallback.onResult(yoba). Вопрос: если в момент выполнения AsyncTask Activity будет убита, что произойдёт? Будет ли собран сборщиком объект Downloader? По идее объект AsyncTask будет иметь ссылку на родительский объект, значит ли это что он будет жить? Значит ли это что ссылка mCallback вмесие с Activity также останется жить? Если всё да, то какой нормальный выход? Сделать WeakReference mCallback? Сделать AsyncTask статик классом (и можно ли так)?
>Данный режим работает на базе технологии PowerXtend, фирменной разработки компании Lucidlogix. Он необходим для того, чтобы уменьшить энергопотребление системы в процессе запуска тяжеловесных приложений – таких, как сложных игр с серьезной графикой, браузера с множеством открытых вкладок, программ для навигации и т. п. PowerXtend позволяет в этом случае сэкономить до 30% емкости аккумулятора! На практике это выливается в несколько дополнительных часов использования мобильного устройства в автономном режиме
>Данный режим работает на базе технологии PowerXtend, фирменной разработки компании Lucidlogix. Он необходим для того, чтобы уменьшить энергопотребление системы в процессе запуска тяжеловесных приложений – таких, как сложных игр с серьезной графикой, браузера с множеством открытых вкладок, программ для навигации и т. п. PowerXtend позволяет в этом случае сэкономить до 30% емкости аккумулятора! На практике это выливается в несколько дополнительных часов использования мобильного устройства в автономном режиме
По-видимому, эта технология тупо ограничивает fps в приложениях. Вот какого хуя эта фигня считает мое приложение тяжеловесным я не понимаю...
Антоши, есть один AutoCompleteTextView куда адаптером загружаю элементы. Но происходит беда - они не умещаются на экране, а скроллбар не появляется, что делать?
Двач, у меня есть форма на активити, на одном пункте надо запустить другое активити, сделать там что-то, вернуться обратно с данными. Всё ок, но по возвращению вбитые ранее данные уничтожаются. Как лучше это сделать?
>>626638 Такие проблемы с картами должны быть у каждого. В результате их имеем у одного ньюфага. Так что и здесь проблем нет. Очевидно, что ксамарин привносит: 1. Тормоза 2. Новые баги 3. Хочет денег И в треде про разработку под android не имеет смысла обсуждать ксамарин, т.к. тут java справляется лучше.
Аноны, денёчка! Хочу сделать шапку для своего приложения, которая будет включать в себя пикчу и текст, со шрифтами, цветом и размером которого хотелось бы поиграть. ActionBar скрыл, в как это сделать Toolbar`е тоже не догоняю. Надежда на тебя, анон!
Аноны, поясните за проблему Есть activity (класс1 скажем) для экрана. На этом экране layout, на котором лежит imageview. Из этого активити по нажатию на кнопку должна запускаться анимация imageview.
Анимацию формирует другой класс (класс2). В этом же классе анимация и запускается для imageview. Анимация представляет собой AnimationSet, который в себя включает последовательность анимаций по перемещению imageview (TranslateAnimation), они идут подряд друг за другом, и на каждую из этих анимаций перемещения навешены листенеры, которые меняют картинку (пикрил1).
В чём проблема 1)нажимается кнопка 2)появляется событие в класс1 3)обработчик события кнопки в класс1 вызывает класс2, чтобы сделать анимацию и её начать выполнять 4)анимация в класс2 формируется, для imageview вызваю startAnimation(анимация). 5)!!!тут проблема. Я думал анимация сразу сработает, но сначала возвращается управление в класс1, в обработчик 6) как только по телу обработчика поток доходит до конца, только потом срабатывает анимация. то есть, поставив в обработчике thread.sleep(10000), анимация через 10 секунд только сработает.
У меня вопрос, почему сразу не срабатывает, и как запустить её сразу? Чисто визуально, программа работает нормально. Но мне нужно решить этот вопрос чтобы сделать ещё кое-какие фишки. Старался как можно понятнее объяснить. Без класса2 не обойтись.
>>627003 Система отцепит активити, но сборщик его не уберет, итого у тебя будут висеть активти, и другие объекты. Что бы так не случалось надо загружать по другому, тут два стула: 1) Отменять загрузку при смерти или даже паузе активти; 2) Писать на диск, а в UI реагировать на изменения; Тема старая и болючая, вот ссылочки https://docs.google.com/file/d/0B2dn_3573C3RdlVpU2JBWXdSb3c/edit, codeforces.com/problemset/status, но они уже прогнили, как говно мамонта, и есть новые модные решения из коробки и все говно. >>626965 Ну смотри вот мой код стандартного адаптера которым я пользуюсь (http://pastebin.com/vruYdEmA), присутствует в том или ином виде в трех приложеньках, хотя очень далек от идеала, так что use sparringly. Собственно все действо будет происходить в onBind(T data) потомков AViewHolder'a, а в констуркторе я обычно выставляю как OnClickListener (или еще какой) сам холдер. Заодно обосрите братушки.
>>627446 Зачем ты вообще пихаешь thread.sleep(10000) в анимацию? Для отложенного старта анимации есть метод... то ли сетДелей, то ли сетСтартТайм, короче в списке автоподстанова анимации что то такое поищи.
У меня вопросы к бывшим шарпоблядям. Есть тут такие? Какого это было перекатиться с шарпа на жабу? Стало лудше или хуже? Хотет перекатиться, ебошить под мобилки. Заебал дотнет. Тут либо хуячить сайты, либо хуячить нативные приложения, которые нужны только секретаршам.
>>627577 Мне понадобилось снова что-то на C# написать: так непривычны эти свойства в шарпе. Порой листаешь список методов и ищешь, где же там getХуйня()
У меня еще один вопрос назрел по поводу переката с .NET на андроид. Разница в ЗП при перекате. На дотнете я щас что-то между мидлом и сеньором, но получаю хуево, т.к. контора говно. Если я щас быстренько освою разработку под андроид, мой перекат, в плане зп, будет мягким? Или нубы вообще нихуя не получают?
>>619370 (OP) А что это в шапке нет ничего про Kotlin? IntelliJ IDEA его поддерживает (и Android Studio, RoboVM Studio тоже)
Kotlin - язык 2011 года разработки, совместимый (в обе стороны) с Java Из коробки поддерживает: проперти, лямбды, экстеншем методы (как в C#), нормальный дженерик, перегрузку операторов (+,- и тд), в нем НЕТ checked исключений. В общем очень похож на scale, но проще и всего +400kb к размеру APK (с proguard будет меньше)
RoboVM + Kotlin - отличная замена Xamarin (C# 2001 года уж смотрится архаично по сравнению с Kotlin)
>>628444 >Под Android и iOS (RoboVM - выходит дешевле через Xamarin ) Вот тут не понял. Так что дешевле выходит? И почему? Явно ксамарин по логике вещей должен быть дешевле.
Алсо поясни за робоВМ. Я так понял если ксамарин дает возможность писать одинаковый код на иос и андроид, то что с робоВм какие плюса и минуса? Да и какую иде юзать и тд.
>>628434 Оп в треде, т.е. создатель шапки. Ну на нем можно писать, но тут такой вопрос, как с работой? Я так понимаю что он хоть и может скомпилиться в жабу, но это же дженерик код в любом случае, разве нет? Вообще и сам думал о котлине какое-то время.
Оставь контакты какие-то на будущее. Очень интересно пообщаться с человеком пилящим под две платформы.
>>628434 Еще одно хипстерское говно без задач. Не будет по нему столько материалов как есть по разработке для ведра на джаве, когда на любой тупой вопрос дает ответ первая ссылка в гугле. "Вместо function можно писать fun, оставшееся время которое Вы бы потратили на дописывание ction можно затратить на зазубривание всего говна, которое мы запихнули в наш язык, вроде объявления переменной 15 разными способами!"
>>628534 Ну тут хуй знает на самом деле, я вот хотел бы увидеть как котлин в жабу компилится. Просто если оно взаимозаменяемо то похуй. На котлине и вправду может быть удобнее писать.
>>628547 Еблантий, какие тебе нужны материалы по Котлину как на джаве, если он использует жаба-инфраструктуру? Описание языка -на оффсайте, вопросы по ведру - в гугле.
>>628465 >Явно ксамарин по логике вещей должен быть дешевле. Я имел ввиду саму подписку: 25$/мес = Android+iOS+Continuous Integration (в Xamarin для CI нужна минимум Business подписка)
Время разработки примерно как в Xamarin (на Xamarin Forms все таки быстрее, но имхо это зашквар)
>Алсо поясни за робоВМ По факту RoboVM это тот же Xamarin, только вместо mono там java-virtual-machine. Поддержки WP нет, но блин если бы в Microsoft не отказались от проекта Astoria, можно было бы запускать и на WP.
>Да и какую иде юзать и тд. RoboVM (сделана на базе IntelliJ IDEA), а можно как плагин подключить к AndroidStudio или IDEA (но нужна более дорогая подписка)
>как с работой Не знаю, пока работаю в небольшой компании - тут приходится вертеться для разработки приложений под разные платформы. Вакансии пока не искал.
>>628534 Вот он >>628581 прав - kotlin это только язык, он использует стандартные классы Java/Android API
>>628540 Код на Kotlin компилируется прям в java-bytecode. Байт код поддерживает описание классов, вот они то и видны со стороны java.
Пример на картинке: В IDEA можно посмотреть представление любого Kotlin класса в байт коде. Тут видно, что для пропертей генерятся get/set и что все методы/классы по умолчанию final.
>>628721 >если бы в Microsoft не отказались от проекта Astoria, можно было бы запускать и на WP Кстати провожу исследование "можно ли портировать часть Android API на обычную Java". Это нужно чтобы запускать Android приложения на WP10 (вместо проекта Astoria) и просто на Window/OS X/Linux без эмуляторов (к примеру для отладки).
Может быть кто нибудь захочет присоединится?
P.S. Я знаю что у Google есть расширение к хрому которое примерно это же делает.
>>628785 >Та понял что в байткод, но как в джаву превратить этот код? Никак, зачем это?
Вот ты когда подключаешь .jar библиотеку там же нет .java файлов (там только .class байткод), но твой проект как-то видит классы от туда и может их использовать. Так и здесь.
Есть аноны которые пишут в Xamarin? Т.к студентота взял на dreamspark подписку на год. Есть желание выучить c#. Хочется совместить обучение с практикой создания мини-прог для ведра. Шилдт подойдет?
Перегрузка операторов в Kotlin к примеру позволяет 1) Складывать два BigDecimal через +, а не через метод add() JAVA: BigDecimal sum = new BigDecimal(2).add(new BigDecimal(4)).add(new BigDecimal(8)); KOTLIN: val sum = new BigDecimal(2) + new BigDecimal(4) + new BigDecimal(8) с экстеншен методом можно еще так val sum = 2.bd() + 4.bd() + 8.bd()
2) Добавлять оператор [] к спискам, сеттам, словарям (а не только как в Java в массивах) и вызывать не только по int, но вообще почему угодно (к примеру Sting) KOTLIN: val map = HashMap<String, String>() map["string-index"] = "string-value" val result = map["string-index"]
3) Сравнивать через a > b (a < b, a <= b и тд) любые объекты с методом compareTo()
>>628928 На самом деле синтаксис как в 90% современных (не строго функциональных) языках, типа Scala, Groovy. Тот же Swift очень похож на Kotlin (хотя и появился на пару лет посже)
>>628960 >1) Складывать два BigDecimal через +, а не через метод add() >3) Сравнивать через a > b (a < b, a <= b и тд) любые объекты с методом compareTo() Да похуй как-то.
>2) Добавлять оператор [] к спискам, сеттам, словарям (а не только как в Java в массивах) и вызывать не только по int, но вообще почему угодно (к примеру Sting) Выглядит как пиздец.
>>628959 >Это типа у них свой град? Это типа концепция, когда на удаленном сервере (типа Jenkins/Hudson/Team City), при каждом коммите в репозиторий: 1) Автоматически собирается новый била (у него прославляется версия) 2) Запускаются юнит-тесты 3) Всем заинтересованным людям на почту рассылаются отчеты о сборке/тестах 4) Если предыдущие пункты успешны, то тестировщикам рассылаются готовые билды
В случае ошибки ты сразу понимаешь после какого комета она произошла, плюс экономия твоего времени.
Через gradle, maven, ant, msbuild - абсолютно пофиг (хоть через bash скрипт)
>Ну так не ищи, пиши на Java А перепиливать существующие классы как, я тебя спрашиваю? А так хуй знает, я бы переехал на котлин, но как минимум у нас его редко юзают. Хотя за бугром может и чаще, все топ либы имеют примеры на котлине.
>>628960 Все "фичи" намекают на то что эта параша создавалася для js-макак, чтоб они слезли с дерева и начали уже пилить хоть что то полезное без необходимости переучиваться на нормальный яп. Не зря еще трансляция в жс присутствует.
>>628985 > Перегрузка операторов - это способ сделать код короче и более читаемым. Слишком сложно для индусов же.
"Всего, чего нет в жабе, автоматически объявляется хуитой, как только это появляется в жабе, это автоматически становится нехуитой. При этом, требуется сделать вид, что хуитой это называл кто-то другой." (c)
>>628985 >им предлагают жрать говно, это модно и полезно >не жрут
>>628998 Тут тред про ведроид. Зачем тащить в ведро функциональщину и перегружаемые операторы, если миллиарды приложений и игр успешно сделаны без этого?
• Определение типа переменной самим компилятором var a = File("/file") // a - типа File var b = HashSet<String>() // тип b HashSet<String> если нужно явно задать тип, то это делается так var c: Set<String> = HasрSet() // второй раз дженерик указывать не нужно
• Защита от NullPointerExcaption (NPE) на уровне языка Все типы могут быть в двух состояниях: nullable и not-nullable var a: String = "" a = null // НЕ скомпилируется a.toString() // скомпилируется
var b: String? = null b = null // скомпилируется b.toString() // НЕ скомпилирует b?.toString() // скомпилирует, если b == null, то toString() не вызовется b!!.toString() // скомпилирует, если b == null, то произойдет NPE
• Отдельные типы для изменяемых коллекция (MuttableList, MuttableSet и тд) и неизменяемых (List, Set, Map и тд) В неизменяемую коллекцию нельзя добавлять новые элементы (компилятор не разрешит)
• Нет оператора new var s = FrameLayout(this, null)
• Неизменяемые (val) и изменяемые (var) переменные var a = "alice" a = "bob"
>>629019 >Тут тред про ведроид. Зачем тащить в ведро функциональщину ... Что я понял за почти пять лет разработки под Android: 1) Бесполезно сражаться с будущем Kotlin объективно удобнее и на него все перейдут, ты можеш сделать это чуть раньше.
Альтернативы пока нет: • C#, Scala, HTML5 - слишком тяжелые для Android • (слухи) У Google пока только в планах перейти на OpenJDK для поддержки Java 8
2) Чем меньше напишешь кода сегодня, тем меньше его переписывать (читать) завтра Kotlin позволяет писать короткие и понятные программы. Может быть тебе это не нужно, ты написал и забыл, но крупные мобильные проекты поддерживаются годами.
>>629019 Зачем вообще создали жяву, если миллионы приложений на C++ и без того нормально работали? Зачем вообще создавался C++, если сотни тысяч приложений на си, фортране и коболе нормально работали? Зачем вообще всё это говно создавали, когда программы на вм Бэббиджа нормально работали?
>>629035 1) Вот когда будущее наступит тогда и приходи. Продал родину за возможность не писать точку с запятой, пидор.
2) Программы получаются короткие, но нихуя не понятные. a + b - b - a -> foo(bar() <- hui : pizda) = c, и сиди разбирай чего добивался этим высером хипстер, работавший до тебя.
Знаешь, /зк, по-моему, я схожу с ума... Дело в том, что иногда по ночам мне кажется, что я яваблядь. Мне хочется выделять память, зарабатывать на доширак, пиздеть про энтерпрайз, сваливать свои проблемы на чужие плечи и писать нечитаемый бессмысленный говнокод. Я ворочаюсь, страдаю, рычу, а под конец вскакиваю с кровати и хватаю первое, что попалось под руку. Это может быть тапок, топор или простая поварешка, но в моем воображении она становится огромным прожорливым интерпретатором. С этим интерпретатором я открываю корпус сервера, ставлю ещё две планки оперативной памяти и с громким боевым кличем выбегаю на улицу. Я бегаю под окнами своих соседей и ору: "Ява не тормозит, тупые нищебляди!! Купите нормальное железо!!" Но они не покупают... Они привыкли. И когда я уставший, но довольный, поднимаюсь в квартиру, наоравшись и набегавшись, одна из дверей открывается. Там, лукаво сверкая глазенками, стоит маленький соседский мальчик Женька. Он громко шепчет беззыбым ртом "Клоссплатфолменность!" и ободряюще мигает мне одним глазом. Я, улыбаясь ему, прохожу мимо, и в душе моей поют заказчики. А дома я открываю бутылку водки, морщась, выпиваю ее до половины, и ловлю кота. Ругая этого "сраного волосатого индуса", я сажаю его за клавиатуру, и чтобы он не убежал, приматываю его к ней скотчем. А дальше все просто. Я стою у окна, пуская скупую быдлокодерскую слезу по своей прыщавой щеке , и мечтаю. Я представляю, что огни домов -- это пламя костров, на которых сжигают крестопидоров, шум машин -- это рев кулеров в серверных, а в мире нет ничего, кроме великого энтерпрайза и нас, яваблядей... И я жду, что вдруг, вот сейчас, в мою дверь войдет начальник и скажет: "Эй, раб, ты чо так так долго? Давай, быстро дописывай исходник. Похуй, если будет тормозить - разберутся те, кто будет сопровождать! ГА-га-га-га!" И ободряюще хлопнет меня по спине. И тогда не будет в мире счастливее человека, чем я... Точнее, явабляди. Что же мне делать, анон? Что же мне делать?
>>628960 > Перегрузка операторов в Kotlin к примеру позволяет С++ один из моих нелюбимых языков. Одна из основных причин - наличие этой самой перегрузки операторов. С этой хуитой логичность и интуитивность кода резко снижается, появляется необходимость изучения того, что делают эти операторы, а это порой пиздец как не логично. Это высокая цена за сомнительное удобство. Всего лишь сокращение когда в ширину, не более.
>>629153 > Я так понимаю Clojure, Scala, Groovy, Ceylon, C#, Python, Ruby тебе по тойже причине не нравятся? Я на них никогда не писал, так что не знаю. Но если там такое есть - то, пожалуй, да.
>>629156 >А вот то, что строка не может быть null - реально хуёво Может если ты поставишь ей тип String?, а не просто String (но тогда тебе придется расхлебывать случаи NPE самому)
В той же Java 8 ввели тип Optional<T> для разруливания таких ситуаций, но только для его использования нужно туже строку постоянно заварачивать/разварачивать в/из него.
>>629146 Ну поясни, что именно такого непонятного, неосилятор. В плюсах можно перегружать ограниченное кол-во операторов, в отличие от той же скалы и прочих, позволяющих создавать свои.
Вот есть у тебя класс, с перегруженными операторами сравнения. Как от этого испортится понимательность кода? Не даст тебе, ваську, отделить примитив от объекта?
Java vs KotlinАноним19/01/16 Втр 15:36:40#354№629166
>>629163 Непонятно, что >/< это compareTo. А может и вовсе нет. Тогда как название метода точно отражает суть операции. Так что да, приписывать структурам данных операции с примитивами - хуёво.
>>629167 Суть в том, что сравнивать объекты по значению без перегруженных операторов тебе не позволит ни один язык ну в сишечке такие как ты любят сравнивать адреса указателей :)). Если у тебя код вида Hui hui1, hui2; .. if(hui1 > hui2) Абсолютно очевидно что здеся должно происходить. Если не очевидно - ты не знаешь языка.
>>629174 > Блин как сложно объяснять это тем кто не видел ничего кроме Java. Откуда ты знаешь, какие языки я видел и не видел? Ну кроме моего ответа на тот список выше, что не достаточно для таких заявлений. > (а ты даже не знаешь что это). И это хорошо. Я не занимаюсь изучением новых языков просто "по фану", мне это неинтересно.
>>629178 Выучить больше одного языка это непосильная задача для анонимуса? (я неспешно выучил за пару дней, просто смотря youtube)
Плюс как в iOS ты можешь миксовать Object-C + Swift, так и Android ты можешь смешивать Java + Kotlin (он для того и разрабатывается что бы медленно переводить большие проекты на современный язык, а не переписывать их с нуля)
>>629180 >Откуда ты знаешь, какие языки я видел и не видел? Ну по крайне мере я там перечислил почти все JVM языки + популярные сейчас в IT
>Я не занимаюсь изучением новых языков просто "по фану", мне это неинтересно Странно я думал программисты любят узнавать новое, расширять кругозор (по крайней мере молодые). И вот зря, из других языков можно черпать интересные концепции / подходы / целые паттерны.
>>628985 Имелось ввиду что это нововведение не дает нихуя. Ну правда я думаю в котлине есть что-то лучше чем перегрузка операторов. Обычный синтаксический сахар, да и не самый полезный.
>>629025 >Все типы могут быть в двух состояниях: nullable >и not-nullable >var a: String = "" >a = null // НЕ скомпилируется >a.toString() // скомпилируется А как мне дать понять что объект мне больше не нужен?
>>629186 > Ну по крайне мере я там перечислил почти все JVM языки + популярные сейчас в IT Далеко не все, не надо так. К тому же область применения этих языков слишком разная, андроид-программисту питон нахуй не нужен, например. > Странно я думал программисты любят узнавать новое, расширять кругозор (по крайней мере молодые). Я как-то вырос из этих игр. Язык изучается по необходимости. До тех пор я сосредоточен на задаче, а это всегда интереснее.
>>629166 Чой-то на котлине нету выбора геттер или сеттер делать? А вообще стандартная генерация этой хуйни. Опять не сильно нужный синтаксический сахар. Лучше бы на стримы и лямбды из коробки давил.
>>629188 >>629187 >>629195 Ебать ты дефектное. >Я как-то вырос из этих игр. Язык изучается по необходимости. До тех пор я сосредоточен на задаче, а это всегда интереснее. Так и скажи: а) я джявист в синей рубашке, кроме жявы ничо не знаю; б) я нюфаг с ловкими маняврированиями.
>>629198 Я другой анон. И первый вопрос меня действительно интересует. >А как мне дать понять что объект мне больше не нужен? Вот даже повторил тебе уебану. Сделал я глобальную переменную, тот же битмап. Но вот он мне не нужен. Каким хуем я обнуляю ссылку на него?
Я даже за котлин, много синтаскического сахара и намного лучше чем апач хармони который хуже обычной джавы. Но ты отбиваешь все желание своим петушьим поведением.
>>629187 >Обычный синтаксический сахар Вот это точно не СХ: • концепция not-nullable типов • immutable объекты и колекций • мощный type inference (в Java тоже над этим работают, в 8 гораздо лучше стало)
>>629188 >А как мне дать понять что объект мне больше не нужен А зачем? Может ты не в курсе но в Java есть Garbage Collector. GC и так его очистит когда он больше ненужен будет.
Только не говори что ты в Java переменные и филды зануляешь для экономии памяти. (А если тебе это нужно делай их nullable var a: String? = null)
>>629198 > Так и скажи: > а) я джявист в синей рубашке, кроме жявы ничо не знаю; > б) я нюфаг с ловкими маняврированиями. Почему меня цитируешь, а ссылки не на мои посты? Я тебе уже всё сказал. А иметь разговор с человеком, который первым делом переходит на личности и додумывает за собеседника, мне совершенно неинтересно. Всего хорошего.
>>629207 >>629215 Ты не забыл что это анонимный форум, тут сразу насколько анонов отвечат.
>Сделал я глобальную переменную, тот же битмап. Я не ругаюсь, но начнем с того, а зачем ты сделал его глобальной переменной (не очень реалистичный пример)
Неизменямыми объектами нужно делать то что тебе нужно на протяжение всей работы (в этом их смысл) и ты не хочешь словить NPE
Повторюсь сделай его тогда изменяемым: MyGlobalBitmap: Bitmap? = null
>>629211 Сказал А говори и Б. Так блять с таким успехом ты мог просто дать ссылку на доку не? Нахуй вбросы кусков кода вообще? Все в доке же. >>629220 >Я не ругаюсь, но начнем с того, а зачем ты сделал его глобальной переменной >(не очень реалистичный пример) Ой да ладно. У меня идет генерация на карту двух картинок на которых я рисую. Т.е. я подтягиваю два битмапа шаблона в хендлер, и с них уже делаю битмапы для рисовки. И да это быстрее чем тянуть иммутейбл битмап с диска а потом делать его мутейбл.
>>629215 >А зачем? Может ты не в курсе но в Java есть Garbage Collector. >GC и так его очистит когда он больше ненужен будет. А в котлине гарбадж коллектор читает мои мысли? >Только не говори что ты в Java переменные и филды зануляешь для экономии памяти. С битмапом это довольно важная хуйня. Да и это нормальная практика для сложных обжектов. Те же адаптеры с фрагментами. Но кому я блять объясняю.
>>629222 >Так блять с таким успехом ты мог просто дать ссылку на доку не? Нахуй вбросы кусков кода вообще? Все в доке же. А нахуй вообще что-то самому делать? Может мне за тебя подрочить и зубы тебе почистить?
Сосаны, я так понял что бы получить внешний IP адрес девайса нужно обязательно спросить какой-то сайт, типа www.whatismyip.com . А то вроде попробовал почти все решения, а они выдают что-то уровня 192.168.1.104 или 10.0.1.2
Пример метода принимающего лябду: fun execute(a: Int, b: Int, c:Int, operation: (Int, Int, Int) -> Int) { return operation(a, b, c) // лямбду вызываешь как обычный метод }
Пример вызова этого метода: execute(1, 2, 3, { a, b, c -> a b c }) Если лямбда последний параметр то можно: execute(1, 2, 3) { a, b, c -> a b c }
Стримыhttps://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-list/ В отличие от Java для базовых операция над коллекциями не нужен специальный класс Stream тк есть нормальные extensions-методы (в этом плане Kotlin ближе к C# с его Linq).
val z = listOf(1, 2, 3, 4) .map({ s -> 2 s }) // эти три строчки идентичны .map { s -> 2 s } // эти три строчки идентичны .map { 2 * it } // эти три строчки идентичны .filter { it >= 16 } .sum()
>>629331 Так толку? По-факту из ваябл только ксамарин и 4 технологии на джаваскрипте. РобоВм на хуйдой конец. Котлин как бы вообще язык и к технологиям выще не относится и юзает стандарт сдк. Все.
>>629331 А ну и база даных либо SQLite либо Реалм.ио.
А вообще можно делать подобное дерево по всяким либам. Типа ормки или многопоточка. Но тут мне опыта не хватит запилить нормальный обзор. Та и мало у кого вообще хватит. В основном пересказываем статьи и тд.
>>629435 Берешь cupboard либо любую орм и не ебешь нам мозги. ЕнтитиФреймворк как раз орм может и нет но это надстройка уровня орм >realm.io Вообще база на плюсах и отдельный разговор. >ormlite Вот уже ближе.
Я хуй знает чем тебе орм не понравился, впадлу прописать строчку которая отдаст коллекцию обжектов?
>>629373 Ну не скажи. Удобно, готовишься такой с собеседования, открываешь эту майнд-мап и идешь по каждой ветке, по каждому названию, если понимаешь что сможешь минуть 20-30 рассказывать про эту тему взахлеб, значит наверно знаешь про что речь.
>>629444 1) сравни, пример с сайта: realm.where(Dog.class).equalTo("name", "Rex").and().equalTo("city", "Moscow").findAll()
2) против (так я работаю со List<Dog> в Kotlin): Dogs.filter { it.name == "Rex" && it.city == "Moscow" }
3) В EnityFramework7 это будет: Dogs.Where(s => s.name == "Rex" && s.city == "Moscow")
(2) и (3) почти идентичны, вот так должны белые люди делать запросы к базе.
P.S. Еще и имена полей в билдере пишутся прям строкой ("name"). Можно конечно константой, но лучше не станет.
P.P.S. Извинити что отвлек, просто я через это уже прошел (ormlite, ef). Сейчас мне легче хранить (серелизованные) данные в файлах чем мучится с sqlite схемой.
>>629464 >realm. Так это уже трабла риалма а не всего остального. На cupboard выборка более стандартная вроде. Но там не будет как на шарпах, так как джава этого не позволяет пока. >в Kotlin Куда ты котлин еще припаял? Я уже не понимаю что ты хочешь. >В EnityFramework7 это будет: Это лямбдой будет. С переопределенными операторами. Удобство уровня я ебу.
Ты еще доебись что в джаве дженерики не такие красивые и юзабильные как в шарпах, чего уж там.
>чем мучится с sqlite схемой Мучится? Сириусли? Орм ему не нравится, со стандартной работой sqlite ему мучатся. Может ведро не твое тогда? Ладно еще соглашусь что описывать все без орм реально долго, особенно с контент провайдером. Но орм облегчает тебе жизнь, а то что ты пытаешься доебаться до джавы в которой мало синтаксического сахара приводя в пример язык блять 2013 или когда там котлин релизнули года и шарпы которые в принципе моложе и главное не имеют обратной совместимости.
Наткнулся на апликуху, которая в определенных апликухах добавляет свой маленькую кнопочку. Попросту поверх активити апликухи. Я даже никогда не слышал про подобное. Подскажите в какую сторону смотреть?
The Busy Coder’s Guide to Android DevelopmentАноним20/01/16 Срд 00:31:19#418№629657
Сап, андроны. Полистал я эту вашу The Busy Coder’s Guide to Android Development, годнота годнот. Но в интернетах одно старье, хотя автор уже запилил 7-ую версию с SDK6.
Сходил я на https://commonsware.com/warescription, годовая подписька (включает все обновления) стоит СОРОК ПЯТЬ БАКИНСКИХ, что в новых реалиях слишком дохуя. В связи с чем предлагаю скинуться. Заявки принимаются неделю (до 27.01) по адресу: [email protected]. Указывайте потолок, который готовы выложить (лично я готов потратить $5-7 из своих $19 стипухи). Если есть знакомые ведродевелопы -- зовите.
Все принявшие участие будут получать обновления как только они будут выходить (или пока какой-нибудь крысакун не скинет книжку в сеть и нашу подпиську аннулируют -- лицензии у книжки именные.)
Я пока ньюфаг и тут у меня мысль проскочила. Вот я учу: 1. Java Core 2. Собственно конкретно разработку под андроид 3. SQL Неужели на этом все? Ну то есть обычно в большинстве ЯП для работы надо знать пачку фреймворков и сопутствующих технологий. А что с андроидом, что еще надо знать в добавок к тому что я перечислил, что бы быть нормальным разработчиком?
>>629786 Клиент-сервер, JNI, etc. Зависит от того, чем ты будешь заниматься. Фреймворков действительно толком никаких нет, а те, что есть - уже совсем далеко от джавы (типа хамарина).
>>629786 Уверяю не все так просто. Тулить говнокод ты сможешь, но в ведре проблема с постоянной обновой сдк и постройкой ровной архитектуры. А это внезапно самое сложное.
>>629895 >>629626 1) Тебе нужна будет пермишен (в AndroidManifect) <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2) Берешь WindowManager (обязательно у Application, тк активити его перегружает) WindowManager wm = getContext().getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
создаешь View которую будешь показывать поверх других окон (это обязательно должно быть View, с активити/фрагментом это не прокатит) Button myButton = Button(this);
создаешь специальный WindowManager.LayoutParams и проставляешь им тип TYPE_SYSTEM_ALERT WindowManager.LayoutParams lp = new WindowManager.LayoutParams(...) lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT // вот это самое важное
Добавляешь свою View в WindowManager wm.addView(myView, lp)
>>629923 >Так и не понял зачем он нужен. замена json/xml с высокой скорость кодирования
>Ты их в проектах юзаешь? Да, тестами покрывать надо и Android приложения
>риходится делать особенную архитектуру и тд? Читал что с тем же даггер2 лучше. По моему ты слегка запутался, Dagger2 это фреймворк для DI. Ты можешь через него моки подставлять, но для их создания тебе как-раз нужен Mockito. JUnit это вообще движок для написания тестов (перепутал слегка название с C# NUnit)
Вообще мне эти dagger2 (roboguice) уже надоели, сейчас у меня период ручного подставления зависимостей в конструктор.
>>629543 > Куда ты котлин еще припаял? Потому-что всю Java-хуйню как-раз исправляет Kotlin. Но даже с ним как-то лучше не становиться в плане удобства работы с базой.
>Может ведро не твое тогда? Четыре года опыта на android, чуть меньше в ios, wp, xamarin, robovm - все время ищу ИДЕАЛ для удобства разработки.
>Ладно еще соглашусь что описывать все без орм реально долго Ну хоть в чем-то мы согласны. Наверное и тебе через пару лет надоест каждый раз писать однотипный код, когда есть отличное API (лямбды/Stream) для работы с коллекциями.
>>625711 > За что вы так ненавидите Xamarin Платная хуйня + сайту видно, что они в первую очередь хотят впарить свой продукт менеджерам, а не разработчикам.
>>629964 >Ну хоть в чем-то мы согласны. Наверное и тебе через пару лет надоест каждый раз писать однотипный код, когда есть отличное API (лямбды/Stream) для работы с коллекциями. Вполне может быть. Но меня больше беспокоит дырявость самого ведра. Говно лезет практически отовсюду, новая версия ведра = новые саппорт либы = новые баги. Сидишь просто дрочишь стековерлоф 24/7 вместо того чтоб код учится писать.
>>629961 >замена json/xml с высокой скорость кодирования Понял спасибо, правда не особо пока юзабилити понимаю. Но почитаю на досуге.
>Да, тестами покрывать надо и Android приложения Только рад бы, правда еще не умею, так как не приходилось делать/ та и в шею гонят постоянно. Алсо, если можешь поделится каким материалом по сабжу будем рады, пора шапку обновлять уже знаниями поглубже. >По моему ты слегка запутался, Dagger2 это фреймворк для DI. Ну так разве DI не требует особой архитектуры? >JUnit Ага стандартный джавовский.
Алсо, почему-то попадаются разрабы которые клали и на DI и на тесты, какбуд-то бы даже не пытаются что-то новое выучить. Хуй что вытянешь из них.
>>629964 >Четыре года опыта на android, чуть меньше в ios, wp, xamarin, robovm - все время ищу ИДЕАЛ для удобства разработки. Мне стойко промывают мозги что иос попросту лучше для самого разработчика чем ведро? Так ли это как думаешь? Все кричат что разработка быстрее, меньше багов и подводных камней. Сам не пробовал так как ни мака ни гейфона, а ебенить через виртуалки не хочу.
>>629990 Да, на иос легче. Там в разы меньше ебли с жизненными циклами. У меня друг полную хуйню говнокодит вплоть до описания сетевых запросов прямо во вьюконтроллерах. При этом нихуя не падает и все ок.
>>630003 >У меня друг полную хуйню говнокодит вплоть до описания сетевых запросов прямо во вьюконтроллерах. Так с ретрофитом так и делают, в колбеках удобно с UI работать, враперы только мешают.
>Да, на иос легче. А чего с концами не перекатился тогда?
>>629990 На иос меньше фрагментации, не нужно выяснять, почему твое приложение глючит на нонейм поделке от китайского Васяна стоимостью 1000р. И не нужно делать дизайн под миллиард разных разрешений экрана.
>>630015 >Protobuf >Thrift/Avro/Hessian гораздо лучше сорт оф отличных фрейморков для серилизации
>>629990 По последней статистике (пруфы потерял) разработка на Android это +30% к времени на iOS (с учетом тестирования и багфикса) А вот по моим наблюдениям (пару лет назад) скорость разработки (в нативе) примерно одинаковая
С появлением Swift (наверно) разработка под iOS станет еще удобнее/быстрей. И кстати Swift на 90% по синтаксису схож со Swift (те же var/val, non-nullable типы, лямбды, перегрузка операторов, stream-подобный синтаксис работы с коллекциями т тд)
>>630054 >С появлением Swift (наверно) разработка под iOS станет еще удобнее/быстрей. Да хуй знает, у меня пока написание кода занимает намного меньше времени чем дрочь с подводными камнями и проектирование моего говнокода.
>>630061 Лолшто. Они похожи системой типов с ? и !. Остальные фишки вроде паттерн матчинка и остального синтаксиса были в куче языков ещё 10 лет назад.
>>630064 Дык оно всегда так было и будет. Для этого обычно сначала прототипируют всё на скриптопараше в процедурном стиле и используют всякий mindmaps.
>>630091 Вообще, говорить что кто-то у кого-то что-то там спиздил - не очень политкорректно, лучше писать как написано на вики - "испытал влияние". >Да и вообще все современные строготипизированные и мультипарадигменный языки очень похожи. Я тебе больше скажу - почти все языки вышедшие в один промежуток времени очень похожи на свои однонишевые аналоги.
Помогите, запутался в версиях Support Library. Прочитал на so, что v7 либа включает в себя v4, то есть если используешь v7, то v4 не надо подключать. Однако там же прочитал, что если используешь v4, то надо ставить minSDKversion - 4, а если используешь v7 support library, то надо ставить minSDKversion - 7. Но если v7 включает в себя v4, то по логике же я могу ставить minSDKversion - 4? Или нет? Запутался уже.
>>630411 Точнее надо, конечно, но такой, какой нужен тебе. Смысл в том, что если ты пользуешь фичи конкретно семерки, то то и минсдк должен быть больше либо равен 7. Сейчас вообще вроде бы почти все ставят 15. Фэйсбук точно.
>>630347 >v4, v7 Ты ебанутый? Сейчас никто не ставит меньше 15, даже Android Studio (AS) при создание нового проекта подставляет 15.
>v7 либа включает в себя v4 То что у v7 есть зависимость на v4 не значит что она может работать с API 4
>Но если v7 включает в себя v4, то по логике же я могу ставить minSDKversion - 4 Ну формально наверное можешь (если AS позволит), только тогда ты не должен использовать никакой функционал из v7, а только v4
>Ты ебанутый? Сейчас никто не ставит меньше 15, даже Android Studio (AS) при создание нового проекта подставляет 15. Ну а если я пойду на работу и мне скажут пили проект с мин. апи7 или еще ниже. Я же не скажу им "вы че ебанутые? 15 поставлю и хватит", вот и разбираюсь в этих суппорт либах.
Ребята, Java не знаю. Из опыта только Си немного и всё. Как правильно вкатится? Что читать по Java? Насколько глубоко в Java окунаться? Когда надо с изучения Java переключится на вникание в Android?
>>631142 >>631136 ОП в треде, заебала уже платина эта, сделаю вам новую шапку с пояснением для ленивых хуев блять.
Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush. Можно эккеля "философия java" почитать. Что тебе нужно понять в самой жабе. Энтри лвл. 1) ООП - сам принцип нужно именно понять, так как ооп язык. 2) Типы данных. Примитивы и ссылочные. 3) Структуры данных - Массивы/коллекции - без них никуда. 4) Классы/интерфейсы и все вытекающие. Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.
Дальше 5) Потоки ввода/вывода (streams). Не путать с тредами(threads). 6) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable. 7) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной. Уже сделаешь что-то нормальное.
Дальше. 8) Работа с Sqlite, нужна будет в любом случае. 9) Почитать про json. Привет клиент-серверка.
>>631180 > Типы данных. Примитивы и ссылочные. Сюда же алгоритмы добавь. Чтобы в общих чертах понимать принцип работы LinkedList, HashMap, понимать разницу между HashMap и LinkedHashMap, сортировку, очереди, ну и так далее.
>>631197 >А работу ты мне давать будешь по котлину? А ты знания только для работы получаешь? Само программирование тебя не интересует? Боюсь что с таким подходом к делу, тебе не стоит становится программистом. (хотя php возможно для тебя)
Кстати, к тому моменту, как ты закончишь школу универ, все уже будут писать на Kotlin.
>>631203 У AS есть преимущества: + дополнительная статистика (gpu / network) + data binding + в версии 2.0 будет ускоренная заливка apk в телефон/эмулятор (если тебе это нафиг не нужно, то стоит задуматься о IDEA)
>>631228 Ну так иди гей-шлюхой фронтенд/php макакой работать. Знаний почти не нужно, а на пожрать хватит.
>>631237 >Скала? На ведре? Орли? Но гомо. Да норм, только говорят там runtime 6 мегабайт (а у Kotlin +400KB к APK)
>Лучше бы на вопросы отвечал раз опытный такой >Как правильно вкатится? Это вот на такую хуйню что-ли? Где адекваты? Я вообще, полгода сюда не заходил, дай выговориться.
>>631338 > Их сертификаты хоть где нибудь котируются? Хуй знает. Я понимаю что нет никаких волшебных курсов, но хочется найти такое где разъяснят все на примере какого-нибудь годного проекта.
>>632146 Потому что адекваты не пишут код, в котором нужно приведение типов. А для редких случаем (работы со всякими убогими Java API) можно и потерпеть.
Коротко о главном:
1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - добро пожаловать в андроид разработку.
2) Android Studio & Java - единственный легитимный набор, теперь стал еще легитимнее.
3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах.
4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js. На самом деле изменил свое мнение, всякие поделки на js имеют место быть, и более того, в наших же интересах клепать несложные проекты на нем, так как объективно быстрее сделать юи.
Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.
Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development
Предыдущий тред: http://2ch.hk/pr/res/596036.html