Этого треда уже нет.
Это копия, сохраненная 13 сентября 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
117 Кб, 1600x900
Разработка под Android тред №25 #814733 В конец треда | Веб
Лето почти закончилось, а вы успели отдохнуть? Ну и думаю потихоньку можно начинать ждать новый нексус, правда что-то дизайн так себе.
Алсо, первый месяц на новой работе прошел довольно потно.

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

Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом.

А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный. Куплено Microsoft. Теперь есть бесплатная версия.
5) BugVM (RIP RoboVM) - идейный наследник ксамарина, а теперь уже и его часть но на Java. Учитывая что Microsoft убила RoboVM, встречаем опенсорсный BugVM.

Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Хотите писать на котлине? Добро пожаловать в JetBrains и Avito.

Где брать инфу:
Интернет-ресурсы
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 - в отличии от остальных книг она обновляется, а так как ведро не стоит на месте а хуярит семимильными шагами, то я бы и не советовал другие книги.

А теперь, так как заебали уже всех, гайд для:

>"Я хуярил на делфи 5 лет назад а теперь хочу вкатится в андроид":



Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush или codingbat.com.
Можно Эккеля "Философия java" почитать.
Или Хорстманн "Java. Библиотека профессионала" до 7 главы.

Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.

Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.

Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Работа с json.
Привет клиент-серверка.

Пишите в треде что добавить
#2 #814735
Народ, есть бд, и я хочу подключить к приложению логин через гугл, чтобы пользователь мог пользоваться этой бд на любых девайсах под его аккаунтом. Как лучше это сделать?
>>814738
#3 #814736
Сап, котаны, суть вопроса - при быстром вводе в searchview, в которую подсказки подгружаются при событии onTextChanged со сторонней апишки, происходит фатал - данные для адаптера были изменены но метод notifydatasetchanged не был вызван. Но только при быстром вводе/слабом интернете
>>814754>>814757
#5 #814746
У меня баттхёрт.
Я охуеваю, дорогая редакция. Неужели Гугл не смог сделать вменяемый инструмент разработки, который способен запуститься и работать после установки?
Установил я этот Android Studio - он после создания проекта-сэмпла начал выдавать какоё-то gradle family unavailable. Оказалось, что это надо лечить установкой какого-то флага для Java (охуеть, как будто сами не могут его передать в Java).
Ладно, это сделано - но теперь там следующий уровень ебанизма - невозможность запуска и хз из-за чего:
Execution failed for task ':app:transformClassesWithDexForDebug'.

> com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1

>>814752>>818217
#6 #814752
>>814746

> седьмая джава



Ну и ты хуйню какую то натворил сто пудово, еще небось из под прыщей сидишь.
>>814777>>814910
#7 #814754
>>814736
Код покажи. Мы же не экстрасенсы тут.

На крайняк - попробуй в коллбэке после прилета данных(который, наверное, выполняется в основном потоке, так?) не просто обновлять данные и вызывать notifyDataSetChanged(), а постить Runnable в Handler, который связан с Main Thread Looper. Например, создав этот Handler в главном потоке, или же создав его где хочешь вот так:
Handler handler = new Handler(Looper.getMainLooper());

То есть, например, у тебя будет что-то такое:
http://pastebin.com/L28mYi9Q

}
>>814757
#8 #814757
>>814736
Ну и то, что я предложил - это все-таки хак, тебе нужно проверить свой код, там точно есть какая-то хуита(но есть и шанс, что гуглолибы глючат).
Ну и я бы советовал смотреть, для какой строки ты принимаешь данные. То есть если вдруг у тебя отправились запросы сначала для "2ch" и потом для "2ch.hk", то может случиться так, что ответ для 2ch.hk придет раньше, а для "2ch" - позже. Поэтому сравнивай данные, которые получаешь с теми, которые хочешь получить.

>>814754-кун.
#9 #814777
>>814752

>C:\Java\jdk1.7.0_79\bin\java.exe


>C:\


>из-под прыщей

>>814800
#10 #814800
>>814777

>.exe


>из-под прыщей

>>814820>>814834
#11 #814811
оп хуй
>>814833
10 Кб, 212x212
#12 #814820
>>814800
Через WINE
#13 #814821
>>814738
Таак, т.е. мне придётся пилить свой сервер?
>>814827
#14 #814827
>>814821
А у тебя БД не на сервере?
>>814835
#15 #814833
>>814811
Хейтеры буду наказаны.
291 Кб, 544x416
#16 #814834
>>814800
gcc hello.c -o hello.exe
#17 #814835
>>814827
нет, сервера у меня пока что нет.
>>814839
#18 #814839
>>814835
Посмотри Firebase, мне кажется, что тебе подойдет. Если вкратце - ты можешь на сервере сохранять данные в виде дерева объектов.
>>814843>>814847
#19 #814843
>>814839
Т.е. все должны быть наследниками одного?
>>814848
#20 #814847
>>814839
Там No-SQL, если не ошибаюсь. Думаешь, хранить до тысячи объектов будет удобно?
>>814851
#21 #814848
>>814849
#22 #814849
>>814848
И как, удобно? Или начальный класс просто болванка типа обжекта?
>>814900
#23 #814851
>>814847

> Думаешь, хранить до тысячи объектов будет удобно


Хранил там 3000 объектов. Отказался из-за того, что обновляется фаирбейз дольше. 1 мб сети + куча обработки, а с собственным сервером 100кб gzip json.
>>814855
#24 #814855
>>814851
Но к своему серверу надо ещё аутентификацию прикручивать
sage #25 #814877
>>814871
Пошел нахуй со своим говном.
sage #26 #814884
>>814881
Пошел нахуй, говна кусок.
#27 #814900
>>814849
Да, типа того.
sage #28 #814901
>>814871
>>814881
Моча, какого хуя это говно всё еще в треде?
#29 #814910
>>814752
Свежая установка Android Studio.
А вот что он не опознал восьмую джаву - это да, странно
>>815107
#30 #815107
>>814910
Тестерам Android Studio нужно выдернуть руки. Или просто отрубить их с корнем. Как можно выпустить настолько глючный продукт, да ещё и рекомендовать его как основное средство разработки, я не представляю.
>>815333
#31 #815333
>>815107
Ой, иди нахуй, долбоеб. Поставь себе эклипс и жри говно.
>>815339
#32 #815339
>>815333
Думаю он про 2.2 версию.
>>815708
#33 #815708
>>815339
Тогда он еще больший долбоёб. Ставит превью-версию и чему-то там возмущается.
#34 #815712
>>814733 (OP)
Короче думаю здесь найдётся кто-нибудь, кто пояснит за MVP.
Желательно в виде ссылок на какие-нибудь хипстерские медиумы и чтобы их потом прикрепили к ОП-посту. Ну про медиум шучу, хотя он основной источник всего этого шума.

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

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

При этом всём наверное ещё используется дагер, чтобы сложнее было найти что где вызывается. И юнит тестам поддаётся только модель? которой передаётся на вход замоканный контекст, файлы, бд и проверяется, что, к примеру, возвращаемый столбец соответствует замоканному?
#35 #815714
>>815712
Тебя в гугле забанили? На каждый твой вопрос есть ответ в гугле. А делают всё равно все по-разному. И будут дальше так делать.
>>815789
sage #36 #815725
>>815712

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


Ну реально в гугле забанили.
#37 #815789
>>815714
Бля мне просто хочется пожевать риторического говна типа

> А делают всё равно все по-разному. И будут дальше так делать.


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

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

Ладно ок берём рандомную ссылку (одну из первых).
https://github.com/konmik/konmik.github.io/wiki/Introduction-to-Model-View-Presenter-on-Android

> View is a layer that displays data and reacts to user actions. On Android, this could be an Activity, a Fragment, an android.view.View or a Dialog.


Ну всё что даёт андроид - это вью. Ок.

>Model is a data access layer such as database API or remote server API.


Видимо набор статик методов, чтобы открывать файлики и там например скачивать странички в стринг.

> Presenter is a layer that provides View with data from Model. Presenter also handles background tasks.


Ну и всем оставшимся заведует презентер. Видимо это, что называется, логика.

Всё так, анон? Взаимосвязь вьюхи и презентера в одну и в другую сторону? Если элемент списка в бд изменился, то происходит notifyItemChanged, заранее зная про адаптер или присылается новый список и происходит полное обновление вьюхи?
Хах, ладно, в общем-то я уже заебался...

Короче можешь ответить за тестирование хотя бы. У меня большинство функций воид и вызываются андроидом. А те, которые более менее чистые - private (ну серьёзно, когда более менее логика накапливается выношу в приватный метод). Мне интересно - неужели у других нормальный воркфлоу, что такого дерьма изначально не накапливается.
Или более существенный вопрос - скачиваю xml и паршу в объекты. Мне бы хотелось заранее протестировать парсер, хоть это и внешняя либа, но кто-знает правильно ли аннотации расставлены. Понятное дело, что меня никто не остановит проверить парсер на локальном файлике. Но норм ребята же так не делают? да и в какую папку кидать файл?

А вообще если я тебя конкретно так бешу, то просто нахуй пошли. Я на дваче редко засиживаюсь.
#37 #815789
>>815714
Бля мне просто хочется пожевать риторического говна типа

> А делают всё равно все по-разному. И будут дальше так делать.


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

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

Ладно ок берём рандомную ссылку (одну из первых).
https://github.com/konmik/konmik.github.io/wiki/Introduction-to-Model-View-Presenter-on-Android

> View is a layer that displays data and reacts to user actions. On Android, this could be an Activity, a Fragment, an android.view.View or a Dialog.


Ну всё что даёт андроид - это вью. Ок.

>Model is a data access layer such as database API or remote server API.


Видимо набор статик методов, чтобы открывать файлики и там например скачивать странички в стринг.

> Presenter is a layer that provides View with data from Model. Presenter also handles background tasks.


Ну и всем оставшимся заведует презентер. Видимо это, что называется, логика.

Всё так, анон? Взаимосвязь вьюхи и презентера в одну и в другую сторону? Если элемент списка в бд изменился, то происходит notifyItemChanged, заранее зная про адаптер или присылается новый список и происходит полное обновление вьюхи?
Хах, ладно, в общем-то я уже заебался...

Короче можешь ответить за тестирование хотя бы. У меня большинство функций воид и вызываются андроидом. А те, которые более менее чистые - private (ну серьёзно, когда более менее логика накапливается выношу в приватный метод). Мне интересно - неужели у других нормальный воркфлоу, что такого дерьма изначально не накапливается.
Или более существенный вопрос - скачиваю xml и паршу в объекты. Мне бы хотелось заранее протестировать парсер, хоть это и внешняя либа, но кто-знает правильно ли аннотации расставлены. Понятное дело, что меня никто не остановит проверить парсер на локальном файлике. Но норм ребята же так не делают? да и в какую папку кидать файл?

А вообще если я тебя конкретно так бешу, то просто нахуй пошли. Я на дваче редко засиживаюсь.
#38 #815924
>>815789

> konmik github


На этого долбаеба забей, у него там говно, а либа его еще большее говно. Почитай у mosby гайд.
>>816094
#39 #815937
По DI вопрос.

Вот у нас есть Component, который мы успешно сбилдили в Application.onCreate. Как этот компонент правильно передавать в активити/презентеры?
Если с активити более менее ясно, там в onCreate всегда можно вытащить getApplication и ему сделать метод getComponent, то как быть в презентере? Делать статик геттер апликейшону? Уебанство же.
>>815944
#40 #815944
>>815937
Создаешь презентер через DI, нужный компонент добавляешь в параметры контсруктора.
DI при создание презентера туда сам передаст нужный компонент.
>>815945
#41 #815945
>>815944
А если презентеры создаются через либу (mosby, moxy)?
>>815971
#42 #815963
Чому ваша ёбаная джава не в состоянии сама прописаться в пути? Мне его на бумажку записывать, блять, при установке?
>>816095
#43 #815971
>>815945

>А если презентеры создаются через либу (mosby, moxy)?


Что это за фигня и зачем через них создавать?
>>815977
#44 #815975
Уважаемые, заранее извиняюсь за тупую просьбу. Просто постоянно все обновляется-меняется и старые гайды чет нихуя уже не помогают. Кто-нибудь может ПОЛНОСТЬЮ, последовательно и для тупых расписать процесс установки всех необходимых инструментов ? Типо сначала андроид студио, окай, какие именно пакеты надо в сдк менеджере, как там подключить джаву, что там с libgdx, надо ли genymotion
Был бы очень благодарен.
>>815978>>815981
#45 #815977
>>815971
Мог бы и загуглить.
#46 #815978
>>815980
#47 #815980
>>815978
Там видосы все старее года
А зимой же вроде эклипс перестали поддерживать
>>816011
#48 #815981
>>815975
Ничего никогад не меняется.
1) Скачиваешь oracle jdk с сайта oracle, устанавливаешь прописываешь в PATH если за тебя это не сделал твой установщик/менеджер пакетов, проверяешь;
2) Ставишь Ведроид студию с SDK, пакеты для каждого свои очевидно, но если это линукс/винда то надо обязательно драйвера. Лично я ставлю несколько последних Android Build Tools, последние Android SDK Platform-Tools и Android SDK Tools, не превью конечно же. Для каждой платформы под которую разрабатываю SDK Platform, ну и конечно из экстрасов кучу всего.
3) Genymotion елси тебя не устраивает стандартный эмулятор/телефоны меня устраивают;
4) libGDX все просто - у них свой инсталятор, взял и поставил.

Джава сама подхватится, если нет, то ты знаешь где она лежит и прописать ее для студии не составит труда. Возможно потребуется добавить в path и что-то андроидовское, что бы студия подхватила.
>>815982
#49 #815982
>>815981

>прописываешь в PATH


https://developer.android.com/studio/install.html

>add a new system variable JAVA_HOME that points to your JDK folder, for example C:\Program Files\Java\jdk1.8.0_77



JAVA_HOME не достаточно? Надо и в PATH, где javac сидит?
>>815983
#50 #815983
>>815982

>JAVA_HOME не достаточно? Надо и в PATH, где javac сидит?


Тебе так сложно добавить и проверить? Ты видишь что бы там писалось ДОБАВЬТЕ JAVAC_HOME?
>>815987
#51 #815987
>>815983
Задам вопрос иначе. Где проверить в Studio, что джава видна?
>>815992
#52 #815992
>>815987
Открываешь консоль и пишешь туда "java -version". В студии можешь открыть File -> Project Structure и там сразу будет видно пути к сдк и jdk.
>>815997
94 Кб, 833x709
#53 #815997
>>815992
Короче, прописать как JAVA_HOME, вроде, достаточно. В PATH я не прописывал. javac -version в консоле не вызывается
>>815998
#54 #815998
>>815997
Ну это не очень хорошо, попробуй собрать проект, у меня есть сомнения.
>>816034
#55 #816011
>>815980

> А зимой же вроде эклипс перестали поддерживать


Ага. Прошлой.
#56 #816034
>>815998
проверю дома, посмотрев видосах, куда давить и вообще
#57 #816094
>>815924
Аргументированно.
>>816113
#58 #816095
>>815963
Да успокойся ты, даун. У всех всё работает. Хватит тред засирать.
#59 #816113
>>816094
Конкретно в nucleus нет поддержки вьюстейта из коробки. С учетом deprecated getView, его приходится оборачивать null чеками и //noinspection deprecation из-за того, что его restartable говно вообще не подходит для неасинхронных операций в стиле: нажал кнопку -> вызвал презентер -> презентер сказал вьюхе переименовать кнопку, и приходится либо прокидывать вьюху параметром, либо получать удовольстивие от зачеркнутого и разукрашеного желтым кода.

> Do not try to make your Presenter control your View


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

> But when control goes like this: user -> view -> presenter -> view -> presenter -> model -> data, it is just violates KISS principle


Кококо нарушение КИСС. Простейший пример. Начать по кнопке загрузку и показать прогресс бар.
Как должно быть: buttonClick -> presenter.load -> view.showLoading, но он затирает, что так делать неправильно, и вьюха сама должна решить, переходить ей в showLoading или нет, хотя это явно отвественность презентера.
>>816189>>816364
#60 #816143
>>815789

> Взаимосвязь вьюхи и презентера в одну и в другую сторону


Зависимость только в одну (вьюха от презентера), а так они друг дружку по очереди вызывают.

> Если элемент списка в бд изменился, то происходит notifyItemChanged


И как ты это словишь? У тебя курсор полностью ресетится если меняется один элемент запроса.

> Но норм ребята же так не делают


Хули нет то?
Это если ты полностью network service тетируешь, то да, ты мокируешь сетевой вызов как "норм ребята". А когда у тебя цель тестирования только парсер то почему бы и нет?
#61 #816189
>>816113
Вот теперь действительно аргументированно.
#62 #816364
>>816113

>неасинхронных


Что-то прям с подливой проиграл с этого.
Вообще со своим ариксом обезумели нахуй. Даже значения слов уже не понимают.
>>816399>>816429
#63 #816399
>>816364
Что тебя не устраивает, даун?
#64 #816429
>>816364
В посте ни слова про rx. Или для тебя асинхронные операции только через него делаются?
>>816431
#65 #816431
>>816429
Просто он даун.
#66 #816598
Студия var properties котлина подчеркивает, в этом есть какой то сокральный смысл, или можно отключать нахуй чтобы глаза не резало?
>>816605
#67 #816605
>>816598
А что пишет у меня на IDEA CE не подчеркивает?
>>816608
#68 #816608
>>816605
Ничего. Как пример:
lateinit var presenter: Presenter

И это подчеркивание везде у этого поля, а когда в строчку несколько обращений к такому полю то пиздец глаза вытекают.
>>816617
3 Кб, 189x43
91 Кб, 1276x401
#69 #816617
>>816608
Если ты про это (пик 1), то так подчеркиваются любый изменяемы объекты (свойства, переменные и тд).
Отключается в настройках темы (пик 2).

Хотя это ведь не спроста. В котлине более идиоматично использовать immutable свойства и переменные.
И "плавающих" ошибок меньше будет из-за хранения изменяемого стейта.
>>816679
#70 #816679
>>816617
Вот как чувствовал, что тот даун и котлинофаг - это одно лицо. Так и оказалось.
#71 #816697
>>815789
На хабре есть нормальное описание MVP, где все разжевано более чем достаточно...
Линк: https://habrahabr.ru/post/278815/
>>816782
#72 #816782
>>816697
Настолько MVP, что у них модель через ивент-бас с представлением общается.
Десять MVP из десяти просто
#73 #816841
Android Studio
Бывает такое, что код ведет себя не адекватно в определенном классе, будто его изменения не влияют на работу? Потом ты удаляешь апп, ребилдишь и все встает на свои места?
Я уже который раз трачу время в пустую, когда нужно почистить прост :)
#74 #816842
>>816841
Бывает.
#75 #816847
>>816841
instant run?
>>816853
#76 #816853
>>816847
Нет, я даже выгружаю приложение руками.
На мой взгляд это пиздец
>>816893
#77 #816892
>>816841
Да, ресурсы пропадают, и падает с БЭД НОТИФИКЕЙШОН. Все этот инстант ран, чего не сделаешь ради быстрой сборки.
#78 #816893
>>816853
То что ты там выгружаешь скорее всего не помогает, так как инстант ран разбивает на несколько дексов, и что-то в результате херится так как он думает что все будет ок. Но это елси много изменений сразу замутить.
#79 #816903
Аноны, как правильно поступать в такой ситуации: например, у меня есть 3 фрагмента. В первом должен быть просто тулбар, во втором коллапсинг тулбар, в третьем тулбар с табами. Мне в мою хост-активити надо бахнуть в тулбар всё возможное и потом, смотря какой фрагмент, делать что-то visible, а что то gone?
#80 #816917
60 Кб, 590x871
#81 #817003
Аноны, подскажите, я смогу в андроид N использовать java-либы скомпилированные в байткод восьмой джавы (там где версия класс файлов 52)?
#82 #817005
>>815712
Есть какое-то мосби, и ему подобные решения.
С лоадерами, файлами и т.д. - это пихают уже в зависимости от реализации либо отдельно, либо в презентер, либо во активити/фрагмент.
Советую определиться с тем, что ты хочешь. Разные реализации хорошо подходят под некоторый круг задач. Топового решения нет.

Алсо, многие юзают мвп чисто для разделения логики.
#83 #817014
Я захотел стать у мамы читором и украсть у тутошних мамкиных програмистов сраные два бакса.
Накатил рут, скачал гейгвардин, но что то нихуя не получается хакать игрули. Нечетким поиском нахожу какие то значения, но что с ними дальше делать чтобы стать бохатым не пойму.
>>817015
#84 #817015
>>817014
F R E E D O M/ Lucky Patcher
>>817016
#85 #817016
>>817015
ШТОБЕ ГУГЛ МНЕ ВСЮ ПАРНУХУ УДАЛИЛ И В ПЛОНШЕТ НИЗАХОДИЛО!?!?!?!?
фридом требует аккаунт гугля, лакипатчер на то и лаки что не всегда выходит. Плюс, есть игрули в которых нихуя доната нету, но читерить в них хочется.
74 Кб, 301x530
#86 #817019
Имеется такая разметка
<LinearLayout...>
<FrameLayout...
android:id="@+id/fragmentContainer">
<ImageButton.../>
<ImageButton.../>
<ImageButton.../>
</FrameLayout >
</LinearLayout >
и примерно такой код:
public void onClick(View v)
{
...
transaction= fragmentManager.beginTransaction();
transaction.replace(R.id.fragmentContainer,fragments[color]);
transaction.commit();
}

Результат на картинке: фрагмент рисуется поверх кнопок.
Как сделать, чтобы кнопки рисовались поверх фрагмента?
>>817023
#87 #817023
>>817019
Вынеси fragmentContainer в отдельный framelayout

|FrameLayout|
-|FrameLayout (@+id/fragmentContainer)|
-|LinearLayout|
--|ImageButton|
--|ImageButton|
--|ImageButton|
>>817025>>817029
#88 #817025
>>817023
Спасибо, попробую
#89 #817029
>>817023
Еще раз спасибо, заработало!
#90 #817048
Подскажите способ отправки файлов метров по 50-100 по http без outofmemory? Я использую multipart, в котором дроблю его на пятиметровые куски, но где-то на четвертом оно падает
#91 #817053
>>817048

> отправки файлов метров по 50-100 по http без outofmemory


FileInputStream

> Я использую multipart


Через что ты отправляешь (URL, Retrofit, HttpClient)?
>>817055
#92 #817054
>>817048
Отправки куда? Тот же твиттер с фейсбуком таки поддерживают твой способ, в котором нужно указыват байтовые смещения.
>>817055
#93 #817055
>>817053
HttpUrlConnection обычный
>>817054
просто на некий сервер
>>817057>>817058
#94 #817057
>>817055

> где-то на четвертом оно падает


Покажи код, похоже у тебя утечка
>>817062
#95 #817058
>>817055
А этот некий сервер сервер поддерживает такой аплоад чанками?
Да и вообще проще код показать.
>>817062
#96 #817062
>>817058
чанки, точно. Вот в какую сторону надо гуглить...
>>817057
код такой
http://pastebin.com/ZPXLGjic
>>817071
#97 #817071
>>817062
Пробуй flush после каждой записи буффера.
>>817116
#98 #817080
Есть какой-то нормальный виджет, который можно с любой позиции влево и вправо свайпать? А то все зацикленные вьюпейджеры какие-то хуевые.
#99 #817089
>>814733 (OP)
на чём разрабатывать, если все ide на java -ресурсоёмкое тормознутое говно?
>>817094>>817111
#100 #817094
>>817089
Не разрабатывай. У меня все летает, проблемы на вашей стороне.
>>817598
#101 #817111
>>817089
Попробуй в Atom или VIM, собирать один хрен в конце придется через gradle.

Так же разработку "бизнес слоя" можно вынести в отдельном java-se модуль
и проверять правильность юнитестами, выполняемыми на дексктопной java.
Дядя Боб скажет "молодца".
#102 #817116
>>817071
не помогло
>>817117>>817140
#103 #817117
>>817116
Подключи ретрофит и отправь через него, должно работать норм. Или ручками через okio.
#104 #817140
>>817116
Скинь эксепшен и точно место где он возникает.
>>817154
#105 #817154
>>817140
http://pastebin.com/6mv7ESMp
Вот здесь
dos.write(buffer, 0, bytesRead);
>>817172
#106 #817172
>>817154
Добавь conn.setChunkedStreamingMode(0)
>>817371
#107 #817183
Сап, кто работал с Glide. Возможно ли с помощью этой либы спокойно работать с ImageButton?
>>817364
#108 #817364
>>817183
Не работай с ImageButton. Нахуй она тебе нужна? Что ты подразумеваешь под "спокойно работать"? Загрузить (+ трансформировать) картинку без еботни в ImageButton можно так же как и в ImageView.
>>817386
#109 #817371
>>817172
Кажется, это колдунство заработало. Осталось только понять почему
>>817603
#110 #817386
>>817364
Не работай с ImageButton. Нахуй она тебе нужна?
а какие альернативы?
>>817431>>817549
#111 #817431
>>817386
загружать картинку для кнопки какой-то маразм
#112 #817549
>>817386
Чего тебе не хватает в ImageView?
>>818222
#113 #817598
>>817094
конечно на нашей: заоблачные системные требования java ide не удовлетвворил. На заоблачность требований всем похуй.
#114 #817603
>>817371

>This method is used to enable streaming of a HTTP request body without internal buffering


Буффер съедал всё память
#115 #818217
>>814746
Пожуй какашек, ебанашка.
небось 4гб оперативки?
#116 #818221
>>816903
Нет
>>818279
#117 #818222
>>817549
ImageButton
>>818272
#118 #818269
В DI нужно иметь отдельный компонент на каждый экран, или один единый компонент инжектящий во все возможное?
Если будут разные компоненты, то синглтоны же будут синглтонами на компонент или на все приложение?
#119 #818272
>>818222
Повторяю вопрос. Что для тебя есть в ImageButton'е такого, чего нет в ImageView?
>>818929
#120 #818279
>>818221
Ну а как надо?
>>818300>>818936
#121 #818300
>>818279
Сделать разные активити? Чет слабо верится что это все у тебя через дровер связано, а если связано то нахуй такой дизайн.
>>818343
#122 #818343
>>818300
А, ясно
>>818488
#123 #818360
>>816903
Просто объяви тулбары внутри фрагментов, а активити сделай NoActionBar
#124 #818364
Двощ у меня апатия. Пытаюсь стать джуниором, сделал пару проектов. Ну как, сделал. Функционал довольно примитивный, дизайна нет, но кое-что изучил по ходу работы.
Два круда с некоторым функционалом и один дёргающий данные из рест апи и показывающий картинки в gridview.
Заебали, довёл до определённой логической стадии и видеть их не могу. Решил отдохнуть от практики и подучиться немного.
Какие мастхэв скиллы должны быть у джуниора?
Из того что точно ещё не использовал/не знаю: ContentProvider, Loader, анимации, датчики, камера, микрофон, карты. Не использовал почти никаких либ, хотел бы разузнать зачем и куда применить хуиту типа dagger, rxjava, event bus.
Хотел бы попробовать MVP или чистую архитектуру, но в туториалах везде куча библиотек используется, да и не знаю надо ли мне всё это на данном этапе.
Короче, куда мне сейчас податься? Есть пару туториалов по библиотекам и MVP, есть курсы на юдасити, есть гайды в Busy Coder’s Guide.
>>818387
#125 #818387
>>818364
Устраиваешься джуниором.
>>818410
#126 #818410
>>818387
А что, этого хватит на джуна? В хохлостране сейчас не оче с вакансиями, боюсь никто не возьмёт меня такого как сейчас.
Энивей, я смогу на фуллтайм пойти только начиная с октября, поскольку есть некоторые дела ИРЛ. Вот думаю до этого времени скилл поднять.
>>818416
#127 #818416
>>818410

>только начиная с октября, поскольку есть некоторые дела ИРЛ


Иди лучше к перездачам готовься, а то в котле придется джинуть
>>818430>>818513
851 Кб, 651x922
#128 #818430
>>818416
Я уже давно выкатился из шараги и меня могут призывать в любую секунду
#129 #818488
>>818343
Что тебе ясно, ммм?
>>818514>>818557
#130 #818513
>>818416
Зарепорил промытого дауна.
#131 #818514
>>818488
Что твоя мать шлюха.
#132 #818557
>>818488

>это все у тебя через дровер связано, а если связано то нахуй такой дизайн.

#133 #818586
Сап, аноны, выручайте. Пишу список, добавление в который производится динамически. Для каждого View использую ViewHolder ибо элементов внутри вьюхи много. Сначала добавляю первый элемент, все ок, создаю View, нахожу все что внутри и пишу это в ViewHolder. Когда я добавляю в список ВТОРОЙ элемент, и вызываю notifyDataSetChanged(), происходит вот что:
1. Вызывается getView() для первого элемента, convertView равен null (при этом помним что у первого элемента уже было ранее созданное View), поэтому приходится заново его создавать и все находить.
2. Вызывается getView() для второго элемента, при этом в качестве convertView выступает то View, который раньше (еще до добавления второго элемента в список) использовалось для первого, соответственно все ссылки в его ViewHolder'е указывают на вьюшки первого элемента списка, и приходится находить их сначала. Если бы для первого элемента можно было использовать то View, которое для него использовалось раньше, а для второго создавать новое, то все было бы збс. Можно ли это как-то организовать? Я спрашивал здесь: http://stackoverflow.com/questions/38790574/getview-has-its-convertview-null-for-already-existed-item-when-i-add-new-item, но там написали что сделать этого нельзя, мб тут кто-нибудь шарит? RecyclerView не предлагать
>>818609>>818611
#134 #818609
>>818586

>Для каждого View использую ViewHolder


как я понял, тебе нет смысла юзать ресайклер вью, всё равно там нечему ресайклиться. Складывай всё просто в скролл вью
#135 #818611
>>818586
Я не понимаю, в чем твоя проблема. Ну уйдет твоя конверт вьюха второму элементу, пиздец потеря. Ты все равно вьюхам будешь данные назначать в любом случае, даже если они там есть.

> RecyclerView не предлагать


Схуяли? Хотя он все равно тебе перебиндит вьюху.
>>818618
#136 #818618
>>818611
>>818611
Дело не в назначении данных, ViewHolder хранит ссылки на вьюхи, входящие в состав элемента списка, а потеря в том, что тогда придется находить все эти вьюхи заново (около 20 элементов на каждый элемент списка). Причем даже если convertView != null это не означает что можно просто достать все из ViewHolder, придется заново вызывать findViewById() для каждой вьюхи и только потом присваивать им значения. Более того, раз уж теперь convertView != null не гарантия того, что не нужно искать вьюхи заново, искать их придется и в том случае, когда мы просто пролистываем список (хотя в этом случае их как раз таки можно взять из ViewHolder)
>>818622
#137 #818622
>>818618

> что тогда придется находить все эти вьюхи заново


Нет, в этом и суть вьюхолдера. Вьюхолдер привязан к конкретной вьюхе, внутри которой конкретные объекты вью, которые при конверте не меняются.
>>818627
#138 #818627
>>818622
Смотри, если взять случай со вторым элементом списка, convertView != null, но во вьюхолдере этого convertView хранятся ссылки на вьюхи первого элемента, поэтому придется их искать заново чтобы они ссылались на вьюхи второго элемента. Тут без поиска точно не обойтись. Можно конечно вообще не использовать вьюхолдер, но он как раз-таки нужен в тех случаях, когда getView() вызывается не при добавлении нового вью в список, а при скроллинге.
>>818628
#139 #818628
>>818627

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


Во вьюхолдере convertView хранятся ссылки на вьюхи внутри этого convertView. convertView похуй, какой она идет по счету.
Ты не понимаешь сути адаптера, и я даже не знаю как тебе объяснить ее не расписывая целую статью. Надеюсь ты найдешь такую.
RecyclerView даже будет понятней для понимания этого механизма.
>>818641
#140 #818641
>>818628

>Во вьюхолдере convertView хранятся ссылки на вьюхи внутри этого convertView


Ну я с этим и не спорил вроде

Мне кажется ты просто не понял меня. Когда я вызываю getView для второго элемента, в качестве convertView я получаю то View, которое раньше использовалось для первого элемента, а значит внутри вьюхолдера этого конкретного convertView хранятся ссылки на те вьюхи, которые используются в данный момент первым элементом списка, правильно?

Теперь если я просто возьму эти элементы из вьюхолдера и запишу в них данные, предназначенные для второго элемента, то по сути я перепишу их для первого элемента, а это совсем не то что я хочу сделать
>>818646>>818834
#141 #818646
>>818641

> Теперь если я просто возьму эти элементы из вьюхолдера и запишу в них данные, предназначенные для второго элемента, то по сути я перепишу их для первого элемента


Да, и это ок.

> а это совсем не то что я хочу сделать


Ну что ж поделать. Вьюха должна просто показывать данные, а всякие состояния нажата кнопка, не нажата, ты должен хранить не во вьюхе.
>>818649
#142 #818649
>>818646
Просто тогда получается, что если не находить вьюшки заново, то все вьюшки любого элемента списка будут ссылаться на вьюшки первого элемента (так собственно оно и есть, когда я например чекаю чекбокс в 6-м элементе он чекается у всех остальных тоже)

>состояния нажата кнопка, не нажата, ты должен хранить не во вьюхе


Хм, спасибо, подумаю над этим
#143 #818789
Ребят, поясните за The Busy Coder’s Guide to Android Development. Читал некую русскоязычную литературу по андрею. Хочу перекатиться в англоязычную The Busy Coder’s Guide to Android Development.
Есть ли вариант вникать в такую литературу, учитывая несильный английский?
#144 #818800
Не совсем понял. Почему у меня при создании проекта с минимальным API 14:
class MainActivity extends AppCompatActivity

?

С какой версии можно использовать Activity?
>>818803>>818804
#145 #818803
>>818800
С 4.0 же можно?
AppCompatActivity только для устройств с < 4.0 ведроидом?
#146 #818804
>>818800
И вообще, есть ли смысл использовать Activity вместо AppCompatActivity? То же самое, но + обратная совместимость, разве нет?
>>818806>>818839
#147 #818806
>>818804
Я так понимаю, раз минимальное API 14 - то я могу спокойно использовать Activity, а на других приложение все равно не запустится?
#148 #818809
Почему Material design выглядит, словно даун-первоклассник нахуярил в паинте кружков и прямоугольников из двух вырвиглазных цветов?
Почему отсутствие дизайна в куче статей называется "то касается визуально-функциональной части, то Google удалось объединить принципы хорошего дизайна с инновациями и возможностями новых технологий и науки.

Material design базируется на тактильной реальности, вдохновлен изучением бумаги и чернил, технологически продвинут и открыт для воображения и магии."?
>>818810>>818839
#149 #818810
>>818809
Потому что. Дизайнеры решили. Ты не дизайнер, и вообще способен только на субъективные оценочные суждения.
#150 #818823
До меня тут дошло наконец, что мне нужен МЕНТОР, т.к. я застопорился.
Либо готов вступить в проект.
вкtiper2014
Рассмотрю задания энивэй я вообще за любую движуху
>>818824
#151 #818824
>>818823
Сколько готов заплатить?
>>818825
#152 #818825
>>818824
по стандартному прайсу
>>818826
#153 #818826
>>818825
20к есть в месяц?
>>818827
#154 #818827
>>818826
найду
#155 #818834
>>818641

Оказалось что проблема была в том, что listView по высоте был выставлен в wrap_content, из-за этого для отрисовки каждого элемента списка getView вызывался по 2 раза, при этом в качестве convertView передавался один и тот же элемент (хз почему). Исправил на match_parent и все заработало
#156 #818839
>>818804

> Activity вместо AppCompatActivity


Если хочешь разный дизайн на разных устройствах то юзай. AppCompatActivity тащит за собой материал дизайн.
>>818809
Ну ананасу с харкача виднее как дизайн делать. Можешь портировать иос дизайн на ведро 1 в 1, есть каста самых пришибленных заказчиков, они как раз так обожают.
#157 #818929
>>818272
мммб ImageButton
#158 #818936
>>818279
Ну, например, у меня сделано так.
Есть класс от которого наследуются все фрагменты, например "BaseFragment".
На стадии создания активити, я запихиваю все свои фрагменты во фрагментменеджер и хайдю их там, чтобы они не перерисовывались.
В базовом классе я проверяю при изменении статуса isHidden

http://pastebin.com/btBVwZa9 и пихаю тулбары, которые прописаны в лейаутах фрагментов.
Подводных камней не вижу.
#159 #819144
Какой смарт лучше купить для тестов? Нексус?
>>819186
#160 #819186
>>819144
Да, тогда точно все будет ок, но жди что на других устроствах некоторый функционал может отваливаться.
>>819187
#161 #819187
>>819186
Спасибо, ну есть эмуляторы.
>>819188
#162 #819188
>>819187
заебешься на эмуляторах все тестить.
#163 #819505
Пытался привинтить navigation drawer. Спросил у коллеги в двух словах описать как это делается и тот направил подсмотреть в шаблонах студии. Смотрел туда и еще статейку из гугла, где наворотили и табы и тулбар, и все что угодно. В шаблоне тоже наворочено много ненужной мне левоты через координаторы. Понял, что не понимаю как работает координатор и много много смежных элементов.
Короче, вопрос такой: где почитать (на русском языке, желательно) последовательной от простого к сложному информации по теме? Это же называется material design?
>>819530
#164 #819511
Анончики, как через VK API получить список групповых чатов? У самого VK API какая-то бедная документация.

У меня сейчас так:
//----------------------------------------------------------
@Override
public void onActivityResult(final int requestCode, int resultCode, Intent data)
{
if(VKSdk.onActivityResult(requestCode, resultCode, data, new VKCallback<VKAccessToken>()
{
@Override
public void onResult(VKAccessToken res)
{
mAccessToken = res;
}

@Override
public void onError(VKError error)
{
finishActivity(requestCode);
}
}))
{
super.onActivityResult(requestCode, resultCode, data);
}

VKRequest dialogsRequest = VKApi.messages().getDialogs(VKParameters.from(VKApiConst.ACCESS_TOKEN, mAccessToken,
VKApiConst.COUNT, 200));
final VKCommentArray dialogs = new VKCommentArray();

dialogsRequest.executeWithListener(new VKRequest.VKRequestListener()
{
@Override
public void onComplete(VKResponse response)
{
super.onComplete(response);

try
{
dialogs.parse(response.json);
} catch (JSONException e)
{
e.printStackTrace();
}
}

@Override
public void onError(final VKError error)
{
Log.i("ERROR", error.toString());
}
});
}
//----------------------------------------------------------

Но реквест всегда выполняется с ошибкой. В error.toString() строка "VKError (API errorVKError (code: 15; ; Access denied: no access to call this method))".

AccessToken вроде передаю нормально. Может, дело в разрешениях в самом вк на страничке приложения? Какое разрешение нужно, чтобы просматривать групповые чаты?
#164 #819511
Анончики, как через VK API получить список групповых чатов? У самого VK API какая-то бедная документация.

У меня сейчас так:
//----------------------------------------------------------
@Override
public void onActivityResult(final int requestCode, int resultCode, Intent data)
{
if(VKSdk.onActivityResult(requestCode, resultCode, data, new VKCallback<VKAccessToken>()
{
@Override
public void onResult(VKAccessToken res)
{
mAccessToken = res;
}

@Override
public void onError(VKError error)
{
finishActivity(requestCode);
}
}))
{
super.onActivityResult(requestCode, resultCode, data);
}

VKRequest dialogsRequest = VKApi.messages().getDialogs(VKParameters.from(VKApiConst.ACCESS_TOKEN, mAccessToken,
VKApiConst.COUNT, 200));
final VKCommentArray dialogs = new VKCommentArray();

dialogsRequest.executeWithListener(new VKRequest.VKRequestListener()
{
@Override
public void onComplete(VKResponse response)
{
super.onComplete(response);

try
{
dialogs.parse(response.json);
} catch (JSONException e)
{
e.printStackTrace();
}
}

@Override
public void onError(final VKError error)
{
Log.i("ERROR", error.toString());
}
});
}
//----------------------------------------------------------

Но реквест всегда выполняется с ошибкой. В error.toString() строка "VKError (API errorVKError (code: 15; ; Access denied: no access to call this method))".

AccessToken вроде передаю нормально. Может, дело в разрешениях в самом вк на страничке приложения? Какое разрешение нужно, чтобы просматривать групповые чаты?
>>819524>>822819
#165 #819518
Сап, подскажите какую базу данных лучше использовать для выгрузки данных из интернета в приложение. MySQL?
>>819519
#166 #819519
>>819518
SQLite
>>819583
84 Кб, 918x410
#167 #819524
>>819511
Читать умеешь?
>>819532
#168 #819530
>>819505
Все очень просто.
1) Базовый DrawerLayout, так в принципе уже мало смысла делать: https://developer.android.com/training/implementing-navigation/nav-drawer.html
2) С "новым" NavigationView: http://www.android4devs.com/2015/06/navigation-view-material-design-support.html

А вообще если ты не можешь разобраться в семплах, то пизда тебе короче.
>>819543>>820408
16 Кб, 189x538
#169 #819532
>>819524
Это какой из?
>>819541
#170 #819541
>>819532
Не ебу что это за окошко, но тебе нужно при запросе токена на клиенте добавлять нужные пермишены.
>>819546
#171 #819543
>>819530

> так в принципе уже мало смысла делать


Пока пидорасы-дизайнеры будут делать собственный дизайн бокового меню а такие найдутся всегда, смысл будет.
>>819544
#172 #819544
>>819543
С NavigationView это всеравно проще будет скорее всего.
#173 #819546
>>819541
Это в VKSdk.login()?

Я вызываю VKSdk.login(this, null). И не ебу, что можно поставить вместо null. Сигнатура функции такая:
VKSdk.login(Activity runningActivity, String... scope);

Что такое scope? Что он вообще должен делать? Гугл-переводчик переводит это как "объём". Какой нахуй объём?

В документации ни слова нет об этой функции. Примеров тоже нет. Я догадываюсь, что вместо scope нужно что-то подставить, но не ебу что.
#174 #819550
>>819546

>String... scope


Это разрешения, которые запрашивает приложение при доступе к функционалу ВК.
>>819552
#175 #819551
>>819546

>Что такое scope? Что он вообще должен делать? Гугл-переводчик переводит это как "объём". Какой нахуй объём?


Ты нахуй сюда пришел? Ты документацию читал? Ещё что-то где-то посматривал?
Банально, сука, открой сорцы VKSdk

/
Starts authorization process. If VK app is available in the system, it will be opened
to request access from user. Otherwise, UIWebView with standard UINavigationBar will be used.

@param activity current running activity
@param scope array of permissions for your applications
/
public static void login(@NonNull Activity activity, String... scope) {
VKServiceActivity.startLoginActivity(activity, requestedPermissions = preparingScopeList(scope));
}
>>819553
#176 #819552
>>819550
То есть я, например, должен вызвать VKSdk.login(this, "messages")?

Хуле об этом в документации не написано? Почему даже примеров нет? Пиздец. Блядь, ну посмотрите вы на MSDN - образец превосходной документации. На каждую(каждую, блядь!) функцию расписаны подробно все её параметры, какими они могут быть, что должны делать, ещё и примечания внизу на случай самых разных непоняток. А тут "ну короче у нас есть такая функция, используйте её, только мы не скажем, как".

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

Пиздец, просто пиздец.
#177 #819553
>>819551
А, это же джава. Документация не там, где она должна быть, а по сорцам размазана тонким слоем.
>>819559
#178 #819555
>>819552

>Хуле об этом в документации не написано?


Ой, все. Иди нахуй, жопочтец.
>>819565
#179 #819559
>>819553
И это хорошо.
>>819565
#180 #819560
>>819546
>>819552
Ты просто не очень умный. Ничего страшного. JS тред вперед по коридору и на лево.
>>819561>>819567
#181 #819561
>>819560
Ссылку забыл, вот ВСЕ расписано с примером блять рабочего приложения. https://github.com/VKCOM/vk-android-sdk
>>819563
#182 #819563
>>819561
Я думаю с жс ему будет тоже сложно. Пусть уебывает дворы мести.
>>819574
#183 #819565
>>819555
Да, давайте хранить документацию непонятно где, а потом называть всех жопочтецами.

>>819559
Чем хорошо-то?
Блядь, джава же - ООП-язык. Её создатели должны понимать важность таких вещи, как инкапсуляция и отделение чёрного от белого. Тогда хули у них сорцы вперемешку с документацией идут, когда это две отдельных сущности? Хуле пользователю нужно залезать во внутренности реализации, чтобы узнать, как обращаться с интерфейсом? Где основные принципы, блядь?

Блядь, и так у них в этом плане всё хуже, чем в C++, так нет же, они ещё дополнительно всё смешивают. Так делать нельзя.
#184 #819567
>>819560
Странно, что в C++ таких проблем не возникает. МОЖЕТ, ПОТОМУ, ЧТО ТАМ УМЕЮТ ДЕЛАТЬ ДОКУМЕНТАЦИЮ?
>>819571
#185 #819569
>>819565
Отделил свое жидкое от своего длинного за твою щечку. Проверяй.
#186 #819570
>>819565

> Тогда хули у них сорцы вперемешку с документацией идут


Алло, твой MSDN генерится автоматически с исходников. Так же работает и javadoc.
https://msdn.microsoft.com/en-us/library/5ast78ax.aspx
>>819575
#187 #819571
>>819565
>>819567
Ой вася, javadoc это приятное дополнение. Документация зависит от создателя, а не от языка. Команда ВК не потрудилаьс сделать отдельную доку, но у самой джавы и андроида, а так же хороших либ есть свои документации где все расписано.
>>819575
#188 #819574
>>819563
Это форс какого-то поехавшего из джава треда, всех направляет в js. Я только ленивых туда отправляю.
#189 #819575
>>819570
Ты не на тот язык документацию смотришь. Вот примеры превосходной, написанной вручную документации:
https://msdn.microsoft.com/en-us/library/windows/hardware/ff551072(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476082(v=vs.85).aspx

>>819571
Ну допустим, тут ты прав. В любом случае, документация VK API - говно. А оставлять в продакшене в качестве документации комменты в сорцах может только идиот.
>>819577>>819578
#190 #819577
>>819575
Ну у Вк не самая худшая документация. Эхх помню пару лет назад смотрю документацию гугла, а потом понимаю что там все диприкейтед и мне нужно форсировано включать английскую версию что бы увидеть новую. Или фейсбук где ты навсегда потеряешься среди ревизий и новых версий, а поиск кидает тебя обязательно на старое.
>>819580
#191 #819578
>>819575

>А оставлять в продакшене в качестве документации комменты в сорцах может только идиот.


Ебаните этому дебилу чем нибудь тяжелым по голове.
>>819585
#192 #819580
>>819577
Но они могли хотя бы сделать отдельную веб-страничку с описанием всех методов для Android SDK. И читать удобно, и в сорцы лезть не надо.

В любом случае, всем спасибо.
>>819581
#193 #819581
>>819580

>и в сорцы лезть не надо


И еще пальцы молотком отбейте, чтобы никогда печатать не смог.
>>819585
#194 #819583
>>819519
так, а как её связать с хостингом?
>>819589
#195 #819585
>>819581
>>819578
Как ты вообще с такими понятиями на ООП-языке пишешь?
>>819586
#196 #819586
>>819585
Очевидно что лучше чем ты. А ты в каком то манямирке живешь.
>>819597
#197 #819589
>>819583
Кажется тебе ответили на другой вопрос. Ты спрашиваешь какую базу тебе использовать на бекенде, или какую базу тебе использовать на клиенте? Если второе, то конечно SQLite, а как ты связывать атм будешь, ну хуй знает, можешь с сокетами поебаться, можешь SOAP, моешь REST Api. Тебе открыты все двери.
#198 #819597
>>819586

>лучше чем ты


>Не умеет отделять интерфейс от реализации


Нет, ну ты серьёзно?
>>819618
#200 #819618
>>819597
Что ты несешь?
>>819607
Это ж джуны.
#201 #819671
Аноны, поясните за тестирование.

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

Так вот, как это дело правильно тестировать? Очевидно что мне в тестовом нужно как-то подменить класс, отсылающий реальные запросы, на другой, который отвечает просто заранее заготовленным ответом. Как это лучше сделать? Понятно что надо выделить интерфейс, настоящую и тестовую реализации. А вот что делать дальше?

Тестирование при этом проводится автоматически на CI-сервере, так что вариант "перед тестами вручную что-то менять в коде" не катит.

Я пока вижу два варианта:
1) В коде теста в явном виде вызывать метод у моей Activity, который запишет в нее нужный мне экземпляр апи.
2) Выделить Factory этих апи, сделать отдельный flavour для теста и для реальной версии, в которых они будут отличаться буквально в одной строчке кода - в реальном создаваеом классе.

Есть еще какие-то Dependency Injection типа Dagger 2, я их смотрел но они мне кажутся какими-то дохуя навороченными для такой простой задачи.
>>819703>>820439
#202 #819703
>>819671

>тестирование


>2016

>>819803>>822458
#203 #819730
Гугл заменит java на swift
Пердаки горят

https://lenta.ru/news/2016/08/14/newgoogleos/
#204 #819734
>>819730
Скорее пердаки будут гореть у intellij
>>819752>>819770
5629 Кб, 432x232
#205 #819736
>>819730

>лента

#206 #819751
>>819730
В статье ни слова про свифт. Это очень даже хорошо если уберут все старые костыли и начнут заново.
>>820447
#207 #819752
>>819734
А при чем тут жетбрейнс, их идеешки все равно лучше.
>>820684
#208 #819770
>>819734
Им то че? У них аппкод есть.
>>820684
#209 #819803
>>819703

> 2016


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

#210 #819842
https://lenta.ru/news/2016/08/14/newgoogleos/

Сушим весла пацаны
>>819850>>820228
sage #211 #819850
>>819842
Глаза протри.
sage #212 #820228
>>819730
>>819842
Съеби, а?
#213 #820330
Здарова, мужики. Чего-то у вас бедно по инструментам. Хочу вкатиться на месяц-другой, запилить чисто себе говноприлагу типа клиент могильный для сайта, но не хочу/не буду джяву. Ксамарин отпадает так как ради него не собираюсь ставить прошивку для игорь. Что еще есть? В курсе про ндк, это пиздец геморно. Сам чаще пишу на питоне и го. Выблядок хипстерский, ага Что посоветовать можете, кроме бочки и хуйцов?
>>820341>>820352
#214 #820341
>>820330
cordova и съебать в js тред
>>820348
#215 #820348
>>820341
Я натурал.
>>820396
#216 #820352
>>820330
Напиши на Хаскелле. После го и питона вообще просто будет https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs
>>820354
#217 #820354
>>820352
Норм, спасибо
#218 #820387
>>817048
Посмотри как это через retrofit делается, я конечно на 100 мегов не отправлял, но на 4-5 тянет легко
#219 #820396
>>820348
Натуралы на андроид пишут на джаве, ну в крайнем случае на котлине. Если тебе сделать копию сайта то действительно cordova твой друг.
#220 #820408
>>819530
Это опять я. Разобрался немного с шаблоном по nav-drawer-у. Но там создается немного не то. В шаблоне вызывается drawer по нажатию на кнопку в тулбаре, и все это делается через toggle. Я написал то же, что было здесь: https://developer.android.com/training/implementing-navigation/nav-drawer.html за исключением мест, связанных с этим toggl-ом. Казалось бы, пальцем уже можно что-то выдвинуть, но пока нихрена не выдвигается. Вообще, я пытаюсь привязать выдвижение drawer-а к какой-то своей кнопке на экране а тулбар вообще у меня отсутствует. Что мне делать?
57 Кб, 738x1276
171 Кб, 1196x752
#221 #820426
>>820408
Ну хуй знает, у меня все ОК.
>>820427>>820636
209 Кб, 1416x728
#222 #820427
>>820426
>>820408
Лэйаут активити.
#223 #820439
>>819671
Бамп вопросу. Неужели никто тут юнит-тесты на ведре не делает?
>>822473
#224 #820442
Сап, резонно ли использовать AccountManager в более-менее крупном проекте ? (Авторизация через свой сервер со своими соотв. данными)
>>820579
#225 #820444
>>820408
Если б-г разумом не наделил, то можешь например поюзать либу от Mike Penz-а, а так, статей по навигации тысячи
#226 #820447
>>819751
ИМХО, жаба достаточно вменяема для создания стандартных приложений, нафига что-то менять я понять не могу, лучше уж пусть запилят сборку побыстрее в студии...
#227 #820451
>>820447
Сборка и так быстрая, если дать памяти и в отдельной жвм.
Я не про косяки джавы, у самого андроида жуткая фрагментированность и куча старых болячек, их надо уничтожить, новая система это могла бы сделать, но вряд ли они откажутся от нашего нелюбимого зеленого гомункула.
#228 #820465
>>820447
Андроид был типичным стартапчиком. Его побыстрому сляпали из говна и палок и вовремя заняли нишу.
Теперь, когда andorid принадлежит ~90% рынка, нужно переделывать нормально.

По опыту наблюдением за развитием WindowPhone, я тебе гарантирую, там будет:
1) обратная совместимость со старыми android приложениями
2) нормальное обновление в независимости от производителя (как у iOS/WP)

Так что для людей, которые учились программировать, а не задрачивать Java+AndroidAPI - все только в плюс.
>>820535>>820584
#229 #820491
>>820447

>нафига что-то менять я понять не могу


Там вроде всякие легальные терки с ораклом были, который та еще корпорация зла с анальнейшими лицензионными соглашениями, просто не разменивается на мелочи и суды с кем-то меньшим чем гугл.
36 Кб, 428x359
320 Кб, 1440x900
#230 #820535
>>820465
Господа, вот какое будущие нам готовит Google:
0) OS НЕ на ядре Linux, а чистая Виртуальная Машина, работающая прямо на железе
1) Atom вместо IDE
2) Dark вместо языка
3) ReactJS/Native стиль разработки UI и при этом полностью в коде
4) Кроссплатформа (android/ios/fuchsia) из коробки, это частино решит проблему миграции (android->fuchsia)
5) Material Design везде (и на iOS)

Пользователи macOS/Linux могут уже сейчас ощутить на губах вкус новой жизни https://flutter.io/getting-started/
#231 #820538
>>820535

>2) Dark вместо языка


2) Dart вместо языка
#232 #820579
sage #233 #820580
>>820535
Просто иди нахуй.
>>820589
sage #234 #820584
>>820465

> По опыту наблюдением за развитием WindowPhone


Это которая благополучно сдохла?
#235 #820589
>>820580
Аноняшь, умерь агрессию, я же не говорю что это хорошо.
Я просто, принес последние новости из Android мира.
>>820593
sage #236 #820593
>>820589
Какие нахуй новости? Хватит всякое говно читать и новостями это называть. Заебали со своими истериками.

ГУГЛ ДУМАЕТ ПЕРЕЙТИ НА СВИФТ
ГУГЛ ДУМАЕТ ПЕРЕЙТИ НА ГО
ГУГЛ ДУМАЕТ ПЕРЕЙТИ НА РЕАКЕТЖС
ГУГЛ ХОЧЕТ ПЕРЕЙТИ НА ФУКСИЮ


И так, сука, каждый месяц. Необучаемые.
#237 #820600
>>820535
Какой смысл в этой говняной смеси из жса и жавы?
>>820616
#238 #820601
>>820593
В истерике, здесь бьешься только ты небось еще и не java пишешь.

Интеллигентные разработчике #slack, с интересом обсуждают эту новость.
http://www.androidpolice.com/2016/08/12/google-developing-new-fuchsia-os-also-likes-making-new-words/
>>820605
sage #239 #820605
>>820601

> Хватит всякое говно читать и новостями это называть.

#240 #820609
Раз в месяца 3 берусь за новый проект и заканчиваю подключением GCM и это пиздец.
Каждый раз всплывают какие то новые баги и несовместимости с обновлением множественных "модулей", рождаются новые костыли. Просто в голове не укладывается что я трачу на это время.
По сравнение с "этим" в iOS Apple уже все за тебя сделали.
#241 #820613
>>820593

> ВРЕЕЕЕЕТИ


Задания жавараш уже подходят к концу? :3
>>820617
#242 #820616
>>820600

>Какой смысл в этой говняной смеси из жса и жавы?


Ты про Dart? ХЗ, спроси у Google.
Наверное что бы подмять всех под себе: OS принадлежит Google, язык теперь тоже Google.

Хреновая вообщем тенденция, лучше бы сделали легкий дистрибутив Linux для мобилок.
Все бы, тогда писали бы на чем сами бы захотели.
sage #243 #820617
>>820613
Да-да, АНДРОИД СКОРО ВСЁ.
То его Ксамарин похоронит.
То РеактНэйтив.
Теперь вот Фуксия.

Джава тоже СКОРО ВСЁ.
Сначала её убъет Котлин.
Потом её убъет ЖС.
Потом её убъет Дарт.
>>820688>>826642
#244 #820620
>>820535
Кстати, по последним данным вроде бы Intel Multi-OS Engine закрылся.
Видимо, Intel поняли что не смогу тягаться с Google на умирающей платформе.
>>820621
#245 #820621
>>820620
Не пизди, они на той неделе новый релиз выкатили.

> на умирающей платформе


Што?
>>820668
213 Кб, 1232x726
33 Кб, 1054x196
71 Кб, 1198x208
#246 #820625
ЧЯДНТ?
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
#247 #820628
>>820625
в манифесте прописал?
>>820633>>820645
#248 #820633
>>820628
МАНЯФЕСТ гыгыг
#249 #820636
>>820426
Странно. Вроде тот же код, а работать не хотит
http://pastebin.com/YkfCPzGx
#250 #820645
>>820628
>>820625
InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
Вот так сработало без ошибки и выдало токен. Апи 17.
34 Кб, 518x266
71 Кб, 1013x505
#251 #820668
>>820621

>Не пизди, они на той неделе новый релиз выкатили.


Ну ни трялль плиз
1) последний билд от 20 мая
2) форум разработчиков, уже в корзине
#252 #820682
>>819552

>Я вот знаю только одно значения слова Scope - это область видимости внутри скобочек в языках программирования.


Говна тебе в кашу.
#253 #820684
>>819752
>>819770
Они как бы котлин разрабатывают.
>>820887
#254 #820687
>>820625
Нахуй тебе маслонож, когда есть православный датабиндинг?
#255 #820688
>>820800
#256 #820800
>>820688
Оракле их просто доебало уже
#257 #820887
>>820684
Да хоть очко себе пусть разрабатывают. Не велика потеря.
#258 #820982
Я хуею с этого аподила, куча жарников с говном и это называется медиация, блять.
Вот такой вот замечательный стектрейс получаю:
Fatal Exception: java.lang.VerifyError: com/avocarrot/androidsdk/DeviceInfo
at com.avocarrot.androidsdk.Avocarrot.(Avocarrot.java:49)
at com.avocarrot.androidsdk.Avocarrot.getInstance(Avocarrot.java:108)
at com.avocarrot.androidsdk.BaseController.(BaseController.java:53)
at com.avocarrot.androidsdk.BaseController.(BaseController.java:47)
at com.avocarrot.androidsdk.AvocarrotCustom.(AvocarrotCustom.java:21)
at com.appodeal.ads.native_ad.c.a(Unknown Source)
at com.appodeal.ads.y$1.run(Unknown Source)
at android.app.Activity.runOnUiThread(Activity.java:4737)
at com.appodeal.ads.y.a(Unknown Source)
at com.appodeal.ads.y.a(Unknown Source)
at com.appodeal.ads.y$a.a(Unknown Source)
at com.appodeal.ads.r$b.a(Unknown Source)
at com.appodeal.ads.r$b.onPostExecute(Unknown Source)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5372)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:970)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786)
at dalvik.system.NativeStart.main(NativeStart.java)
#258 #820982
Я хуею с этого аподила, куча жарников с говном и это называется медиация, блять.
Вот такой вот замечательный стектрейс получаю:
Fatal Exception: java.lang.VerifyError: com/avocarrot/androidsdk/DeviceInfo
at com.avocarrot.androidsdk.Avocarrot.(Avocarrot.java:49)
at com.avocarrot.androidsdk.Avocarrot.getInstance(Avocarrot.java:108)
at com.avocarrot.androidsdk.BaseController.(BaseController.java:53)
at com.avocarrot.androidsdk.BaseController.(BaseController.java:47)
at com.avocarrot.androidsdk.AvocarrotCustom.(AvocarrotCustom.java:21)
at com.appodeal.ads.native_ad.c.a(Unknown Source)
at com.appodeal.ads.y$1.run(Unknown Source)
at android.app.Activity.runOnUiThread(Activity.java:4737)
at com.appodeal.ads.y.a(Unknown Source)
at com.appodeal.ads.y.a(Unknown Source)
at com.appodeal.ads.y$a.a(Unknown Source)
at com.appodeal.ads.r$b.a(Unknown Source)
at com.appodeal.ads.r$b.onPostExecute(Unknown Source)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5372)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:970)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786)
at dalvik.system.NativeStart.main(NativeStart.java)
#259 #821015
>>820535
Занятно, мне понравилось на первый взгляд.
#260 #821133
Двощ, помоги.

Все началось с того что мне нужно было установить картинку на весь экран. Она имела размер 1080h на 1920w пикселей. Ну выдало мне мне нехватку памяти. Полез разбираться - нужно юзать битмап и скейлить изображение. Окей, взял со stackowerflow метод - принимает 2 параметра необходимую высоту и ширину и скейлит изображение.

Вначале проверил на 600 на 600 - норм выглядит, норм работает.

Но дело в том что размеры экрана моего устройства (metrics.heightPixels и ширина) как раз 1080 на 1920. И самом собой при использовании метода по сжатию - мне опять выдает out of memory

+ меня смущает что при 600 на 600 она выглядит норм. Может исходный ресурс какое-то разрешение не верное имеет? Или блять что-то не в пикслях считает, а в dp?
#261 #821137
>>821133
Glide/Picasso/Universal Image loader в помощь. Юзают почти все
>>821151
#262 #821149
>>821133
Что-то ты неправильно делаешь, видимо у тебя до загрузки картинки память уже забита.
Сделай дам прямо пере загрузкой и скинь картинкой.
>>821164
#263 #821151
>>821137
Спасибо анон, но мне в чем тут проблема хотелось понять. В приложении только одна картинка и есть - фоновая. Не хотелось бы из-за нее одной фреймворк подключать и разбираться.

Эта картинка в drawable лежит. Может нужно в какой drawable-экстра hdpi засунуть?
>>821157
#264 #821157
>>821151
В drawable-nodpi ставь. Обычный drawable в твоём случае скейлится в 3 раза, отсюда oom.
>>821164>>821171
#265 #821164
>>821149
Да нечему там до картинки отжирать. Все нормально было, пока я с ней не стал работать, вот код

http://www.codesend.com/view/fb5c2d7a4c9e32c4f28616b77ff9ed7c/

Вот расход памяти:

Memory 1117
Memory 1117
Memory 77912

>>821157
Спасибо, сейчас попробую
#266 #821171
>>821157
Большое спасибо, после изменения начало хавать 13 метров. Настрою еще что бы на альфаканал не обращало внимание и может чуть уменьшу - вообще отлично будет. Который час уже с этим долбился, ты мой спаситель.

А можешь чуть развернетее объяснить почему так происходило? Оно в 3раза больший размер выводило?

Оно будет так же норм, если я буду пихать в свой drawable-xxhdpi, так?
>>821207
#267 #821207
>>821171

> Оно в 3раза больший размер выводило?


drawable аналогичен drawable-mdpi.У тебя xxhdpi, это в 3 раза больше, чем mdpi, поэтому система сама скейлит картинки.

> Оно будет так же норм, если я буду пихать в свой drawable-xxhdpi, так?


Лучше drawable-nodpi, но я понятия не имею, что ты там делаешь вообще.
#268 #821495
Привет анончики. Начал проходить курсы на udacity, там начинается с разметки приложения. RelativeLayout, LiniarLayout и т.д. Вообще ийзи идёт, что-то на уровне легкости html. Ну оно и не удивительно, похожие же языки разметки.

Но у меня есть вопрос: в сколько раз сама разработка сложнее, чем все эти разметки.
>>821498
#269 #821498
>>821495
Я уже полгода пишу логику для этой ебучей разметки. На юдасити шли нахуй все видео, если ты выбрал курс Android dev и сразу пиши приложения - так сэкономишь время курса.
>>821499
#270 #821499
>>821498
Спасибо за ответ. Вот же пидоры. Выставляют все так, как будто разработка под андроид это легко и даже твоя бабка сможет её осилить, начиная с разметки. А то я так потрачу овер 9000 часов на разметку, а потом окажется что я не тащу собственно саму логику. И нахуй мне теперь все эти сраные атрибуты.
>>821500>>821674
#271 #821500
>>821499
Да, это легко. Поначалу.
#272 #821526
>>821133

>Окей, взял со stackowerflow метод


Stackoverflow Driven Development. Вся суть современных разработчиков.
>>821547
361 Кб, 500x656
#273 #821547
>>821526

>Stackoverflow Driven Development


Все по книгам
104 Кб, 1450x386
#274 #821571
Не, ну это уже вообще на грани фантастики. ЗАЩО
#275 #821672
Аноны, подскажите пожалуйста.

Как вытащить данные из базы данных? То есть у меня есть база данных, в которой есть какой-то текст. Как мне его вывести, например, в TextView? Подскажите, какие методы используются, чтобы это сделать. Дальше уже буду искать туториалы, да на stackoverflow смотреть.
>>821712
#276 #821674
>>821499
Это действительно легко. На уровне пыховебмакакинга, сложно найти что-то более простое в профессии.
>>821695
#277 #821695
>>821674
Мамкин программист с 300к/с подъехал?
37 Кб, 499x244
#278 #821712
>>821672

>Как вытащить данные из базы данных?


Ташема секретов то тут и нет.
Тупа берешь через openOrCreateDatabase + rawQuery и вытаскиваешь.
>>821719>>821820
#279 #821719
>>821712

> openOrCreate


> rawQuery


Ну ты и говноед
>>821741>>821746
#280 #821741
>>821719
Иди нахуй, так деды еще в 45 кодили под 1.1 и нам велели.
Ты ветеранов андроид-разработки не уважаешь что-ли, сука?..
#281 #821746
>>821719
Какие тогда альтернативы?
>>821752
#282 #821752
>>821746
SQLiteOpenHelper
getReadableDatabase
query
>>821762>>821820
#283 #821760
Прохожу курс от "Android Development for Beginners". Господи какой-то же он классный. А ведущая девушка азиатской внешности такая милая. Невозможно оторваться от курса. Только что по клику кнопки изменил число на экране. Эйфория. Порой даже верится что получится в программисты.
>>821763>>821772
#284 #821762
>>821752
Ты еще провайдеры посоветуй
>>821798
#285 #821763
>>821760
от Udacity
быстрофикс
#286 #821772
>>821760
Хуйня, начинай сразу обычный курс по ведру.
>>821781
95 Кб, 469x866
#287 #821781
>>821772
У меня щас охуенный флоу, не сбивай мне комбо. дай побыть еще в манямирке
>>821785>>822136
#288 #821785
>>821781

>Закаать

>>821791
#289 #821791
>>821785
Лол, даже не заметил. Не сплю с 2 ночи, мозг процентов на 40 работает.
>>821803
#290 #821798
>>821762
Ну я все таки считаю что они оверхед. Хотя если хочешь что бы с uri было то да, почему бы и нет.
>>821821
#291 #821803
>>821791
Если писал приложение всё это время, то одобряю. Я потратил сутки(отрываясь на еду и толчок) на написание Movie Base в другом курсе по андроиду от юдасити
>>821814
#292 #821814
>>821803
Да прям в 2 ночи проснулся, стукнуло в голову стать андроид разработчиком. Установил студию, открыл курсы на юдасити и пошло поехало. Надеюсь дойду до Movie Base как и ты и не застопорюсь с унылыми мыслями что программирование это тяжело и какой же я тупой.
>>821816>>821861
#293 #821816
>>821814
Ну удачи тебе :3
>>822428
#294 #821820
>>821752
>>821712
Спасибо. А как, так же вытащить, только, из MySQL?
>>821861
#295 #821821
>>821798
Это был сарказм.

Теперь честно:
1) contentprovider - НЕ НУЖЕН
2) sqlite без ORM - НЕ НУЖЕН
>>821892>>821896
#296 #821861
>>821820
А, это ты. Тебе уже сказали как пилить рест морду.
>>821814
Да, вначале всегда романтика. А потом говнозаказчики, говнодизайнеры и говноменеджеры всю романтику портят.
>>821872
#297 #821872
>>821861
Скажи, пожалуйста по каким тегам гуглить? Ничего годного найти не могу.
>>821875
#298 #821875
>>821872
mysql + express + nodejs
#299 #821892
>>821821
Очень содержательно.
#300 #821896
>>821821
1) Если у тебя простое приложение, то ContentProvider может быть избыточным
2) ORM и всякие Realm не нужны. Достаточно использовать лёгкую библиотеку, предоставляющую удобное API для SQLite. например, StorIO

Пофиксил тебя.
>>821901>>822041
#301 #821901
>>821896
OK, даже спорить не буду ибо это продолжается уже не один тред, едем дальше.
#302 #821984
>>814733 (OP)
Анончики, как правильно нотифаить о завершении запроса из сервиса? Юзать евинтбас? А он придет потом, если приложение свернуто в этот момент, и я отписался в онстопе?
>>821998
#303 #821998
>>821984
Не прийдет тебе после он стопа нихуя. Только пляски с синглтонами и преференсами.
>>822011
#304 #822011
>>821998
ну епт, а в чем тогда плюс евентбаса от бродакстресиверов всяких?
>>822020>>822030
#305 #822020
>>822011
А ты какую библиотеку используешь для реализации эвентбаса?
>>822045
#306 #822030
>>822011
Тем что не надо ебаться генерить плагином с парселеблом.
#307 #822041
>>821896

>Достаточно использовать лёгкую библиотеку, предоставляющую удобное API для SQLite. например, StorIO


>StorIO


Cupboard наше все. Хули все так рекламируют этот сторИО?
>>822078
#308 #822042
Учил вот джаву, но что-то очень скучно, решил попробовать андроид, расскажите чем занимаетесь, сколько времени идет на обучение. Советы и ответы на ФАК приветствууются
#309 #822044
>>822042

>расскажите чем занимаетесь


Занимаемся разработкой мобильных приложений на андроид.

>сколько времени идет на обучение


Уже полтора года опыта, а все еще учусь.
оп
#310 #822045
>>822020
я только otto знаю
>>822900
#311 #822077
>>822042

>расскажите чем занимаетесь


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

>сколько времени идет на обучение


Всегда учишься. Ну это вообще про программирование если конечно речь не про энтерпрайз.
#312 #822078
>>822041

>Хули все так рекламируют этот сторИО?


С Rx связка нормальная.
#313 #822088
Поставил студию, но она закрывается без еррора,в процессах её нету. В чем дело?
#314 #822114
Получил класный креш:
android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed.
at android.database.CursorWindow.<init>(CursorWindow.java:108)
at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
at android.database.sqlite.SQLiteCursor.clearOrCreateWindow(SQLiteCursor.java:300)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:138)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:132)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:219)
at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:258)

И это на строке:
if (cursor != null && cursor.moveToFirst()) {...
Чо мне с курсором то делать надо что бы такого не было?
>>822120
#315 #822120
>>822114
Не создавать.
>>822204
#316 #822129
>>822042

> сколько времени идет на обучение.


4 с половиной года учусь, например. До сих пор днище ибо работать не пробовал, а практика нерегулярная. Не будь таким, как я.
#317 #822131
>>820535

>2 пик?


Это макось? Красиво!
Сначала подумал, что элементари
#318 #822136
>>821781
Не слушай его, курс хорош, если ты с нуля. И делали гугловские разработчики.
Там по соседству где-то курс по Гиту от двух тянок валяется, тебе тоже пригодится в будущем
267 Кб, 506x900
#319 #822166
Что за шрифт на пикче используется для отображения времени? Хотеть такой
>>822167
#320 #822167
>>822166
Roboto Light. Или Thin, на глаз не всегда могу отличить.
>>822168
#321 #822168
>>822167
Спасибо анончик, добра тебе
#322 #822204
>>822120
И как же вытаскивать данные про треки юзер без курсора?
#323 #822212
Аноны, как устроены мессенджеры? Они что, опрашивают сервер каждую секунду, чтобы узнать, нет ли новых сообщений? А если нет, то как?
>>822256
#324 #822256
>>822212
С О К Е Т
104 Кб, 465x858
#325 #822428
>>821816
Спасибо. Да я уже андроид-разработчик бвухахахаха. Ты тоже пости свои достижения. Movie Base, например.
>>822666
#326 #822458
>>819703
нет ну вы посмотрите, этот идиот гринтекстит тестирование, как вы его еще до сих пор не обоссали блять, сука, тред школьников и дегенератов
>>822509>>822815
#327 #822463
Анончики, что надо знать, чтобы взяли на работу джуном, или хотя бы стажером?
>>822794
#328 #822473
>>820439
https://habrahabr.ru/company/rambler-co/blog/266837/
roboelectric позволяет тестировать http запросы, думаю, это то, что тебе нужно
>>822901
#329 #822509
>>822458
Обоссывают школьники и дегенераты. Вменяемым похуй. Пройдите в /b/, пожалуйста.
>>822528
#330 #822528
>>822509
каждый раз, когда вменяемым похуй, школьников и дегенератов становится больше, это раковая опухоль, а ее надо лечить.
#331 #822609
Так что ведроиданы, как спасаться от курсора более 2мб. И какв ообще с такими объемами данных вменяемо работать на мобилке?
>>822621
#332 #822621
>>822609
Очевидно пиздовать в стаковерфлоу в котором эта тема обсасывалась уже не раз использовать новую поистине кроссплатформенную СУБД Realm.
>>822902
#333 #822666
>>822428
Добавь отмену предыдущего действия
>>822924>>822991
#334 #822794
>>822463
di mvp rx mvvm kotlin
#335 #822815
>>822458
пиздец, дурачку припекло, что пока он пишет свои ссаные тесты, норм парни едят маффины и ебут тёлок
#336 #822819
Здравствуйте, это снова я с VK-приложением. >>819511

(Не спрашивайте, почему так долго пишу, был занят другими делами).

Так вот, допустим, я создаю новую Activity, чтобы, например, показать в ней информацию о чате.
Как туда передать VKAccessToken?

Остальные данные худо-бедно передаются:
Bundle chatData = new Bundle();
chatData.putIntArray("CHAT USERS", chosenChat.users);
chatData.putString("CHAT TITLE", chosenChat.title);

Intent intent = new Intent(Activity.this, ChatActivity.class);
intent.putExtra("CHAT DATA", chatData);
startActivity(intent);

Но! VkAccessToken нельзя передать просто так. Его не разобрать на элементы и собрать заново, он не Serializable, и вообще какой-то мутный. В новой Activity заново проходить авторизацию, что ли?
>>822821>>822835
1 Кб, 627x18
#337 #822821
>>822819
Вакаба опять съела спецсимволы.
#338 #822835
>>822819
Ты сорцы принципиально не смотришь?

У тебя аж 4 возможности!
1. Через файл
2. Через шаред преференсы
3. Через сериализацию в строку методом serialize
4. VkAccessToken - блядский синглтон
>>822838
#339 #822838
>>822835
Оу. Спасибо большое!

Непривычно лезть в сорцы. Всегда, когда хотел узнать про метод, заходил на MSDN, вводил название и получал самое подробное описание.
>>822903
#340 #822900
>>822045
Она уже deprecated.
>>822964
#341 #822901
>>822473
Нет, это хуйня.
#342 #822902
>>822621
Говна пожуй.
#343 #822903
>>822838

> MSDN


Тебя уже не спасти. Уж лучше бы ты на пхп писал.
#344 #822924
>>822666
Хотел добавить, но Андроид студия перестала работать. Точнее эмулятор перестал работать. Вчера работал, сегодня включил пеку и эмулятор больше не запускается, жалуясь на отсутствие аппаратного ускорения в процессоре. Это пиздос, еще вчера все работало.
>>822962
#345 #822962
>>822924
Маленькие гомики вынесли из твоего процессора аппаратное ускорение, чтобы ты не стал андроид разработчиком. Честь им хвала.
>>822981
#346 #822964
>>822900
Очко у тебя дерпекейтед
#347 #822981
>>822962
Переустановил шиндовс, студия заработала. Пилю кнопку "назад".
>>822991
111 Кб, 489x876
#348 #822991
>>822666
>>822981
Вообщем вот, готово.

Функционал довольно простой.

При клике на кнопку 3/2/1 очка в переменную currentState записываю 3 2 или 1. Потом на методе кнопки отмены:
if (currentState == 1 || currentState == 2 || currentStat == 3)
teamscore = teamscore - currentState;
display(teamscore);
Просто отнимаю у текущего количества очков, то, что было нажато.

Я понимаю что это может быть нубское и кривое и неправильное решение, но это единственное с чем я смог совладать.
#349 #823000
Есть здесь такие, кто пользовал MaterialDrawer от mikepenz?
Мне нужно запихнуть его во фрагмент, но в билдере есть метод только withActivity. Я могу привязать его к общей для фрагментов Activity, но как сделать, чтобы на одних он выдвигался, а на других - нет? Пока что лучшее что я придумал это closedrawer в onDrawerSlide, но это кривовато смотрится, да и в целом
>>823724
#350 #823030
Как лучше хранить изображения в SQLITE?
>>823040>>824271
#351 #823040
>>823030
Пути к изображениям.
#352 #823046
Как поменять connection interval со стороны мастера для ble или это можно только сделать через реквест со стороны периферии? Необходимо выставить его как можно большим.
#353 #823204
>>822991
Заноси весь счет за матч в коллекцию, чтобы кнопка отмены работала не один раз, а несколько.
>>823217
272 Кб, 1920x1080
#354 #823217
>>823204
А она и так не один раз работает, а сколько угодно. Переменные очков матчей - глобальные.

У меня тут другая проблема назрела. Иду дальше по курсе, пришло время делать чекбокс. Тут андроид студия мне выкидывает новый сюрприз. Вместо чекбокса в превью просто надпись Checkbox серая. Превью еще и ошибку выдаёт.

Кто-нибудь сталкивался? Есть не сложно проверьте как вас, может они поломали чекбоксы?
>>823291
#355 #823291
>>823217
Отбой. Загуглив ошибку, оказалось что если переключить превью на API 23 вместо 24, то ошибка исправляется.
>>823402
#356 #823402
>>823291
Сделай Darcula тему, глаза режет.
>>823418>>823441
#357 #823418
>>823402
тёмная тема вырвиглазная
#358 #823425
>>823418
Твоя белая тема вырвиглазная. Еще и на дваче небось дефолтная тема вместо Neutron.
Попробуй, когда привыкнешь, не сможешь вернуться обратно.
>>823430>>823657
214 Кб, 1280x800
#359 #823427
>>823418
Она тебе зрение бережёт, дурашка :3
>>823430
#360 #823430
>>823427
бережет только если кодишь в темноте. У меня на ней всё расплывается, нихуя не вижу.
>>823425
Futaba у меня
>>823441
262 Кб, 1920x1080
#361 #823441
>>823402
Ну такое... Удобность зависит от времени суток. Сейчас ночью да, удобно.
>>823430
Че за футаба, кидай скрин/линк.

Иду дальше по курсу. Ведущая попросила добавить функционал учета сливок и шоколада, взял и добавил, без задней мысли. Сейчас буду смотреть как она это сделала.
#362 #823445
Эээ, у двача есть темы, а где их можно поменять?
>>823450
#363 #823450

>Че за футаба, кидай скрин/линк.


А все понял, это тема двача. Этот желтый вырвиглазный цвет...

>>823445
Самое вернее меню.
>>823453
#364 #823453
>>823450
он телесный, а не желтый
#365 #823649
>>823418
Ночью - охуенно.
А вот днем пробовал работать на дракуле с улицы - нихуя не видно было вообще, как ни странно.
А вообще у меня sublimetext3
#366 #823657
>>823425

> Твоя белая тема вырвиглазная. Еще и на дваче небось дефолтная тема вместо Neutron.


Лол, так ведь это нейтрон — вырвиглазная параша, тогда как фотон очень выглядит очень солидно и стильно.
Кстати, тоже предпочитаю светлую тему в AS. Не понимаю вашего спора, кто-то любит светлые темы, кто-то тёмные, так что пусть пользуется тем, что нравится.
>>823667
#367 #823667
>>823657
Серо-оранжевый фотон выглядит как хуита для школьников-"экстремалов" и прочей ниферской нечисти из середины нулевых в патрулях и обосранных джинсах с мотней до пола.
футаба-демиург
#368 #823724
>>823000
В активити создай поле куда ты можешь запихнуть текущий открытый фрагмент и делай проверку при открытии дровера, мол тот ли этот фрагмент для которого дровера надо открывать.
#369 #823830
Хелп.
Есть код с ViewPager, 3 фрагмента для него и лайаута.
Когда добавляю 2 фрагмента, всё отлично перелистывается и работает, а когда пытаюсь добавить третий всё крашиться. Что делать?
Вот код MainActivity: @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(new CustomAdapter(getSupportFragmentManager(),getApplicationContext()));

}

private class CustomAdapter extends FragmentPagerAdapter {

private String fragments [] = {"1","2"};

public CustomAdapter(FragmentManager supportFragmentManager, Context applicationContext) {
super(supportFragmentManager);
}

@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new Fragment1();
case 1:
return new Fragment3();
case 3:
return new Fragment2();

default:
return null;
}
}

@Override
public int getCount() {
return fragments.length;
}

@Override
public CharSequence getPageTitle(int position) {
return fragments[position];
}
}
}
#369 #823830
Хелп.
Есть код с ViewPager, 3 фрагмента для него и лайаута.
Когда добавляю 2 фрагмента, всё отлично перелистывается и работает, а когда пытаюсь добавить третий всё крашиться. Что делать?
Вот код MainActivity: @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(new CustomAdapter(getSupportFragmentManager(),getApplicationContext()));

}

private class CustomAdapter extends FragmentPagerAdapter {

private String fragments [] = {"1","2"};

public CustomAdapter(FragmentManager supportFragmentManager, Context applicationContext) {
super(supportFragmentManager);
}

@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new Fragment1();
case 1:
return new Fragment3();
case 3:
return new Fragment2();

default:
return null;
}
}

@Override
public int getCount() {
return fragments.length;
}

@Override
public CharSequence getPageTitle(int position) {
return fragments[position];
}
}
}
#370 #823855
>>823830
забыть о программирование
#371 #823860
>>823830
Почему нельзя просто кинуть код на пастбин, нахуя засорять тред?
#372 #823925
>>823830
Fragments.length тебе возвращает 3, при этом ты запрашиваешь индекс третьего фрагмента как 3 вместо 2. Из за того и крашит.
#373 #823928
>>823830
Да и вообще у тебя там какая то хуита писана. Возвращаешь null вместо какого нибудь дефолтного фрагмента, вообще идиот, пиздец
#374 #824247
Есть ли фриланс на андроиде сравнимый с вебом, просто саморазвитие саморазвитием, но деньги тоже нужны.
>>824272
#375 #824271
>>823030
байткод
#376 #824272
>>824247
нету
>>824276
#377 #824276
>>824272
А хоть какой-то есть ?
>>824835
#378 #824399
В универе учили Си, сейчас хочу вкатиться в Джаву. Какую книгу посоветуете, чтобы именно не плотно стоящий на ногах студент первого курса (уже получается второго) со знаниями Си мог вкатиться в джаву и затем в андроид? Философия Джава идеально подходит?
>>824405
#379 #824405
>>824399
Забудь за все что ты учил в универе. И программирование тоже, оно для больных гениев.

https://ideone.com/jZL4Cz

Посмотри на этот код. Этот код я взял из реального проекта. Из игры. Это код отвечающий за парсинг файлика .osz - местный формат карт в игре. 700 строк кода, просто что бы запарсить 1 жалкий файлик. 1400 строк кода gamedata.java

А теперь после просмотра этого когда, спроси себя, сможешь ли ты совладать с этим?
>>824415
#380 #824415
>>824405

>https://ideone.com/jZL4Cz


Игры на java вместо юнити? Что с тобой?
Вы даже жавадок оформили молодцы.
>>824464
#381 #824464
>>824415

>Игры на java? Что с тобой?


действительно, нужно же было на котлине писать
>>824466
#382 #824466
>>824464

>kotlin


Уноси отсюда это, будь добр!
>>824497>>824499
19 Кб, 480x360
#383 #824497
>>824466
Няш, не бугурти, на вот тебе кексик

https://www.youtube.com/watch?v=CABN2r4GPpQ
>>824498
#384 #824498
>>824497
Уруру :3, но ты всё равно уноси подальше.
#385 #824499
>>824466
Форс форсом, а мне понравилось. Перенес свой мелкий проект на него.
#386 #824724

> Ensure SwipeRefreshLayout indicator is shown when setRefreshing(true) is called before the first measurement pass


> Reported Oct 18, 2014



Господе, какие же гуглы мудаки. Ну хотя бы можно теперь не ебаться вызовом через post.
#387 #824835
>>824276
нету
#388 #825020
1. У меня есть активити с чекбоксами и прочей парашей, обычный круд который сохраняет в бд. Можно ли как-то легко стилизировать его в стиле настроек, чтобы вместо чекбоксов была кнопка которая ездит влево-вправа (как эта параша вообще называется?), дропдаун лист тоже как в настройках стандартных приложений.
2. Чтобы взять ширину/высоту вложенного элемента уже после всей обработки я делаю так:
pizdaView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int width = pizdaView.getWidth();
pizda.fuck(new Hui(width));
}
});
Это норма и так все делают? Выглядит довольно костыльно.
>>825022
#389 #825022
>>825020

> которая ездит влево-вправа


https://developer.android.com/reference/android/widget/Switch.html

> и так все делают


Я делаю через pizdaView.post { pizdaView.getWidth() }, но никто не запрещает вручную вызвать measure с нужными параметрами и посмотреть. Хоть в некоторых случаях у меня не получается так высчитать
13 Кб, 728x400
#390 #825180
Неясного о Fuchsia остается еще много. Главный вопрос все же остается прежним — в каких системах планируется использовать эту ОС? Ожидать, что она создана в качестве альтернативы Android OS не стоит, ведь для того, чтобы программный продукт, в особенности, операционная система стал успешным, нужно активное сообщество разработчиков, каталог приложений и т.п. Google вложил сотни миллионов долларов в Android и вряд ли собирается что-то поменять.

Фух. Выдыхаем.
>>825184
#391 #825184
>>825180
То есть до этого тебе это было непонятно? Какой же ты умный.
#392 #825278
Ведроиданы, у фронтендщиков есть вот такой вот плагин к системе сборки - https://www.npmjs.com/package/gulp-imagemin. Есть что-то подобное для gradle?
#393 #825322
>>825278
У фронтендщиков скиптодрисня и этим все сказано. Теоретически обфускация может сократить размеры class файлов.
>>825374
#394 #825342
>>825278

> Есть что-то подобное для gradle


Точно видел, но мне лень искать.
>>825371>>825374
#396 #825374
>>825322
Я ж не классы прошу сжимать, ясное дело что там прогвард, вообщем-то она таки и сжимает, но на фоне ресурсов это хуйня, пару тысяч методов удалится, но это сотни килобайтов. Я про ассеты и ресурсы картинок.
>>825342

>но мне лень искать


Ну лан.

Короче аапт для ресурсов это делает сам, но кастомно можно добиться лучшего результата.
https://medium.com/@duhroach/smaller-pngs-and-android-s-aapt-tool-4ce38a24019d

И разумеется если ты пожмешь сам, то аапт может сделать хуже.
#397 #825376
>>825371
О, найс, спасибо. Сейчас поиграемся.
>>825384
#398 #825384
>>825376
Да ты там и 10% не вытянешь.
>>825396
#399 #825396
>>825384
Но мне обещают 20%...
А не вытяну, значит плагин плохой, лол. Поиграюсь с библиотеками посмотрим чо как, мне ведь в принципе ассеты один раз сжать.
#400 #825600
>>814733 (OP)
Аноны, какие шансы устроиться джуном на ведре?
Знаю что мобильная разработка сейчас пользуется огромным спросом, но все же? Какие требования к джунам?
>>825603>>825714
#401 #825603
>>825600
RX + DI + MVP + KOTLIN
>>825634
#402 #825634
>>825603
на андроиде же все пишут, зачем котлин?
>>825669
#403 #825669
>>825634
На xml все пишут в вашем аднроиде.
#404 #825714
>>825600
Java, Android Studio, свои приложения в Google Play.
>>825718
#405 #825718
>>825714
Что можно запилить свое?
мимодругойанон
>>825722
#406 #825722
>>825718
Вайпалку тредов гей ниграми с рандомными ниграми и, чтобы батхертнутые посты в баззу данных сохранял.
>>825723
#407 #825723
>>825722
А как определять батхертнутые посты?
>>825724>>825730
#408 #825724
>>825723

Парсером
>>825726
#409 #825726
>>825724
Звучит так, будто кто-то уже такое сделал
>>825782
#410 #825730
>>825723
Машинное обучение же. Крайне необходимое умение в 2016.
>>825766
#411 #825766
>>825730
нейросети
#412 #825782
>>825726
Всё, что ты можешь сделать сам уже кто-то сделал до тебя. Причём значительно лучше.
#413 #825906
>>814733 (OP)
Аноны, если я аттачу/детачу вью к пресентуру в онкриейте/ондестрое, и эта вью ретаин фрагмент, то не будет же ничего течь? Пресенет соответсвенно находится в ретеин фрагменте.
>>825931
#414 #825931
>>825906
Ландан из зе кепитал оф грейт бритн в
#415 #825983
Есть тут такие же несчастные, кому как и мне приходится писать под xamarin?

Расскажите, как вы вообще живёте
>>826001>>826016
#416 #826001
>>825983

> несчастные


И хули ты несчастен? Если не замарин.формс, то тот же самый ведросдк + более няшный сярп.
#417 #826016
>>825983

>Есть тут такие же несчастные, кому как и мне приходится писать код каждый день


Расскажите, как вы вообще живёте
#418 #826317
sup
подскажите, аноны
могу ли я сделать в RecyclerViewAdapter кастомизированый первый айтем списка?
типо мне надо что бы первый айтем отображался с картинкой и текстом, а следующие обычные айтемы только текст
это надо в onBindViewHolder напиать что то типо
if(position =0){}
да?
>>826323
#419 #826323
>>826317
Переопределяешь getItemViewType, на нулевой итем возвращаешь какую-то константу, а на остальные - другую константу. В onCreateViewholder ты будешь получать viewType, в onBind ты можешь его получить через getItemViewType(position), но лучше конечно отдавать работу самому холдеру по байндингу данных.
>>826332
#420 #826332
>>826323
спасибо, анончик
#421 #826491
Шапку читал. Вопрос - за сколько реально освоить джаву до уровня андроида уделяя ей 4 часа ежедневно? Из опыта только Си в универе.
>>826647
#422 #826589
Вкатываюсь с проблемкой. Решение понадобится где-то через неделю, а может и позже, поэтому пишу сюда, а не гуглю и курю документацию, как белый человек.

Есть одно приложение и в нём есть платная услуга. Основная его функциональность обеспечивается сервером, платная услуга даёт дополнительную функциональность.
Итак, вопрос: как можно на серверной стороне проверить, купил ли человек эту услугу? Можно ли как-нибудь спросить подтверждение с сервера гугла?
>>826628>>826633
#423 #826628
>>826589
А ты не пробовал почитать документацию по in-app billing'у гугла? Они вообщем-то другую неохотно пропустят, если пропустят вообще. А в той конечно можно проверить наличие конкретной покупки, вот только ломается всякими лакипатчерами и прочей шляпой. Вообще у любой нормальной pay-системы есть возможность проверить перевода денег на счет, а на своем серваке после перевода бабоса записать транзакцию.
>>826633
#424 #826633
>>826628
>>826589
У вас при покупке выдается идентификатор покупки, который вы должны отправить себе на сервер и свалидировать у гуглов через апи.
#425 #826642
>>820617
А потом по их костям придет Хаскелл и похоронит всех!
#426 #826646
>>822991
Надеюсь, команда А и команда Б разнесены по фрагментам?
>>826695
#427 #826647
>>826491

>а сколько реально освоить джаву до уровня андроида


Примерно, как анатомию в мед. вузе.
#428 #826695
>>826646
Долбоеб что ли? Зачем?
>>826711
#429 #826711
>>826695
Он прав, либо адаптер делать либо 2 фрагмента, или 2 вьюхи на худой конец. 2 экземпляра одного объекта само собой.
#430 #826965
Котаны скажите плиз. Я сам ее-макака. Хочу использовать привычные методики.

Могу ли я в Андроиде:
1. Создать службу стартующую при запуске приложения.
2. Служба должна быть синглтоном.
3. В коде в активити с помощью депенденси инжекшен получать доступ к методам синглтоновской службы.
>>826966>>827017
#431 #826966
>>826965
Или вместо синглтона должен стартовать некий пул из экземпляров сервиса. А при депенденси инжекшене должен выбираться экземпляр из пула и после возвращаться в пул обратно
>>827017
97 Кб, 838x625
#432 #826967
>>822991

>только установил студию и делает приложение


>выглядит уже лучше моих


то чувство когда антидизайнер
>>826968
#433 #826968
>>826967
Так там изи же.
http://www.materialup.com/ в помощь.
#434 #826971
Короче есть под андроид cdi на уровне аннотаций. Или все же пилить ручную фабрику и гетинстансить
>>827017
#435 #826979
Насколько андроид перспективен для молодого разработчика без опыта? Сколько еще мобильный рынок будет на коне?
>>826988
#436 #826988
>>826979
Хайп сходит, перспектив никаких. Рынок перенасыщён, разработка происходит на уровне пхп макакинга. Лет 5 назад можно было вкатиться, сейчас просто забей.
>>826991
#437 #826991
>>826988
Какие альтернативы? Какая сфера на подъеме? Ты тралишь очевидно. Сейчас довольно популярна связка вр шлема + смартфон.
>>827017>>827038
#438 #827017
>>826971
>>826966
>>826965
Блять, о чем ты? Иди реализуй AbstractSingletonProxyFactoryBean.

> Создать службу стартующую при запуске приложения


> Служба должна быть синглтоном


Что ты вкладываешь в понятие служба. Можно запустить сервис как компонент приложения, можно просто хуякнуть в onCreate создание синглтона.

> В коде в активити с помощью депенденси инжекшен получать доступ к методам синглтоновской службы


Тогда только в виде обычного синглтона, DI есть, берешь и без задней мысли инжектишь. @Provides @Singlton, хуяк хуяк и в гуглплей.

>>826991

> Сейчас довольно популярна связка вр шлема + смартфон


Популярна где? Этим занимаются полторы студии и 3 калеки. Работу чтобы делать именно вр ты не найдешь.
>>827019
#439 #827019
>>827017

>Этим занимаются полторы студии и 3 калеки.



Самсунг, хуавей, даже сам гугл выходит на рынок со своим шлемом и платформой, а значит появится единый стандарт для запиливания приложух под вр, инструментарий удобный и тд.
>>827037
#440 #827020
Да кстати игры под андроид пишут на джаве или плюсах? Речь об играх уровня энгри бердс, растения и зомби и тд без графических наворотов.
>>827031
#441 #827031
>>827020
LibGDX - на java
Unity - C#
Cocos2dx - C++
>>827039
#442 #827037
>>827019
Выходить на рынок != пилить контент. АндроидТВ с АндроидАвто тоже вышел на рынок, но запил приложений на него не сильно то и популярен.
#443 #827038
>>826991

>Сейчас довольно популярна связка вр шлема + смартфон


Тебя в любом случае не возьмут без опыта работы с графонием.
#444 #827039
>>827031
Спасибо, глупый вопрос, но вот если андроид работает на джаве нативной, как он запускает с шарп код, это все как-то оборачивается в джаву перед загрузкой в гугл маркет?
>>827040
#445 #827040
>>827039
Для игр достаточно сишного NDK - там графика, звук, сенсоры. Юнити поверх него и работает.
>>827042>>827046
#446 #827042
>>827040
Понятно
#447 #827046
>>827040

>там графика, звук, сенсоры


а еще сик фолты и утечки памяти и c++ фу нахуй
>>827074>>827080
#448 #827047
Эмуляторы могут в Hot Swap.
>>827048>>827049
#449 #827048
>>827047
Это был вопрос.
#450 #827049
>>827047
Instant Run.
#451 #827057
У меня есть custom view, метод onDraw вызывает тяжеловатые вычисления. Есть ли какой-то изкоробочный метод чтобы инвалидировать view, и делать вычисления только по необходимости?
Или самому добавить переменную и тупо чекаеть её в onDraw?
>>827060
#452 #827060
>>827057
Тяжеловесные вычисления какой природы? Если их можно один раз подсчитать, а потом использовать. А подсчитывать скорее всего нужно в onLayout/onMeasure. Сделать свой сеттер, который при смене параметра вызывает invalidate.
>>827086
#453 #827074
>>827046

> c++


Выбор долбоёба. Идеальный вариант — чистый си.
#454 #827080
>>827046

>а еще сик фолты и утечки памяти и c++


Это называется фильтр от долбоебов.
#455 #827086
>>827060
Обработка возможных пересечений/коллизий объектов (от наличия которых зависит как их рисовать). Если пользователь подвигает объекты внутри, тогда надо перерисовывать и пересчитывать, однако это не каждый onDraw происходит.

>Сделать свой сеттер, который при смене параметра вызывает invalidate


не понел
>>827088
#456 #827087
аноны, нид хелп
есть список ReyclerView и адаптер кастомный
при нажатии на айтем списка должно открываться новое активити
но почему то когда происходит клик, то в моем листе, из которого я достаю данные обнаруживается, что он пустой
вот код адаптера - http://pastebin.com/VUQGmXc9
и мэйн активити - http://pastebin.com/iWPe6nbM
#457 #827088
>>827086
Вообще похуй, по-видимому андроид достаточно умён сам по себе чтобы не вызывать onDraw постоянно, он это делает только когда я трогаю соответствующую вьюху.
Это чтобы его наоборот заставить перерисовывать надо вызывать invalidate.
#458 #827107
Ведроиданы, есть какие-то четкие-ровные либы для WebRTC видео чатов? Ну такие что бы именно ваще крутяк, как retrofit или gson в своих нишах. Если нет, то это https://github.com/QuickBlox/quickblox-android-sdk нормальная тема? А это https://docs.oracle.com/cd/E55119_01/doc.71/e55126/wd_androidapps.htm#WSEWD512 ?
#459 #827207
Анон, где можно поучить колекции?
>>827221>>827227
#460 #827221
>>827207
В гугле. Ну сириусли, вы смеетесь?
#461 #827227
>>827207

>Анон, где можно поучить колекции?


https://kotlinlang.org/docs/reference/collections.html

не благодари
>>827256
#462 #827256
>>827227
На сколько хуево, если я кладу котлин файлы в java папку?
>>827294
#463 #827262
Как вы делаете такую чтуку? При страте активити или фрагмента надо показать анимацию появления чего то, как это делать по правильному? В он старте, через хендлер или ещё есть какие то способы?
>>827293
#464 #827293
>>827262
Я в онСтарте через хендлер, если это больше ни от чего не зависит.
#465 #827294
>>827256
В последних версия уже пофиг.
Тоже кстати ленюсь перекидывать в /kotlin/.
#466 #827307
>>814733 (OP)
https://www.udacity.com/course/developing-android-apps--ud853 нормас тема в дополнение к книгам и докам?
>>827324>>827344
#467 #827324
>>827307
https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801
Вот единственный годный курс. Можешь его на месяц бесплатно получить, если есть студенческий аккаунт на гитхабе.
>>827329>>827405
#468 #827329
>>827324
Так это не курс, а программа целая и первый курс как раз тот, который я скинул, ну короче норм. Нет к сожалению уже не студент и еще не студент.
>>827340>>827341
#469 #827340
>>827329
И книги выкинь, они все уже устарели.
>>827347
#470 #827341
>>827329
Хотя если деньги есть, купи эту программу - не пожалеешь ни разу. Там даже кодревью делают тебе.
>>827345
#471 #827344
>>827307
Неплохой курс, но нанодегри пизже конечно.
>>827345
#472 #827345
>>827341
>>827344
Спасибо, может и куплю.
#473 #827347
>>827340
The Busy Coder’s Guide to Android Development

И эта тоже?
>>827356
#474 #827350
Кто кстате записался на 24-часовой экзамен от гуглов за 100 бачей?
#475 #827356
>>827347
Не вижу смысла в такой книге, когда есть бесплатные, обновляемые доки от гугла.
>>827357
#476 #827357
>>827356
Ок, понял.
#477 #827376
>>814733 (OP)
Такой вопрос, аноны. Курсы от гикбрейнз хуйня или стоящая штука? интересует именно мобайл разработчик. Напрягает долгость изучения - 11 мес, это чет долго
#478 #827389
>>827376
По мне так мутная контора
>>827402
#479 #827402
>>827389
Почему? Мне прельстит что там типа общаешься ирл вроде как с людьми в профессии, можно спросить прям сразу что да как
>>827405
#480 #827405
>>827402
Так-то оно так, но набирают они там огромное количество народа и много внимания они вряд ли уделят каждому, проще на двач код залить, авось кто и посмотрит. Я сам с 0 вкатываюсь (только си знаю и питон). Сначала думаю джаву выучить по Эккелю, а потом брать доки и курс вот этот >>827324. Ну дело твое.
>>827409
#481 #827409
>>827405
Спасибо за курс, >>827405
13к в мес, пизда, мне бы зарабатывать каким-нибудь веб-макакингом столько в своей мухосрани
>>827456
#482 #827456
>>827376
>>827409
Ты ж дебил, что тебе делать в программировании? Все их курсы давно на торрентах пылятся.
>>827492>>827505
#483 #827492
>>827456
А кодревью и саппорт тоже пылится?
Так-то все доки у гугла бесплатные, но что-то я не вижу дохуя макак в андроиде.
>>827494>>827619
#484 #827494
>>827492

> что-то я не вижу дохуя макак в андроиде


Хуево смотришь.
#485 #827505
>>827456
Зачем на торрентах? Они и там бесплатные видео и домашки, а коревью можно и купить отдельно где нибудь найти.
>>827621
#486 #827619
>>827492
Я тебе повторяю, что тебе делать в программировании?
Если ты не можешь в САМОСТОЯТЕЛЬНОСТЬ, то просто забей, это не твоё.

>саппорт


Няньку он блять хочет, охуеть вообще.
Тебе на торентах лекции дали, домашку дали. Ебись дальше сам, какой нахуй кодревью, поехавший. Для особо одаренных, в начале следующей лекции полтора часа разбирают домашки всех студентов, сможешь посмотреть как вообще нормальные люди кодят. Но лучше забей. И купи курс для лохов за 70к
#487 #827621
>>827505
Java и Android платные. Бесплатные только всякая шелуха типа html и введения в программирование.
>>827687
#488 #827687
>>827621
Да я про муриканский курс, лучше его бери, а если не знаешь ангельский, то начни с этого, много времени потом сэкономишь, так как будешь читать свежайшие доки, а не переводы.
#489 #827713
аноны, нид хелп
есть список ReyclerView и адаптер кастомный
при нажатии на айтем списка должно открываться новое активити
но почему то когда происходит клик, то в моем листе, из которого я достаю данные обнаруживается, что он пустой
вот код адаптера - http://pastebin.com/VUQGmXc9
и мэйн активити - http://pastebin.com/iWPe6nbM
>>827726
#490 #827726
>>827713
Поц, ты обрезал код холдера.
#491 #827731
С чего лучше прогать под андроид - с бубунты или спермёрки?
>>827739>>827751
#492 #827739
>>827731
Без разницы, но под виндой у IDE шрифты лучше.
#493 #827746
>>827753
#494 #827751
>>827731
Из под мака.
#495 #827753
>>827746
как земля
мимо владелец пятого нексуса
>>827801
#496 #827760
Как использовать init в фрагменте?
#497 #827801
>>827753

>мимо владелец пятого нексуса


kek, не повезло тебе

владелец 5X
#498 #827848
Скотский гугол заебал сжирать своими регулярками все, кроме цифр и букв в поисковике.
Поясните, чем отличается String[] от String... в джаве?
>>827850
#499 #827850
>>827848
Первое - массив стрингов, второе просто обьект
>>827862
#500 #827862
>>827850
public static void main(String... args) {
....validatePhoneNumber("123-456-7890", "456-7890");
}

Конкретно в качестве передачи произвольного числа параметров методу разницы нет?
>>827997
#501 #827982
>>827376
Говно для даунов.
#502 #827997
Котлиноперекат плиз

>>827862
Ну в одном случае ты создаешь массив ручками, в другом он создается за тебя перечислением через запятую.
#503 #828054
Здравствуйте, как многие знают, Google готовит замену Android, новая ОС будет называется - Fuchsia. Но проблема в другом, недавно(3 дня назад) я начал изучать разработку ПО на Android, и после прочтения данной новости у меня возник вопрос: "А стоит ли продолжать?", раньше я возился над С++(остановился на классах) и с увеличением востребовательности разработчиков мобильного софта решил на время заняться данной сферой, дабы заработать. Вообщем я уже запутался, и решил спросить совет у опытных программистов.
>>828101>>828109
#504 #828101
>>828054

> тостер


Пиздец, что ты там забыл?
#505 #828109
>>828054
Неясного о Fuchsia остается еще много. Главный вопрос все же остается прежним — в каких системах планируется использовать эту ОС? Ожидать, что она создана в качестве альтернативы Android OS не стоит, ведь для того, чтобы программный продукт, в особенности, операционная система стал успешным, нужно активное сообщество разработчиков, каталог приложений и т.п. Google вложил сотни миллионов долларов в Android и вряд ли собирается что-то поменять.
#506 #828146
>>814733 (OP)
Аноны, как сделать, чтобы если не открыта нужная активити, то показать нотификейшн, иначе получить данные в этой активити? Щас показываю нотификейшн и бросаю бродкаст, когда перехватываю его, то удаляю нотификеёшн, но в таком случае на пол секунды становиться видно иконку в статус баре
>>828169>>828487
#507 #828169
>>828146
http://stackoverflow.com/questions/3873659/android-how-can-i-get-the-current-foreground-activity-from-a-service

Если хочешь стопроцентно рабочий вариант, то я предлагаю тебе записывать текущую активити в какую-нибудь переменную твоего Application'а или в SharedPreferences.
>>828176
#508 #828176
>>828169

> Если хочешь стопроцентно рабочий вариант, то я предлагаю тебе записывать текущую активити в какую-нибудь переменную твоего Application'а или в SharedPreferences.



Ебать говнокод.
>>828181
#509 #828181
>>828176
И в чем же говнокод? Это стопроцентно работает для его задачи, в отличии от туманных игрулек с GET_TASK, который диприкейтед уже 4 версии как.
#510 #828487
>>828146
Сервис, который отображает уведомление, поддерживает биндинг. К нему коннектишь активити и через биндер инкрементируешь счётчик подключений. Если счётчик на нуле — показывай уведомление.
Несколько громозкий вариант, но надежный и не говнокод.
>>828625
#511 #828556
Как использовать загружать изображения через Gilde в фрагменте?
>>828560
#512 #828560
>>828556
Берешь и без задней мысли загружаешь.
#513 #828617
Сап, есть активити с бэкграундом в котором фрагменты. Этот фон ложиться поверх фрагментов и в итоге видно один фон. Что сделать, чтобы изображения в фрагментах ложились поверх фона?
>>828621
#514 #828621
>>828617
Залей цветом бэкграунд вьюхи своего фрагмента.
#515 #828625
>>828487
действительно норм, пожалуй так и сделаю
9 Кб, 494x200
#516 #828800
Андруаны, кто как решает проблему с медлительностью АС? Или терпеть приходится?
Перекатил свой одноядерный днищебук на х64убунту, всё быстрее чем на винде кроме иде:
0~30с - мигает иконка
30с~1м - заставка
...~1:40 - появилось окно
...~2:40 - появился редактор
...~3:30 - догрузились остальные окна
...~5:15 - закончились синтаксический анализ и постройка градла
Градл настроил работать в демоне, апп запускается чутка быстрее, зависит от ситуации, запускаю на риал устройстве.
Сейчас еще попробую режим энергосбережения.
Кстати, почему синт анализ запускается когда нипопадя, т.е. даже после каждого отступа?
>>829048
#517 #828977
>>814733 (OP)
Анончики, кто юзвет StorIO? Мне надо положить в бд два разных объекта, т.е. сделавть два put'a с разными классами, но надо чтобы они были в транзакции. Это делается через lowlevel? Т.е. например:

lowlevel().beginTransaction();

storIOSQLite.put().object(firstObject)...//First class
storIOSQLite.put().object(secondObject)...//Second class

lowlevel().setTransactionSuccessful();
lowlevel().endTransaction();

Правильно?
>>829079
#518 #829048
>>828800
Сколько оперативки? Если 8ГБ и больше, можешь в настройках -Xms512m -Xmx1024m прописать. Так я решал проблему на макбук эйре с 8 гигами, на десктопе с 16 пока не заметил проблем.
>>829257
#519 #829055
ПЕРЕКАТ >>829054 (OP)
#520 #829079
>>828977
Насколько я знаю, правильно.
#521 #829257
>>829048
4gb
-Xmx512m -XX:MaxPermSize=512m сделал
думаю покопаться в настройках проверки синтаксиса, можно ил сделать чтобы проверял пореже и не все?
>>829280
#522 #829280
>>829257

> Xmx512m


Мхех, мда. Ему минимум 2гб нужно.
#523 #830406

>5) Классы/интерфейсы и все вытекающие.


Здесь имеется ввиду понять что такое класс, интерфейс и т.д., или же надо поучить основные классы?
>>830419
#524 #830419
>>830406
И то, и другое.
vova #525 #831013
test
vova !F3L8Z2.3SY #526 #831015
sdf
alan !!Bk0SEnqFBs #527 #831016
test 3
#528 #833643
Какую ORM для SQLite лучше использовать?
Тред утонул или удален.
Это копия, сохраненная 13 сентября 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски