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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
112 Кб, 1280x853
Разработка под Android тред №21 #762039 В конец треда | Веб
Вот бы в отпуск съебаться.

Предыдущий тред тут:
https://2ch.hk/pr/res/750609.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 #762046
>>762034
Там про запись видео, а в реальном времени можно?
Как при отладке приложения через Android Studio.
>>762064
#3 #762062
>>762039 (OP)

> Вот бы в отпуск съебаться.


Так съебись, в чем проблема?

Какого черта это первое предложение шапки? ОП, ты совсем охуел?
>>762146
#4 #762064
>>762046
В реальном времени нельзя, только с задержкой.
Хочешь в реальном — используй эмулятор.
>>762115
#5 #762083
я пишу под андроид уже третий год, но я все еще не знаю ответа на вопрос: как обрабатывать поворот экрана (пока в фоне идет запрос)?
#6 #762086
>>762083
Использовать вьюстейт как прослойку между презентером и вьюхой.
#7 #762115
>>762064
А как можно на эмулятор, Genymotion, например, установить мой .apk минуя Android Stdio? Или скопировать устройство с установленным приложением на другой компьютер с эмулятором?
>>762118
#8 #762118
>>762115
Drag'n'drop апкшки в эмуль.
>>762318
78 Кб, 844x468
86 Кб, 847x470
#9 #762122
>>762083
Тоже около 4 лет, сдается мне что лучше вообще не обрабатывать явно, а использовать нотификации.

1) запустил синхронизацию, без сохранения явной ссылки
2) крутишь экран, после поворота берешь данные из локально базы (только чтение)
3) на onResume подписываешься на нужные оповещения, на onPause отписываешься
...
4) фоновый процесс записал данные в базу, кинул бродкаст что изменил базу
5) в активити/фрагменте/конроллере/вьюмодели ловишь бродкаст и перечитываешь базу

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

Вот видосик с последнего Google IO, может он подкинет пищи для размышления:
https://www.youtube.com/watch?v=70WqJxymPr8
>>762158
#10 #762141
>>762083
rxjava (оператор cache) + loader (или статик поле, ретеин фрагмент, че угодно), так делают чуваки из elegion, мне понравилось
>>762149
#11 #762146
>>762062
Лето же. Да и свежих новостей не заметил.
#12 #762149
>>762141
Есть примеры? А то что-то я хз как ровно подвязать лоадер к пресентеру.
>>762155>>762160
#13 #762155
>>762149
Да я тоже хз, видимо как хочешь, так и подвязывай
>>762160
#14 #762158
>>762122
видосик не понравился, ничего конкретного, просто рекомендации от к.о. смотрел жопой
как быть если бродкаст ушел в момент между отвязкой и привязкой? будет ждать событие которое уже произошло?
неужели за столько лет не нашлось более элегантного решения?
>>762172
#16 #762172
>>762158
Ну так ты на onResume должен не только подписываться, но и делать запрос к базе.
Лоаедеры так и работают (может исходники CursorLoader посмотреть).

Шо поделаешь, это андроид (на ios/wp страница не разрушается на повороте).
Не хочешь ебать мозги - отключай поворот.
#17 #762180
>>762172
лоадеры подписываются/отписываются в onStart/onStop
>>762184
#18 #762184
>>762180
Ну это конечно ничего не меняет, но спс за инфу
#19 #762318
>>762118
Прикольно. Спасибо за помощь!
#20 #762362
>>762172

> Не хочешь ебать мозги - отключай поворот.


Это не поможет. Кроме смены ориентации есть еще куча других событий config chages.
>>762367>>762398
#21 #762367
>>762362
И щас к ним прибавится изменение размера окна из-за многооконности.
>>762691
#22 #762398
>>762362

> Кроме смены ориентации есть еще куча других событий config chages


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

Раньше было мерзкое событие "выдвижeние физической клавиатуры" (motоrola milеston),
но такие девайсы не получили распространения и хyй с ними.


> изменение размера окна из-за многооконности


Сам уже проверял?
#23 #762459
>>762398
лейауты должны меняться, конечно будет пересоздаваться
#24 #762464
>>762398
https://medium.com/google-developers/5-tips-for-preparing-for-multi-window-in-android-n-7bed803dda64#.hztmtq4vm

> The default case is that your whole activity is destroyed and recreated, restoring any state you saved in onSaveInstanceState() and reloading all of the resources/layouts. This has the nice property that you know everything is consistent with the new configuration and that every type of configuration is handled.

29 Кб, 512x384
#25 #762546
Програмач, помоги. Установил Android Stidio, захотелось поизвращаться, покрутить код на Java и т.д. Но сразу же столкнулся с проблемой дебаггера. Я создал кнопочку, к примеру, на неё повесил обработчик события, чтобы при нажатии в соседнем TextView появлялся текст типа: "Hello, world!". Но когда я изменил код этого самого метода onClick, чтобы она писала другой текст, затем скомпилировал и запустил (запускал я всегда на своём телефоне), то та же самая кнопка писала не новый текст, а всё тот же старый, который я уже давно стёр. В чём проблема? Почему дебаггер так криво работает? Я потом ещё пробовал поменять фоновый цвет приложения, скомпилировал, запустил, и цвет, на удивление, поменялся, а кнопка всё равно работала по-старому. С кнопкой я привёл пример для наглядности. Что я делаю не так, посоны?
#26 #762566
Помощь с регистрацией и смс!
telegram.me/AndroidChan
telegram.me/AndroidChan
telegram.me/AndroidChan
telegram.me/AndroidChan
telegram.me/AndroidChan
telegram.me/AndroidChan
telegram.me/AndroidChan
telegram.me/AndroidChan
>>762675
#27 #762667
>>762398

> можно забить хуй


Тебе в php-тред.
sage #28 #762675
>>762566
Зарепортил уёбка.
#29 #762691
>>762367

> И щас к ним прибавится изменение размера окна из-за многооконности.


Поворот экрана это тоже смена размера окна: ширина и высота меняются местами.
#30 #762692
>>762172

> Не хочешь ебать мозги - отключай поворот.


При этом не меняется размер тулбара он меньше в ландшафтной ориентации и максимальное число кнопок в меню. Если второе не очень критично, то первое просто отвратительно с эстетической точки зрения.
>>762767
#31 #762767
>>762692
Кстати, на айфонах в 99% приложений есть только портретная ориентация.
Там то понимают как всех бесит когда решил прилечь с телефоном, а он экран начинает вращать.

> При этом не меняется размер тулбара он меньше в ландшафтной ориентации


Не понял, а зачем он вообще должен менять размер и кол-во кнопок (экран то остается в портретном режими)?
Ты что обычно экран поворачиваешь вместо того что бы нажать на троеточие?
Вставлять поворот везде просто потому что ты можешь, хотя это внесет доп. сложность и ничего не даст юзеру, не очень умно.
>>762790>>762970
#32 #762790
>>762767
Не очень умно не понимать то, что нельзя уйти от пересоздания активити, хотя бы потому что сам андроид может убить активити. Плюс если у тебя хоть какое то нормальное приложение, а не твой список дел, который работает без интернета, то у тебя будут разные лейауты для разных размеров. Если ты не хочешь это понимать, то пиздуй в ios, там делается просто 2 разных приложения под телефон и планшет, что пиздец
>>762813
45 Кб, 604x554
#33 #762793
Ребят, может завалялся у кого пример кода загрузки изображение в альбом или на стенку пользователя vk sdk android?
>>762794
#34 #762794
>>762793
У вк же охуительная документация, или ты хочешь, чтобы за тебя сделали?
>>762796
#35 #762796
>>762794
Никак нет. Я так понял, что нужно использовать что-то вроде этого, но затрудняюсь реализовать getPhoto. Получается я должен дать путь к изображению в ресурсах моего проекта? Или это все дописывать в поле request.executeWithListener(....) или использовать другие методы из vk api?
final Bitmap photo = getPhoto();
VKRequest request = VKApi.uploadWallPhotoRequest(new VKUploadImage(photo, VKImageParameters.jpgImage(0.9f)), 0, 60479154);
>>762834
#36 #762813
>>762790

> в ios, там делается просто 2 разных приложения под телефон и планшет, что пиздец


Уже пару лет как там "по умолчанию" общая верстка для iphone/ipad.

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


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

Я понимаю бушует юношеский максимализм и хочется что-бы все было идеально,
но когда работаешь над серьезными проектах пару/тройуку лет - понимаешь что это не так важно,
как сделать приложение с минимальной сложностью поддержки и внедрения новых фич.
>>762973
#37 #762834
>>762796
В чем твоя проблема? Ты в параметрах одного метода запутался? У тебя же есть VKApi.uploadWallPhotoRequest(File, long, long).
>>762837
#38 #762837
>>762834
Проблема getPhoto(), что подразумевается под этим? Да, я похоже даун, ну что-то переклинило. Или мне все это что я писал выше не использовать, а то лишь VKApi.uploadWallPhotoRequest(File, long, long), если да, то как дать ссылку на файл?
>>762908
#39 #762908
>>762837
Под этим подразумевается твой способ получения битмапки фото. Но ты можешь использовать и не битмап.
>>762948
#40 #762948
>>762908
Я хотел узнать, что он подразумевает в плане реализации. Вот пример кода http://pastebin.com/v6WtTeQA , но я получил ошибку после прохождения авторизации
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=10485, result=-1, data=null} to activity {com.example.molodec.vktest/com.example.molodec.vktest.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
>>762955
#41 #762955
>>762948
Ну а хули, ты читать не умеешь? Там же написано что ему нудна не нулевая битмапка, НАЧАЛЬНИК С КЕМ МЕНЯ ПОСАДИЛИ.
>>762965>>762978
#42 #762965
>>762955
Вообще-то они должны были вставить assert на NULL вначале метода API.

Эх, писали бы на котлине, не было бы таких левых ошибок.
#43 #762968
>>762965
Ну или аннотацию @NotNullable на аргумент метод поставить было можно.
>>762971>>762972
#44 #762970
>>762767

> Не понял, а зачем он вообще должен менять размер и кол-во кнопок (экран то остается в портретном режими)?


Условно числа из головы, в портетной ориениации высота тулбара — 72 dp, максимально помещается 3 иконки. В ландшафтном — 64 dp и 5 иконок. Когда ты поворачиваешь экран, тулбар создается заново и эти параметры обновляются. Если включить обработку смены конфига — они не будут обновляться и высота тулбара будет зависеть от того, в какой ориентации приложение было запущено. Число иконок — тоже.
Так понятнее?
Хотя я понял, ты предлагаешь отключить автоповорот, записав ориениацию в манифесте, а не включить обработку смены конфига.
#45 #762971
>>762965
>>762968
А чем им ассерт бы помог? Вывалилось бы с точно такой же ошибкой. Чувак должен убедится что битмапка не ноль и не пихать туда и все.
>>762981
#46 #762972
>>762968
@NonNull, а аннотации тащат зависимость к appcompat.
>>762981
#47 #762973
>>762813

> когда работаешь над серьезными проектах пару/тройуку лет


ну это точно не про тебя максимум списки покупок
#48 #762978
>>762955
Можно тогда пример как ее нужно было обозначить?
>>762998
#49 #762981
>>762971
Чувак, ну это же мувитон для БИБЛИОТЕКИ не проверять аргументы.
И исключение было бы понятно даже для даунов ArgumentNullException("Argument photo is null, GFYS faggot");

>>762972
Есть сторонние библиотеку для @Null/@NotNull (котлин и скорее всего IDEA/AS много чужих поддерживает).
Хотя я так подумал это бы не особо то и помогло.
#50 #762998
>>762978
Больше чем на псевдокод не рассчитывай ок?
1) Получить переменную битмапки;
2) Проверить что она не null;
3) Если не null то начать отправку в ВК;
4) Иначе думай в чем проблема, почему null;
#51 #763042
>>762965
assert на android? really?
>>763047>>763718
#52 #763047
>>763042
бля ну не добывайся до мелочей, я имел просто проверку на null:
if (arg == null) throw new ArgumentNullException("arg");
#53 #763063
Посоны где вы купили свои андроид девайсы? Хотел купить нексус 5х но в моей стране гугл магазин не работает. Хочу купить в интернете потому что в магазинах наценка около 200 бачей, так что пусть они идут нахуй
>>763069
#54 #763069
>>763063
Nexus5X на Google Play еще по предзаказу, через бандерольку.
Но тебе лучше пройти в /mobi/nexus тред.
>>763072
#55 #763072
>>763069
Спасибо братан
#56 #763090
Двач, привет! У меня вопрос к работающим анонам и фрилансерам.

В общем, я сделал для местного новостного агенства( типа того) приложение, похожее на приложуху медузы. Добавил несколько фич с отправкой фото-видео и писем и ещё развлекухи немного. Но за ориентр была взята медуза.

Скажи, сколько просить денег за это? Скрины показать не могу, но стиль выдержан заебись(как приложуха хабра).

50к хватит за онли андроид версию?
Или просить 50 за андроид + айос портированную?

Какие цены вообще на такие вещи?
>>763130
#57 #763121
Бери 50к за андроид версию.
Не потому что дорого или дешево, а потому что продавать сразу две версии как-то не солидно. Выглядит как "2 по цене 1"
>>763125
#58 #763125
>>763121
а сколько вообще подобные штуки стоят?

Мне кажется, что 50 тысяч - это как-то дохуя, но я открыл разные "ПО на заказ" и там вообще чуть ли не в 500к выходит корпоративное говно.
Причём сроки там адовые, например, 13-17 недель.
Что они там столько времени делают - хуй знает.
>>763128>>763859
#59 #763128
>>763125

> Что они там столько времени делают - хуй знает.


Делают архитектуру например, а не хуяк-хуяк и в продакшн.

> 50 тысяч - это как-то дохуя


Нет, это норм за такое приложение, если ты не индус за еду.
38 Кб, 604x389
#60 #763130
>>763090

> Сначала сделал, потом денег просит


Вопрос уже в том насколько там щедрые дяди.

> айос портированную?


Как ты на iOS портировал то (или собираешься)?
#61 #763175
анасы, поясните за собеседования.
спрашивают ли сейчас новомодные rx. dagger, mvp и т.д.
я ж старпер, нихуя не знаю из этого
реально ли без этой хуйни хотяб тыщ на 130?
#62 #763185
>>763175
Да, знание асинктаска достаточно для 150к-200к
>>763188
#63 #763186
>>763175
За Котлин дают +100k
>>763488
#64 #763188
>>763185
ну у меня щас 100, я этого не знаю всего
>>763199
#65 #763199
>>763188
Ну молодец, работаешь в быдлоконторе
>>763211
#66 #763211
>>763199
лол, работаю кстати в конторе от которой местные аноны кипятком ссут. особенно доставляет читать маняфантазии, дескать вот там охуенно работать
>>763216>>763218
#67 #763216
>>763211
Похоже на то, что маняфантазии у тебя
#68 #763218
>>763211
Ссу пока только елегиона и роботов. Но ты вангую работаешь каком-нибудь говнояндексе.
>>763415
#70 #763405
>>763175
Да, спрашивают. Андроид скатился до уровня, когда появились миллионы фреймворков и нужно все их знать, это был вопрос времени.
sage #71 #763415
>>763218

> елегион


Сраные полуебки, так и не прислали мне мой диплом за их поганый тест.
>>763421>>763505
#72 #763421
>>763415
Да этот диплом нахуй не нужен, а тест говно ну хоть в офисе гугла побывал
#73 #763488
>>763186
За Хаскелл дают +300k
#74 #763505
>>763415

А мне прислали даже в украху.
#75 #763627
Ананасы, кто-нибудь под NDK что-нибудь пилил?
Какого это?
Есть желание и возможность запилить игорь под Андроид, но вот Джаву не знаю.
>>763635>>763649
#76 #763635
>>763627
Соблаговолите пройти в /dev/Unity тред и перестать отвлекать нас от серьезных беседъ

https://2ch.hk/gd/res/262023.html (М)
>>763649
#77 #763649
>>763635

>Как_сделать_клиент_серверку_без_костылей_2016


>серьезные беседы


>>763627
На голом NDK ты далеко не уедешь. Хочешь сосать плюсы - используй Cocos2dx, хочешь сосать жабу - libGDX, хочешь шарпы - Unity
>>763689
#78 #763689
>>763649

> как сделать клиент серверку без костылей


> все еще нет ответа

>>763763
#79 #763710
Посоны, как в андроид студио найти использования метода?
>>763711
#80 #763711
>>763710
А, всё, нашёл. В глаза ебусь
#81 #763718
>>763042
а что не так с ассертами? вот студия советует ей проверять как вариант
>>763764>>763833
#82 #763763
>>763689
Это философский вопрос.
#83 #763764
>>763718
Из релизного кода они будут выкинуты. Раньше так было.
http://stackoverflow.com/questions/6176441/how-to-use-assert-in-android
#84 #763833
>>763718
далвик не понимает их, хз как art
#85 #763859
>>763125
если с мессенджером и лк - 150+, без - порядка 60-120 в зав-ти от наглости
636 Кб, 1967x1235
#86 #763905
>>762039 (OP)
Сегодня попробовал сделать то приложение, которое мы пилим на фонгапе, сделать на джаве и кончил радугой, годнота лол.
#87 #763994
устроился android junior в стартап, что почитать для прокачки скила? паттерны, блох или busy coder сойдет?
>>763997>>764320
#88 #763997
>>763994

> в стартап


За еду?
>>764002>>764005
#89 #764002
>>763997
За 25к.
Другой анон.
>>764331
#90 #764005
>>763997
нахуй еду, поработав неделю понял что на еде можно сэкономить
>>764103
#91 #764103
>>764005
конечно, добрые люди в мусорку обжевки ведь выкидывают, мы ведь программисты под ведро, для нас специально
#92 #764320
>>763994
какой нормальный стартап будет набирать джуниоров?
#93 #764331
>>764002
Многовато, я бы больше 15к не дал. А в стартапах вообще принято работать за доширак и обещания процентов от продаж, КОГДА ВСЕ ЗАРАБОТАЕТ.
#94 #764493
Вот подкачал я свои скилы в джаве и андройде но опыта коммерческого нету, как искать работу? Во все компании отсылать резюме? Или по компании и ждать ответа? На позицию джунов нет вакансии(
>>764523
#95 #764523
>>764493
презентуй себя как мидла
кидаешь ссылки на своичужие аппы в сторе
приписаваешь себе опыт в noname конторефрилансер
>>764538
#96 #764538
>>764523

> приписаваешь себе опыт в noname конторе


Двачую этого комбинатора. "Работал удаленно, было несколько заказчиков, сейчас всех уже не помню, код показать не могу - коммерческая тайна"
Если есть свои нормальные проекты (грамотная архитектура, паттерны, тесты, доведены до конца и работают) на github/bitbucket - будет звучать убедительнее. Если есть приложения в Google Play - еще убедительнее (но там надо 25$ за регистрацию вроде).
>>764820>>764863
Кто делал получение пушей из VK SDK #97 #764576
и у кого это прямо сейчас работает?
#98 #764820
>>764538

>(грамотная архитектура, паттерны, тесты, доведены до конца и работают)


Половина мидлов этого не умеет.
>>764863
#99 #764863
>>764820
>>764538
Чем определяется джуниор или мидл?
>>764923
#100 #764923
>>764863
Опыт работы = знания реальных проектов = практический навык.
>>764935
#101 #764935
>>764923
Все равно что-то не то. Можно 3 года на иннер асинктасках все писать.
>>764943
#102 #764942
Аноны, поясните за mosby, какой профит юзать его, а не делать свой mvp с нуля?
>>764969
#103 #764943
>>764935
Можно, но смысл ведроида даже не в архитектуре, а в знании костылей.
Архитектуру на ариксе можно выучить на неделю.
#104 #764969
>>764942

> какой профит


То, что не делаешь свой мвп с нуля?
>>764995
#105 #764995
>>764969
так я не понимаю, в чем сложность mvp с нуля? И чем этот фреймворк помогает
>>765016
#106 #765016
>>764995
А в чем сложность написать свой ретрофит?
>>765062
#107 #765059
В MVP колбеки от вьюх хранятся внутри ViewImpl и вызывают методы презентера?
>>765248
#108 #765062
>>765016
короче ладно, ты сам не знаешь, видимо, ещё ни разу не писал ничего по mvp
>>765066
#109 #765065
Котаны, как в google maps работает accuracy circle?
Написано, что его радиус равен двум СКО. Но почему он тогда не меняется при движении, когда разброс координат увеличивается?
#110 #765066
>>765062
Ебанаты, вокруг ебанаты.
#111 #765248
#112 #765344
>>762039 (OP)
Поясните за охуительные анимации, куда копать?
#113 #765383
Есть таб с галерей картинок которые подгружаются глейдом в ImageView (штук 20 на большом дисплее). При первом переходе на этот таб анимация viewpager'a немного притормаживает. Можно как-то сказать глейду, чтобы он как-то сбалансированно подгрузил видимые картинки при инициализации фрагмента во вьюпейджере?
#114 #765438
Кто-нибудь пробовал используя Espresso открывать drawer и кликать по итему ? Никак не вдуплю, хули оно с дефолтными итемами пахать не хочет, добавленными через меню
>>765465
#115 #765463
765438-ананас, заработало с поиском по id-шникам итемов в меню, я доволен
>>765465
#116 #765465
>>765463

> >>765438-ананас

#117 #765469
К слову, о том же Espresso, ни у кого не возникало сложностей при вводе текста в android.support.v7.widget.SearchView ? Требует, гад такой, android.widget.SearchView...
>>765530
#118 #765530
>>765469
Парниша, ты вообще о чем?
2 Кб, 262x139
#119 #765593
Каким образом правильно делать тени вьюхам? Вот растягивающаяся плашка, цвет обводки и задника задаются темой. Обводку/задник делать из шейпов, а тень из 9patch? Elevation это же только lolipop+ да?
>>766855
#120 #765695
Как получить координаты MotionEvent в обход этого?
https://code.google.com/p/android/issues/detail?id=72746

Есть ли еще способы получения координат нажатия из сервиса?
#121 #765739
>>762039 (OP)
Как правильнее написать API, которое дергает сервер и возвращает результат? Сделал пока несколько AsyncTask-ов в отдельном package, с setCallback-ами - при onPostExecute, вызывается этот callback.

Джавы не знаю, буду рад совету как это делать канонично.
>>765827
#122 #765745
Такая проблема, есть один onClick (выставлен в layout-файле):
http://pastebin.com/Ng7QTRAJ
если закомментировать блок условия, то всё работает, иначе выдаёт IllegalStateException
>>765824
#123 #765812
аноны, надо сделать такое приложение, где в начале получаю инфу в сплеш скрине и на этом всё. Нормально ли будет хранить ответ в аппликейшене, или есть варианты лучше?
>>765865
#124 #765824
>>765745

> IllegalStateException


Стактрейс где?
>>765838
#125 #765827
>>765739
R E T R O F I T
>>765927
#126 #765838
>>765824
http://pastebin.com/WDviMWqN
name и password -- строки, объявленные как package-local поля класса. Алсо, эксепшен возникает при любой попытке досупа к ним.
>>765863
#127 #765863
>>765838
Caused by: java.lang.NullPointerException at takheer.ru.passworder.LoginActivity.toRegistration(LoginActivity.java:44)

И в чем твоя проблема?
#128 #765865
>>765812
Твое приложение умирает в фоне и пользователь восстанавливает его на внутреннем экране. Что будешь делать?
>>765883
#129 #765870
>>765863

>И в чем твоя проблема?


Я хочу, чтобы оно работало, а оно не работает. В этом проблема
>>766066
#130 #765880
>>765863
Я понял твой вопрос. Моя проблема в том, что я плохо понимаю суть NullPointerException.
Создал я два поля, проинициализировал их в onCreate, попытался в других методах эти поля прочитать. Вылез NPE. Предлагаешь тупо обернуть в try-catch?
>>765913>>766066
#131 #765883
>>765865
сосну хуйца, как лучше сделать?
>>765921
#132 #765896
Ну познакомишься ты такой с девушкой, о чем будешь говорить?Как ты под ведро говно свое пилил?
#133 #765898
Ну познакомишься ты такой с девушкой, о чем будешь говорить?Как ты под ведро говно свое пилил?
67 Кб, 700x700
#134 #765913
>>765880

> 2016


> NullPointerException

>>765944>>766342
#135 #765921
>>765883
или как насчет передавать везде parceble и сейвить его в бандл, так лучше?
>>766051
#136 #765927
>>765827

>R E T R O F I T


Охуенно, спасибо.
32 Кб, 501x639
#137 #765944
>>765913

> 2016


> Kotlin

>>766052
#138 #766051
>>765921
Можно еще проверять, если поле с твоими данными занулились, отправлять юзера на сплешскрин.
Ну а по хорошему бд конечно или хотя бы файл. Гуглы не советуют использовать бандлы для хранения данных.
#139 #766052
>>765944
Уноси своего братишку с сладким хлебушком, поехавший.
#140 #766066
>>765863
>>765880
>>765870
Просто я дурной и забыл, что формочка для ввода текста это EditText, а не TextView.
#141 #766307
Аноны, как правильно хуйнуть вьюпейджер внутрь ресайклвью. Делаю новый адаптер в онбинде, но не сохраняется страница пейджера, если перейти вниз ресайклвью и потом обратно. Как быть?
>>766308
#142 #766308
>>766307
Сохранять позицию пейджера для каждого id модели в карте?
#143 #766342
>>765913
Очередной хипстерский тренд, который никому нахуй не нужен.
>>766368>>766395
#144 #766368
>>766342
Хипстерский тренд это:

ClojureScript + ReactNative

, а котлин уже рабочая лошадка.
>>766423
#145 #766389
Посоны, подскажите, как эту парашу еще можно сократить? Я уверен, что тут можно вобще в три строчки ебануть http://pastebin.com/XQsQmBTX
>>766394>>767070
#146 #766394
>>766389
Сабскрайбера можно определять отдельными action1. Передаешь 2 таких в subscribe и сокращаешь за счет лябдопреобразования.

И хули у тебя не через flatMap сделано?
>>766402
#147 #766395
>>766342
RX тоже хипстерский тренд, но он взлетел. Котлин тоже может взлететь, но на это ему нужно еще года полтора точно.
#148 #766402
>>766394
ок, я уже поменял subscribe на flatMap, получилось почти то же самое, но вот насчет того, как сабскрайбера отдельным action сделать вобще не ебу, буду признателен за пояснение, если тебя не затруднит
>>766409
#149 #766409
>>766402
я напиздел, нихуя с flatMap не получилось, cyclic inference выдало и нахуй меня послало
#150 #766423
>>766368
Твоя рабочая лошадка хотя бы в 2-3 процентах коммерческих приложений используется?
>>766446
#151 #766446
>>766423

> В сторе >1kk приложения,


> языку меньше год,


сам то как думаешь?

Тем более никто не будет переписывать коммерческое приложение с 0 на другом языке.
182 Кб, 720x1280
#152 #766449
Аноны, а как сделать скроллбар толстым, чтобы им можно было прокручивать список? Как в стандартном приложении "контакты" или как в dashchan.
>>766855
#153 #766487
Сабскрайбы на топики пушей работают независимо? Т.е. я могу подписаться на топик не запрашивая токен, просто вызвав FirebaseMessaging.subscribe?
#154 #766855
>>765593
Юзай cardview, там есть elevation. Просто любую вьюху оборачиваешь в кардвью, сам так делаю, зависимость есть, брат жив.
>>766449
Не совсем понял, но если понял правильно, то гугли scrollbar styling.
>>766909>>767660
#155 #766909
>>766855
Я думаю он про то, как сделать что бы по этому бару можно было быстро скролить, как в adobe pdr reader'e например. Или в контактной книжке по буквам.
>>766920
#156 #766920
>>766909

> Или в контактной книжке по буквам


https://github.com/krimin-killr21/MaterialScrollBar
Вот например.
>>766932
#157 #766932
>>766920
Надо будет поковырять что бы для всего можно было применять.
#158 #767070
Уважаемые синьоры, пишет вам >>766389 -кун, я переделал (с горем пополам) на флет мапы, но возникла проблема http://pastebin.com/rT0280mW как сделать, чтобы foo было доступно оттуда, где мне надо взять его айдишник и засунуть в новый объект?
>>767141
#159 #767141
>>767070
Во flatMap вторым аргументом можно передать функцию агрегатор, которая должна либо запихнуть bar в foo (или наоборот), или составить из них Pair<Foo,Bar>.
>>767162
#160 #767162
>>767141 Спасибо, анон, читал об этом, но как-то не доходило, что нужный мне айдишник можно просто подсунуть в объект который пойдет дальше, а пары составлять уж совсем не хотелось.
#161 #767172
Аноны есть кардвью и внутри неё вьюпейджер http://pastebin.com/9wMb07fj Если ставлю онкликлистенер на карточку, то она кликается, если не задан адаптер у вьюпейджера, иначе итем вьюпейджера, как бы перекрывает карточку, как мне обрабатывать клик по карточке?
>>767683
#162 #767251
Суп ребят! я воооооооооооообще не могу в java и учить её мне страшно со строк паблик класс майн активити Майн кококок.кококо{
Но я слышал о NDK и наслышан что телефонки умеют попиленый openGL с шейдерами и ништяками.
>>767253
#163 #767253
>>767251
вопрос забыл Чё мне почитать?
>>767285
sage #164 #767285
>>767253
«Триумфальную арку» Ремарка
>>767315
#165 #767315
>>767285
че ты вот зеленишь?
я достаточно хорошо умею cpp и GLSL но на пеки. что по ndk и gles в одной связочке есть?
>>767355>>767690
#166 #767355
>>767315
пройди плиз в /gamedev/ или c++ тред, тебе здесь не помогут
>>767462
#167 #767462
>>767355
а что вы тут тогда обсуждаете?
я нюфа у вас
>>767465
sage #168 #767465
>>767462
«Триумфальную арку» Ремарка
#169 #767471
Короче пацаны! Решил запилить примитивную приложуху что то на подобе справочника. На первом экране список всякой ебалы. При тапе на элементе списка вызывается второе активити с более детальным описанием и видюшкой из ютуба. Вопрос вот в чем: предполагается, что данных будет много, поэтому каким способом лучше хранить данные, на СД карте или как то через БД?
>>767475
sage #170 #767475
>>767471
Много — это сколько?
Данные — это в что и в каком формате?
>>767482
#171 #767482
>>767475
Около 500 записей.
Все в текстовом виде, только видосик с ютуба отличается. Ну мб еще какая то картиночка в пункте списка
>>767486
sage #172 #767486
>>767482
Пиши в БД.
>>767487
#173 #767487
>>767486
Окей, спс.
Сажа то зачем?
#174 #767589
Парни. опытные разрабы. Подскажите, как грамотно распланировать задачи?
Я пилю приложуху, но всё происходит как-то без плана.

Есть план того, как приложение должно выглядеть.
С чего надо начинать?
Вот смотрите.

Там будет сплэшскрин.
Потом открывается спарсенные заголовки.
По клику на эти заголовки открывается статья.
Сверху над заголовками есть кнопка, которая показывает другие жанры(переход на новую активити).

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

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

Как быть?
#175 #767592
>>767589
А что, добавить новую активити для сплешскрина и установить для неё интент фильтр - не вариант?
>>767594
#176 #767594
>>767592
запутался, говорю ж(
#177 #767595
>>767589

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


Проиграл. Но все же ты продержался дольше чем многие другие. Тебя еще ждет замечательный мир несортируемых по папкам лейаутов и дроваблов.
>>767687
#178 #767613
>>767589
https://ru.wikipedia.org/wiki/Git

Научись делать бранчи, теги, планировать изменения по коммитам.
В итоге сможешь откатывать на любой пред. стадию и экспериментировать с фичами не боясь зафакапить наработки.
#179 #767660
>>766855
Спасибо.
#180 #767683
>>767172
Бамп
>>767688
#181 #767687
>>767595
до этого я делал рабочую приложуху, всё было хорошо и результат заказчка устроил.

но меня не устроила эта богомерзкая мусорка в папках и подпапках.
Ты просто не можешь представить себе, Анон, как я ненавижу, когда всё разбросано в хуевых непонятных местах.
Ненавижу блять
>>767693
#182 #767688
>>767683
Слушай клики в айтемах вьюпейджера, прокидывай выше.
>>767700
#183 #767690
>>767315

>я достаточно хорошо умею cpp


Если Java тебя напугала - то недостаточно хорошо.
>>767948
#184 #767693
>>767687

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


Кстати, никто не встречал сервиса что бы перегнать PNG (xxxhdpi) -> Vector Drawable?
Заебали эти подпапки под разные разрешения, сил уже нет.
#185 #767700
>>767688
Ну это костыль, я уверен, что можно пофиксить
#186 #767794
Напишите пожалуйста в каком городе/сколько получаете, и какие приложения пилите.
Пилю сейчас одно приложение в софтверной компании, которая вообще не занимается написанием приложений для конченого пользователя, отлично знаю что это приложение не отобьет мою зарплату, лол.
#187 #767815
>>767794
Мск. Корпоративные приложения. 250к
#188 #767816
>>767794
Может, у тебя какое-то приложение по заказу от какого-нибудь банка, например, и им похуй на окупаемость, лишь бы отчётность была?
sage #189 #767826
>>767794
С какого хуя я тебе это писать должен...
#190 #767840
>>767794
Мухосранск-миллионник. Разные приложения на заказ. 120к
#191 #767864
Вопрос по асинктаску. Только не начинайте.
Адекватно ли, если результат какой-то сложный или несколько разных, присваивать это в приватные поля таска и в онПостЭкзикют доступаться вместо жирного дженерика?
#192 #767869
>>767864
Алсо, я запятые правильно расставил?
>>767882
sage #193 #767882
>>767864
>>767869
Вы здесь что, ангельчане? Вот и уёбывайте в своё Чикаго.
>>767883
sage #194 #767883
>>767882
Не попал по пехтонотреду, не серчайте.
#195 #767887
Вопрос по асинкзадаче. Только не начинайте.
Адекватно ли, если результат какой-то сложный или несколько разных, присваивать это в частные поля задачи и в наПослеВыполнения доступаться вместо жирной конструкции обобщения?
#196 #767948
>>767690
ну в цпп не видел овер 120 символов в строке. пиздец напугало
>>767960
#197 #767960
>>767948
В хорошем жабокоде тоже не увидишь.
>>767965
#198 #767965
>>767960
стандартный конструктор апки андройд ебашит кучей страшных овер9000 символов строк. Это типо мне не надо?
>>767970
#199 #767970
>>767965
Выражайся нормально, я тебя не понял в полном объеме. особенно эту часть: "кучей страшных овер9000 символов строк"
Да конструкторы вьюшек в андроиде большие, но андроид это один большой костыль. А насчет сигнатуры метода - ставишь перенос стоки после запятой и все, теперь строка не 120 символов а 80, все по канону.
168 Кб, 635x598
#200 #767982
Сап ведрач! Меня забанили на Гугле и теперь один вопрос не даёт мне покоя.

Можно ли из приложения менять приоритет выполнения остальных программ или даже заставить систему схибернейтить их на время выполнения моего важного приложения? Или не стоит вскрывать эту тему?
>>767983>>768031
#201 #767983
>>767982
Все что угодно, с рут доступом.
#202 #768031
>>767982
Любое foreground приложение имеет более высокий приоритет выполнения.
#203 #768040
ну ладно.. с андройдами ты меня успокоил. то-есть мой план -- подучить java.. собрать конструкторец GL и на NDK в стандартные функции GL конторах
>>768045
#204 #768045
>>768040
ссоре не туда вставил конторах..
хотел сказать описываю на NDK геймплей
#205 #768079
Самая популярная хуитка на андроидах и никто не ответит? >>767864
>>768104>>768572
#206 #768091
>>767864
Нет.
>>768092
#207 #768092
>>768091
Почему?
>>768116
#208 #768104
>>768079
Популярные они были во времена 1.6, сейчас все на RX
sage #209 #768116
>>768092
Не слишком ли много вопросов на сегодня?
>>768119
#210 #768119
>>768116
Че сагаешь меня? Просто хочу знать чем это плохо (помимо самого асинктаска).
#211 #768147
Retrofit (2.0.2) + gzip делали? Везде пишут, что при подсовывании okhttp, он сам разруливает и добавляет в accept-encoding gzip. Но логи говорят о том (logging-interceptor), что нихуя он не добавляет. Я забыл что-то включить, или все-таки надо собственный интерсептор для всего этого писать?
>>768477
#212 #768192
>>762039 (OP)
Аноны, у меня есть фрагмент с вьюпейджером, страницу вьюпейджера пишу в бандл, когда перехожу в другой фрагмент из этого и возвращаюсь вьюпейджер становится на первую страницу, при перевороте всё ок
#213 #768195
>>768192
как собственно сделать, чтобы при возвращении из другого фрагмента там была та же страница, что и раньше?
>>768200
#214 #768200
>>768195
Делай через активити
>>768207
#215 #768207
>>768200
нету другого выхода?
#216 #768218
>>768192
Если никто не ответит, я завтра вечером из интереса попробую тоже.
#217 #768277
>>768192
А как ты заменяешь фрагменты? Если каждый раз делаешь новый фрагмент и реплейсишь, то конечно не будет ничего запоминаться. Попробуй вместо этого записывать фрагмент под конкретным тагом и в случае реплейса делать fragmentManager.findFragmentByTag() и делать новый только если старого не существует. Если не получится, то FragmentInteraction.replace делать fragmentinteraction.detach+attach.
>>768281>>768288
#218 #768281
>>768277

>то FragmentInteraction.replace делать fragmentinteraction.detach+attach.


то вместо FragmentInteraction.replace попробуй делать fragmentinteraction.detach+attach.
#219 #768288
>>768277
при возврате делаю popBackStack()
104 Кб, 720x583
105 Кб, 606x516
#220 #768477
>>768147

> при подсовывании okhttp, он сам разруливает и добавляет в accept-encoding gzip.


> Но логи говорят о том (logging-interceptor), что нихуя он не добавляет


Ты куда-то не туда смотришь (или твои логи показывают не все).
Вот обычный OkHttp 3.2.0 и GitHub API - из запросе и в ответе прописывается gzip.
>>768518
#221 #768518
>>768477
А с rx адаптером добавляет?
>>768547
137 Кб, 839x743
94 Кб, 543x502
#222 #768547
>>768518

> А с rx адаптером добавляет?


Не понятно как это должно влиять, ведь это разные уровни абстракции.
Но в любом случае проверил - добавляет.
#223 #768554
как в сраном d.android.com поставить англ язык, и что бы он бляц автоматом не ставился в рус? как же меня бесит эта хуйня
>>768555
#224 #768555
>>768554
Попробуй куки очисть и зайти заново на сайт, по идее он должен показать диалог с выбора языка по умолчанию.
#225 #768572
>>768079

>Самая популярная хуитка на андроидах


>асинктаск


лол
>>768581
#226 #768581
>>768572
Нуу.. она популярна.
>>768589
#227 #768589
>>768581
ахахаха
#228 #768595
Какие требования для миддла?
>>768596
#229 #768596
>>768595
Знать и уметь асинктаск.
>>768597
#230 #768597
>>768596

>асинктаск


ахахаха, лол
44 Кб, 604x604
#231 #768605
>>765863

> package tahreer.ru.passworder


Ты новенький?
#232 #768631
>>767794
700к сити, клиент-серверное приложение, 15к
#233 #768637
>>768192
мб сохранить текущую позицию вьюпейджера и засетать при резюме?
>>768652
#234 #768652
>>768637
Ну я теперь храню страницы в переменной класса и подставляю её во вьюпейджер, вроде всё работает
#235 #768678
Во фрагменте, который setRetainInstance(true), качаю видосики с дропбокса с помощью dropboxAPI+rxjava. subscribeOn в новом потоке. Зачем кешировать обсервер, и отписывать/подписывать перед/после поворота? Запрос и без этого не прерывается. Ведь я правильно понимаю: тк объект фрагмента не уничтожается-->новый поток который мы вызвали тоже не прерывается. В onCompleted с UI нет никаких взаимодействий.
Поворот обрабатываю не в ручную офк.
>>768693
#236 #768693
>>768678
Стоит в сервис с нотификашкой вынести, так как грохнет кто-то твою активити и видосик не скачается, ставлю 1 звезду.
#237 #768773
Сеньоры, это норм, что при тыкании моего приложения оно разрастается до 55-60мб, а при инициации gc в студии оно становится сначала 32, а потом опять при инициации 22, это мой быдлокод или всё ок?
#238 #768777
>>768773
не ок.
>>768778
#239 #768778
>>768777
почему?
#240 #768787
>>768773
А мне кажется все ок, если ты конечно не ловишь OME, возможно стоит добавить всяких освобождений в onTrimMemory
#241 #768800
>>768773
Какое у тебя разрешение экрана и сколько всего памяти на устройстве?
>>768802
#242 #768802
>>768800
1280x720
1 Гб
И да, в приложении много картинок, юзаю Picasso
>>768808
#243 #768808
>>768802
В onDestroy (не очень много смысла) или onTrimMemory (а тут уже больше смысла, лови кейз TRIM_MEMORY_UI_HIDDEN) своей активити и чисти кеш картинок. http://stackoverflow.com/questions/22016382/invalidate-cache-in-picasso
>>768826
#244 #768826
>>768808
спасибо, но я думаю пока не приложение не падает, оставлю так
>>768834
#245 #768834
>>768826

>не приложение


Оговорки по Фрейду.)))....)
#246 #768869
Приветик. Я тут хочу написать приложение, но останавливает отсутствие вменяемой java-библиотеки для существенной части функционала. Конкретно - парсинг abc-нотации и генерация изображения с нотами. Нашел однако примерно то, что мне надо на js - https://github.com/paulrosen/abcjs . Эта библиотека делает все что мне нужно, но заточена она под веб, svg выплевывается в dom-элемент. Есть ли способы как-то засунуть все это в андроид-приложение? Т.е. загружаем библиотеку в какой-нить javax.script , выполняем, это все я себе еще более менее представляю, но вот как перехватить svg изображение и например передать во вьюху, м?
>>768919
#247 #768919
>>768869
WebView, там все удобно.
>>768922
#248 #768922
>>768919
Смешно.
>>768934
106 Кб, 600x1953
#249 #768934
>>768922
Кто тут шутит — пишешь html+js в ассетах, загружаешь в WebView и пишешь @JavascriptInterface
>>768947
#250 #768947
>>768934
Потом удивляешь, почему всё работает через жопу и жутко медленно.
>>769147>>769925
#251 #768958
Как сделать, чтобы при скролле вьюшки в коллапсинг туллбар лейауте становились прозрачными взависимости от положения скролла?
>>769013>>769048
#252 #769013
>>768958
У апбарлейаута есть листнер на скролл.
>>769075
#253 #769048
>>768958
коллапсинг тулбаре можно детектить отхождение, высчитывай процент и твори
>>769075
#254 #769075
>>769013
>>769048
А там на всех девайсах будет одинаковое значание в лисинерах?
>>769078
#255 #769078
>>769075
Нет, там оффсет отдается в пикселях.
#256 #769147
>>768947
Ой все, у меня на трехлетнем теле летит приложение с такой вьюхой, и норм.
#257 #769223
AccountManager еще используется или он как AsyncTask? Как вы вообще по-пацански делаете аутентификацию юзера, и сохранение токена?
>>769253>>769386
#258 #769253
>>769223
Я бы предложил OAuth2 и хранение токена в дефолтном KeyStore андроида.
#259 #769386
>>769223
Конечно используется. И именно его и нужно использовать.
#260 #769403
А можно сделать чтобы диалог (Dialog()) не блочил активити? В смысле если я нажал куда-то помимо окна диалога, ивент дошел бы до нижележащей активити.
>>769552>>769606
#261 #769440
>>768773

> Сеньоры


сеньеров полон тред
#262 #769552
>>769403
делаю свою вьюшку в активити с полупрозрачным бэкграундом
#263 #769554
Сап, делал я значит список с автоподрузкой и тут опана:
Caused by: rx.exceptions.OnErrorNotImplementedException: Only the original thread that created a view hierarchy can touch its views.
Код добавления элементов:
public static void fake_loadNewsUsingAdapter(int position, SimpleBindableAdapter<NewsItem> adapter, String lorem) {
/NewsItemObservableEmulator.getFakeNews(lorem)
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
.flatMap(newsItems -> Observable.from(newsItems.getNews()))
.subscribe(newsItem -> adapter.add(new NewsItem(newsItem.getTitle(),
newsItem.getDescription())), e -> {e.printStackTrace(); adapter.setItemsLoading(false);},
() -> adapter.setItemsLoading(false));
/
NewsItemObservableEmulator.getFakeNews(lorem)
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
.map(newsApiObject1 -> newsApiObject1.getNews())
.map(newsApiItems1 -> translateFromApiDataToNormal(newsApiItems1))
.subscribe(newsItems -> {adapter.addAll(newsItems); adapter.setItemsLoading(false);});
}

что то, что закомменчено, что то, что не закомменчено вызывает эту ошибку. Что собсна с ней делать ?
При этом если добавить в onError что-нибудь типа e -> e.printStackTrace(); то будет выскакивать такая ошибка только на первом элементе из "порции", да притом не со 100% шансом. Почему эта фигня вообще происходит и как ее исправить ? Подумываю вот увеличить расстояние до конца подруженной части списка после прохождения дальше которого инициируется подгрузка
>>769555>>769559
#264 #769555
>>769554
Пардон, звездочки бли зверско скушаны, очевидно перед NewItemObservableEmulator и после setItemsLoading(false)); должны стоять звездочки
#265 #769559
>>769554
упс, то я дурак, .subscribeOn(AndroidSchedulers.mainThread()) нужно юзать , а не .observeOn(AndroidSchedulers.mainThread()) ;
Придумали же епт, названия
>>769560
#266 #769560
>>769559

> subscribeOn сетевой запрос на главный поток


Разберись с этими операторами полностью, ты опять делаешь не так.
>>770200
#267 #769606
>>769403
С точки зрения UX, так делать не стоит.
#268 #769812
Сап, братишки, нужна ваша помощь.

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

Как это можно сделать?

Сейчас разбираюсь с драйв api, но как-то все мутно, не до конца понимаю как все работает. Получается, что я могу только создать файл в облаке, а потом побайтово скопировать содержимое своего файла туда, все правильно понял?
И можно это делать не только для .txt, а для любых форматов?
>>769834
#269 #769824
Аноны как сделать, чтобы кнопка меняла иконку после нажатия, а то сейчас я это в коде делаю
>>769839
#270 #769834
>>769812
Firebase storage для файлов, а ссылки на файлы хранишь в Firebase database.
>>769876>>769901
#271 #769839
>>769824
Toogle button как вариант.
#272 #769862
Как гуглить туториал про просмотр картинок, как в вк или других приложениях, т.е. когда картинку можно смахнуть вверх или вниз и она вернется на свое место?
>>769869
#273 #769869
>>769862
Открываешь код вк или чего-то там и смотришь. Названия пакетов не обфусфируются полностью, если атм какая-то либа нагуглишь по ней, иначе посмотришь принцип.
#274 #769876
>>769834

>Firebase sterage


Это ведь не бесплатно?

Через drive никак не получится?
>>769882
#275 #769882
>>769876
Я думаю тебе 1 гб бесплатной версии хватит.
>>769892>>769904
#276 #769892
>>769882
Боюсь, что может и не хватить много пользователей

Есть помимо офф сайта годные туторы как с этой firebase работать?
#277 #769901
>>769834
Зачем использовать датабазу? Одного сторадж недостаточно?
>>769907
#278 #769904
>>769882
Расскажи там 1 GB на всех юзеров или на каждого?
Если на всех, то как там разруливать кому какие данные принадлежат?
>>769907
#279 #769907
>>769901
>>769904
Firebase storage не может в списки файлов, только доступ по названиям. Для этого у нужен database, чтобы запоминать, у какого юзера какие файлы есть.
Разруливание прав происходит через firebase auth и правила описываемые в storage.

5 GB на всех. Но если мало, то google drive офк.
>>769912
#280 #769912
>>769907

>5 GB на всех. Но если мало, то google drive офк.



И это возвращает меня к предыдущему вопросу:

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


>И можно это делать не только для .txt, а для любых форматов?

>>769916
#281 #769916
>>769912
А как ты хотел? Ты скачиваешь файл побайтово и выгружаешь в облако тоже побайтово. Другое дело, что в sdk может быть обертка, в которую можно запихнуть io.File, и она сделает все сама.
Можно для любых форматов.
>>769933>>769958
#282 #769925
>>768947

На виндофоне, да ни к ночи будет он помянут, треть программ написаны на html + js, никаких лагов.
>>769951
#283 #769933
>>769916
А что лучше под это использовать? Google Drive Api for Android или Google Drive REST Api?
>>769978
#284 #769951
>>769925
Это там калькулятор даже на десктопе стартует по 10 сек.
Недавно увидел это в живую охуел, сам то на маке сижу.
#285 #769958
>>769916

>Можно для любых форматов.



А как эти любые форматы запилить?
Файл создается через MetadataChangeSet.Builder(), там есть .setMimeType("") куда нужно пихнуть тип файла. Список типов вот https://ru.wikipedia.org/wiki/Список_MIME-типов - он достаточно ограничен.

Можно это как-нибудь обойти?
>>769978
#286 #769978
>>769958
Есть такая штука
MimeTypeMap.getSingleton().getMimeTypeFromExtension

Если она вернет null, ты можешь попробовать задать application/x-binary.

>>769933
Ну, я бы в первую очередь все-таки попробовал Api for Android, чем самому писать все запросы.

Да и я вообще с Drive не работал.
#287 #770129
Как у меня бомбит от того, что нет толковых туторов о том, как юзать этот сраный драйв апи.
Документация какая-то кривая, на стековерфлоу все жалуются на баги. Нахер так жить?
#288 #770200
>>769560
хер его знает, ui не фризит, не ругается, сам был удивлен
#289 #770212
Антош, у меня org.junit.Assert.fail прерывает тестирование и остальные тесты не проходят. Как сообщать в тесте о том что этот тест не прошел, но не прерывать все тестирование? JUnit 4.12
>>770217
#290 #770217
>>770212
test {
abortOnErrors = false
}
>>770226
#291 #770226
>>770217
Куда это пихать? Запихнул в build.gradle он говорит что "Gradle DSL method not found: 'test()'"
118 Кб, Webm
#292 #770233
Не анимирует последние of type виджеты внутри PreferenceFragment. На эмуляторе nexus7 api22 тоже. Что-то очевидное упускаю? В чем может быть дело?

SettingsActivity.java http://pastebin.com/7QKSmc3y
preferences.xml http://pastebin.com/kFJCcrwR
activity_settings.xml http://pastebin.com/rBg10mz3
>>770280
#293 #770280
>>770233

> android.preference.PreferenceFragment


v7, v14 тоже не работают? Да и в них вроде материал дизайн завезли.
>>770322
#294 #770322
>>770280
Спасибо, с v14 заработало (v7 не смотрел). А что не так со стандартным может быть, не представляешь?
587 Кб, 852x477
Фрагменты НЕ нужны #295 #770325
https://www.youtube.com/watch?v=jl1HRiCaAP4

Эти ребята прямо про меня рассказывают, готов подписаться под каждым словом.

TL;DS
SOLID + Kotin + Reactive programming = Рулят
#296 #770358
Аноны, почему может не вызываться onDestroy у фрагмента, после инициации gc, этого фрагмента уже нет на экране офк?
>>770369
#297 #770367
>>770325
Код где? К чему мне твой треп на пол часа.
>>770422
#298 #770369
>>770358
Он застрял во фрагмент менеджере. addToBackStack например. onDestoy вызывается не из-за сборщика мусора, его вручную вызывает фрагмент менеджер же, не?
#299 #770373
Такс, котаны.
Есть foreground сервис в котором находится объект-БТконтроллер внутри которого крутится обмен данными с Bluetooth LE устройством.
В активити биндится сервис и таким образом через ссылку на сервис любые фрагменты, наследованные от BaseFragment получают ссылку на БТконтроллер.
Проблема в том, что эта сцука, БТконтроллер не зануляется при уничтожении нахуй, всего. И сервиса и активити.
Что с этим делать?
>>770431
621 Кб, 847x472
#300 #770422
>>770367

> Код где?


Какой тебе еще код?.. думаешь так просто "слез с фрагментов точеных, запрыгнул на flow дроченый".
Нет, няш, тут думать надо над чистой архитектурой и правильно разделять UI на custom views.

Еще кстати хорошая идея выноса чистого Java/Kotlin код в отдельный модуль без Android API зависимостей.

Вообще очевидные вещи раскатывают, один хрен года за 3 до этого доходишь сам.
>>771961
#301 #770431
>>770373
ЕЛКИ ПАЛКИ!
Ссылка на сервис была с модификатором static.
#302 #770457
Сколько будет жить отдельный поток вызванный из приложения, если юзер закроет его нажимая кнопку назад, а не через swipe task? До тех пор пока не завершит свою работу? Или это нихуя не безопасно и система может грохнуть его в любой момент?
#303 #770470
>>762039 (OP)
Какого хуя LeakCanary не работает? Просто ничего не происходит, юзал её месяца два назад, она постоянно брала дамп и анализировала его, щас нихуя
#304 #770486
Имеет ли смысл искать альтернативу localbroadcast, если объемы передаваемых данных примерно такие: каждые 2 сек 2-3 интента суммарно с 60 байт extra. Всего 10 типов интентов?
>>770497
#305 #770497
>>770486
ПРОФАЙЛЕРОМ померь
#306 #770507
>>770325
Говно рассказывают.

> SOLID + Kotin + Reactive programming = Рулят


Это и так очевидно.
>>770668
67 Кб, 225x400
#307 #770516
Есть ли библиотеки с каким-либо новостным api? Нужно для тестового задания, в списке у каждой новости должны присутствовать дата, изображение, заголовок (примерно как на пике). При выборе новости - подробное описание, фото- и/или видео-галерея.
Уже собираюсь реализовывать через парсинг RSS. Вопрос только в том какой именно новостной сервис использовать, чтобы был весь вышеперечисленный контент. Что посоветуешь, Анон?
>>770685
114 Кб, 489x930
#308 #770668
>>770507

> Kotin


> Это и так очевидно.


Не всем

Кстати, это "полный жизненный цикл фрагмента" (пикрил) еще на Google IO показывали.
https://www.youtube.com/watch?v=k3IT-IJ0J98 (╯°□°)╯︵ ┻━┻
Видео с IO дает как-раз лишний повод задуматься о том что фрагменты зачастую избыточны.
#309 #770685
>>770516
Retrofit + SimpleXMLConverter + http://pojo.sodhanalibrary.com (что-бы сгененировать JAVA классы из XML) + Picaso/Volley/Glide (для картинок)
>>770791
#310 #770791
>>770685
Спасибо, но это и так понятно, а вопрос

>какой именно новостной сервис использовать, чтобы был весь вышеперечисленный контент.

>>770807
#311 #770807
>>770791
Ну если ты в /pr/ пришул с таким вопросом, то очевидно что

http://www.gay.ru/news/rainbow/rss.xml
>>770976
#312 #770976
>>770807
title, pubDate, description это не все что надо, должна же быть еще картинка, потом подробное описание и фото/видео галерея
>>770988>>770991
#313 #770988
>>770976
Няшь, тебе сюда https://2ch.hk/b/ (М)
#314 #770991
>>770976
Создай сам, захости на firebase свой xml и не еби мозги с хуйней, никто тебе здесь не будет искать rss.
>>771244
#315 #771083
https://youtrack.jetbrains.com/issue/KT-12015
Эй котлиноблядь, они там че объебались? Как я блять без бандлов буду?
>>771210
202 Кб, 500x500
#316 #771104
Посоны, как такую вьюху запилить? Все пнгшки есть, но если их кидать даже на Relative Layout, то с кнопками, которые указывают по диагонали получается проеб
>>771150>>771210
#317 #771150
>>771104
Рисуй на канвасе повернутые битмапки, обрабатывай onTouch всей вьюшки. Или сделай прямоугольные кнопки которые друг на друга накладываются, но это может привести к хуите.
>>771155
#318 #771155
>>771150
Спасибо, анон. Я думал может есть способ попроще без изъебов, но видимо нет.
>>771192
#319 #771192
>>771155
Увы.
>>771246
22 Кб, 480x800
86 Кб, 680x494
117 Кб, 560x561
#320 #771210
>>771083
Ну так нафиг ты юзаешь EAP, у меня на 1.0.2-1 все OK
Будешь обзываться, не буду отвечать.

>>771104
На Android 4.1 (скорее всего) и выше можно что-то похоже сделать через: ViewGroup + View.setRotation
Код: http://pastebin.com/uHaUGcXs
#321 #771215
>>771210
Я использовал 1.0.2 это разве early?
#322 #771244
>>770991
кстати, а как в firebase просто сделать запрос за данными, без взякой хуйни типо подписка на изменения
>>771746
37 Кб, 791x178
#323 #771246
>>771210
>>771192
Пиздец я даун, посоны, тут в 5 строк это все сделалось.
>>771321
#324 #771270
>>771210

> Будешь обзываться, не буду отвечать.


Пиздец неженка, смотрите ка, на анонимной борде слегка его оскорбили.
#325 #771321
>>771246
Ну вот ты отрисовал с помощью поворотов, теперь лови клики. Ах да, твои нажатия не выглядят по человечески. Нет красивой анимации нажатия.
>>771344
#326 #771344
>>771321
Я пока их еще не начал делать, но смотри как я думаю. Я по нажатию буду делать invalidate и запоминать координату нажатия, потом я по координате определю куда юзер ткнул и уже в onDraw буду подменять битмап на нужный в определенный момент, как-то так. А когда юзер уберет палец с экрана снова перерисую, только все битмапы одинаковыми будут. Как-то так.
>>771350
#327 #771350
>>771344
Да, по другому никак, сделаешь xml аттрибуты для нажатой битмапки и не нажатой, будет норм.
#328 #771729
Можно в студии быстро прыгнуть к android.R ресурсу? Типа курсор на android.R.layout.somelayout, ctrl+key -> открылся иксемель.
>>771747
#329 #771746
>>771244
Есть метод что-то типа requestSingle, который отписывается после первого вызова.

Я тебе про firebase hosting говорил, заливаешь xml/json/любое говно и выкачиваешь по прямой ссылке в приложение.
#330 #771747
>>771729
На маке cmd+клик по имени ресурса. На винде возможно через ctrl.
>>771753
#331 #771753
>>771747
А, точно. Меня просто иногда кидает на сгенерированный R класс. Например v7.preference.R.layout.preference xml можно найти в ресурсах, но студия не понимает. Это как-то фиксится?
#332 #771763
почему setImageBitmap(null) не работает на android 5.0+ ?
(память не вычищяется)
>>771782
#333 #771782
>>771763
Иди гугли "как работает Java GC"
>>771953
#334 #771800
>>771210
Ангел?
#335 #771821
Писать на Qt на ведре не зашквар?
Maemo-dev ITT
>>771826
#336 #771826
>>771821
Писать под ведро вообще зашквар, независимо от того, как писать.
>>771899
#337 #771899
>>771826
Толстяк в треде, все в инкапсуляцию.
>>772208
#338 #771953
>>771782
да там вообще не вычищается, или что я там должен вычитать про GC что в лолипопе он не работает?
#339 #771960
>>770325
что ты несёшь кретин? При чем тут SOLID?
Давай, расскажи мне про OCP,LSP,ISP.
Как у тебя это всё реализуется. Каких-то базвордов понахвотался, шёл бы ты отсюда.
PS А чё, Java+SOLID не рулит?
>>771969
#340 #771961
>>770422
Короче ты кретин.
Любое говно + SOLID рулит.
А ты дегенерат который котлину приписывает вещи которые были придуманы за 20 лет до него
>>771969
736 Кб, 300x300
#341 #771969
>>772398
любитель flow вернулся в тред #342 #772199
Таки в итоге я допер, что при триггере onPause activity не рушится, но по какой-то неведомой причине умирают массово view-шки, прикрепленные flow. Решение как два пальца - брать и отлавливать при onPause все состояния дочек view, ждать onResume и после ВНЕЗАПНОЙ (и неадекватной) попытки KeyChanger-а пересоздать текущий view, передаем в нее лежащие в Activity данные. Ура, товарисщи, теперь проблем-то с Flow и не осталось :D
>>772212
#343 #772208
>>771899
Ни разу не толстота же.
#344 #772212
>>772199
Ну раз пришел, ответь как на вопросы:
1) что там mvc/mpv/mvvm?
2) что там с поворотами?
3) есть ли там какой-то аналог биндинга (как в mvvm)?
>>772220>>772243
#345 #772220
>>772212
1) Я делаю по mvp все, и мне более чем нравится. Для mvvm извольте юзать data-binding или что-либо наподобие, ибо у этой либы цель вообще иная.
2) Не смотрел, но коли могу манипулировать State-ами вьюх, то и повороты обрабатывать не то чтобы сложно было. Если интересно - могу завтра попробовать и отписать.
3) см п1. Хочешь связывание - используй другие библиотеки, эта сделана не для того, чтобы биндить данные.
>>772247
#346 #772243
>>772212
P.S. Но только учти, что будет очень непривычно :)
#347 #772247
>>772220
Кудани (на pastbin) пример идиоматичного презентера и вьющки
>>772250
#348 #772250
>>772247
Если не возражаешь - завтра, я просто уже посидел часиков 10 в кафе за компом и у меня рвотный рефлекс на создание вьюх ^_^
>>772254
#349 #772254
>>772250
OK, заодно и про повороты выясни :)
>>772266
#350 #772266
>>772254
заметано
69 Кб, 600x600
#351 #772319
Погромисты, вы же понимаете, что рыночек с каждым годом будет решать все жестче, конкруенции будет все больше. Перспектива проработать до 40 за еду становится все реальнее, а после 40 вы будете никому не нужны. Тем временем ванька ерохин, который в 18 отучился, скажем, на юризда, в 40 будет уже примерно майором полиции с двумя фокусами в кредит, квартиркой от государства и еще одной в ипотеку, которую он будет в состоянии оплатить, не отдавая последний носок банку. Плюс, поездки за границу раз в год с семьей. Не будет ли у вас ощущения, что свернули вы не туда?
#352 #772344
Андроиданы, в приложении нужна функция перевода с одного языка на другой. Где можно взять годный переводчик?
Бегло порылся в google.translate API, он вроде присобачивается только к сайтам для перевода оных. Есть какие-нибудь встраиваемые базы, которые можно использовать в своих приложениях? Онлайн/оффлайн не так важно, главное достаточная гибкость и уже не готовое отдельное приложение.
>>772367
#353 #772349
>>772319
Как порешает тогда и приходи.
#354 #772367
>>772344

> он вроде присобачивается только к сайтам для перевода оных


https://cloud.google.com/translate/v2/translating-text-with-rest#translating-a-single-string
>>772379
#355 #772378
>>772319
да вот нихуя, приложения в цене только растут, пряморуких кодеров все меньше и меньше, спрос на услуги все больше и больше ( живу в ДС, опыт - год, работу предлагали трижды, сейчас на аутсорсе в веб-студии, средняя цена проекта ios + android + backend - 300-450к )
#356 #772379
>>772367
Спасибо. Вероятно что-то пропустил, пойду перечитаю более вдумчиво.
#357 #772398
>>771969
Я с ним отчасти согласен.
Ладно бы были трюки с делегатами, дак нихуя этого нету. А так однохуйственно что ваши вары/валы, что свойства класса из коробки.
>>772400
#358 #772400
>>772398
Да и багов однохуйственно
>>772403
#359 #772402
>>772319
Ну это относится ко всему ИТ.
Но когда вижу какие рахиты входят в ит то немного успокаиваюсь. Они никак не повлияют и не задемпингуют мой ценник, ибо они не могут сделать то что я.
Да и советую смотреть на индусов, они самые дешевые, но с ними работают один раз, первый и последний.
#360 #772403
>>772400
Что?
#361 #772490
Статья для новичков про архитектуру MVP и сохранение презентера при повороте экрана.
https://github.com/konmik/konmik.github.io/wiki/Introduction-to-Model-View-Presenter-on-Android
>>772558>>772756
#362 #772558
>>772490
Спасибо.
#363 #772756
>>772490
Почему не по русски? Я не буду такое читать
>>772822>>772953
#364 #772796
Передавать 3 листа строк (~100 элементов, <100 символов) в интенте это оукей?
>>772822
#365 #772822
>>772756
:^)
>>772796
Пахнет неприятно, может быть лучше БД?
>>772829
#366 #772829
>>772822
Активити берет из бд, показывает элементы. Клик на элемент -> другая активити показывает выбранные первой из бд элементы в пейджере. Первая не следить за апдейтами бд, поэтому если во второй брать из бд, ей могут прийти другие данные.
>>772831
#367 #772831
>>772829
Как они будут другими, если у них айдишники одинаковые будут? Или у тебя там в фоне еще кто-то может выбранным данным что-то поменять, ну тогда здесь флоу какой-то не правильный, нельзя менять выбранные данные, если так пойдет то ты можешь получить выбранные и измененные данные, может какую-то блокировку на изменения вешать?
#368 #772953
>>772756
Можно кстати перевести. В целом, статья годная, всё просто и по делу.
#369 #772955
Котаны, подскажите как сделать такую вещь:
Есть StartActivity, оно запускается при старте приложения.
Если запущен сервис - то в oncreate или в onstart StartActivity произойдёт переход на MainActivity.
Как мне уничтожить к хуям StartActivity после перехода на MainActivity, чтобы юзер по нажатию на back button не попал обратно на MainActivity?
>>772960
#370 #772960
>>772955
После startActivity(new Intent(StartActivity.this, MainActivity.class) вызови StartActivity.this.finish();
>>772965
#371 #772965
>>772960
Вызов this.финиш после startactivity не помогает.
У меня StartActivity с флагом singleinstance, т.к. два инстанса мне не нужно.
>>772974
#372 #772974
>>772965
Такс! Это мой баг. Вызова finish действительно не было там, где он должен быть.
73 Кб, 384x640
#373 #773070
Привет. Подскажите из-за чего после закрытия Activity при помощи кнопки back, из task manager'a эта активити открывается после второго нажатия.
По первому нажатию активити в такс менеджере подсвечивается, но ничего не происходит. По второму нажатию активити запускается.

Почему не по первому нажатию?
ОС: Android 6.
>>773086
#374 #773086
>>773070
На картинки явно не 6 андроид, а максимум 4
>>773095
#375 #773095
>>773086
Так вот в чем проблема! Проблема в картинке.
>>773142
#376 #773142
>>773095
Хоть я и проиграл, но иди нахуй шутник хуев.
Тащи давай флаги с которыми открываешь активности.
>>773166>>773215
#377 #773148
>>762039 (OP)
Хочу разрабатывать под ведро на питоне. Какие подводные камни?
>>773150>>773167
#378 #773150
>>773148
1) Хуй тебе, а не гайды;
2) Хуй тебе, а не производительность;
3) Хуй тебе, а не защита кода;
>>773173
#379 #773166
>>773142

> активности


Не надо так.
#380 #773167
>>773148
Дополню коллегу:

4) Хуй тебе, а не вакансии
5) Хуй тебе, а не советы в этом треде
>>773173
#381 #773173
>>773150
>>773167

>1) Хуй тебе, а не гайды;


Ну, у kivy таки есть доки. Но в остальном да.
После питона у меня ява совсем не идёт, а в мобильную разработку хочется.
>>773179
#383 #773186
>>773179
Ох, лол, я уж лучше go подожду. Хотя за хаскель я в своё время брался, но не нашёл ему применения.
#384 #773191
>>773179

>Haskell


Фу, только Lisp спасет ведро.
>>773193
#385 #773193
>>773191
Лисп - позапрошлый век, пролог - наше всё.
>>773201>>773207
#386 #773201
>>773193
Только APL
>>773209
55 Кб, 500x435
#387 #773207
>>773193
Снимаю шляпу.
#388 #773209
>>773201
Ну хер знает. Обычно фортрана хватает, а покупать какую-то специальную клавиатуру и переходить на другой язык только потому, что он современнее - это хипстерство крайней степени.
>>773213
626 Кб, 795x444
Where We Stand and What’s Next #389 #773210
Раз такое дело, пора вбросить последние новости про Kоtlin

https://blog.jetbrains.com/kotlin/2016/06/kotlin-night-recordings/

https://www.youtube.com/watch?v=POZmfjRHdfE
>>773246
80 Кб, 960x720
#390 #773213
>>773209
Зачем клавиатуру, шорткатов понаделай. Или с тачпада можно.
>>773321
#391 #773215
>>773142
Флаги не использую, launchmode = "singleInstance", AppCompatActivity.
>>773303
41 Кб, 487x540
#392 #773218
Ананасы, сап. Как убрать вот эти белые пробелы?

вот код:
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="0dp"
android:id="@+id/icon"
android:src="@drawable/lightblue"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="italic"
android:paddingTop="0dp"
android:paddingRight="50dp"
android:id="@+id/Itemname"
/>

что дописать?
>>773230
#393 #773230
>>773218
Ты покажи xml ячейки с этой хуйней, небось там паддинг.
>>773232
20 Кб, 321x276
#394 #773232
>>773230
http://pastebin.com/dRq6CN40

это весь код.

Прикрепил. паддинга нет.
>>773235
#395 #773235
>>773232
вылечил. вместо src заюзал background
>>773253>>773255
#396 #773245
Раз такое дело, пора вбросить тебе за щеку.
>>773246>>773254
sage #397 #773246
#398 #773253
>>773235
Ты понимаешь что это неправильно? Сделай картинке wrap_content что бы не было белых полос, так у тебя картинка будет хуевится. И да, вместо fill_parent поставь match_parent, не тащи старье.
>>773255
#399 #773254
>>773245
Чо Вам так с него бомбит, он вроде мирный.
>>773274
#400 #773255
>>773235
>>773253
Или поставь scaleType="fitXY"
>>773257>>773277
#401 #773257
>>773255
это уже лушче
>>773277
#402 #773274
>>773254
Фанбои никому не нравятся.
#403 #773277
>>773255
>>773257
Будут проблемы с производительностью на больших изображениях.
Вместо этого, лучше использовать fitCenter() или centerCrop() у Picasso/Glide.
>>773292
#404 #773292
>>773277

>лучше использовать fitCenter() или centerCrop()


Они разніе вещи делают. Что значит лучше?
>>773308
#405 #773303
>>773215

> singleInstance


Это и есть флаг. А он тебе нужен, или ты его просто как написал? У меня были проблемы с ним, когда я открывал хром табы и пытался перейти назад. Мне не давало и выкидывало обратно в хром.
>>773330
#406 #773308
>>773292
Я в курсе.
Значит, что не будет проблем с производительностью.
>>773471
#407 #773321
>>773213
Я на самом деле от математики далёк, так что мне ни APL, ни фортран не понадобятся никогда.
#408 #773330
>>773303
Мне не хочется, чтобы активити в которой биндится сервис и производится всякая ресурсоёмкая залупа была создана в двух экземплярах, а это вполне возможно сделать пользователю.
При помощи singleInstance это исправляется.
Даже с launchmode="standard" ничего не меняется.
У меня кстати на MainActivity сделан переход с IntroActivity, которая в манифесте помечена как android.intent.action.MAIN.
>>773332
#409 #773332
>>773330
Заметил сейчас, что иногда MainActivity с первого прикосновения открывается из TaskManager. Но обычно с двух. Причем после первого прикосновения никаких методов никаких активити не вызывается. Со второго - как и положено onCreate и далее всё работает так, как и предполагалось.
Мистика какая-то. Уже выкидывал весь код из onCreate, из onDestroy, из OnBackPressed - не помогает. Не пойму где спрятался косяк.
#410 #773410
Двачаны. Есть массив строк для листвью.
Для каждой строки есть картинка.
Проблема в том, что картинок приходится делать столько же, сколько и строк.

Но я хочу, например, не знать количество строк и циклом заполнить массив картинок. Куда писать цикл?

Думаю, код поможет понять мою идею.

В onCreate если пишу цикл for, то вылетает. если делаю Integer[]someName(){
}и return, то тоже вылетает.

Подскажите, как забить циклом картинок по количеству строк?
#411 #773411
#412 #773419
>>773410
Если айдишники забивать, то никак.
>>773421>>773423
#413 #773421
>>773419
А какой есть ещё вариант?
#414 #773423
>>773419
такой вариант сработает?
ImageView whoamiwith = (ImageView)findViewById(R.id.whoamiwith)

и потом в цикле Integer=whoamWith;

Сработать должно?
>>773426
#415 #773426
>>773423
>>773410
Нахуй и впизду!
Что ты хочешь на выходе получить?
>>773427
#416 #773427
>>773426
чтобы было столько картинок, сколько строк
>>773556
#417 #773435
>>773410

>Но я хочу, например, не знать количество строк и циклом заполнить массив картинок. Куда писать цикл?


И как ты узнаешь размер массива картинок?
Я посмотрел код, и нихуя не понял. Что вообще за тупость происходит? Тебе нужно как-то раскрасить листвью что ли? Тогда используй recyclerview и itemdecorator. Не хочешь делать так, а хочешь просто сделать красивое чередование картинок? Сделай массив из все картинок, у тебя это будет
Integer[]imgid = {
R.drawable.lightblue,
R.drawable.gray,
R.drawable.blue,
}
и получай нужную картинку просто по imgid[position % imgid.length]
>>773905
#418 #773471
>>773308
Блять, ты долбоеб? Может у тебя еще суммирование лучше умножения так как быстрее?
>>773580
54 Кб, 678x445
#419 #773482
>>773410
Если ты хочешь избавиться от ручного заполнения массива imgid, то
1) переименовываешь нужные картинки в image_0.png, image_1.png и тд
2) В цикле вызываешь getIdentifier (возвращает ID ресурса по его имени) подставляя имена картинок, типа:
getResources(). getIdentifier("image_"+i+".png","drawable",getPackageName());

https://developer.android.com/reference/android/content/res/Resources.html#getIdentifier(java.lang.String, java.lang.String, java.lang.String)
>>773485
#420 #773485
>>773482
Если честно хуевый подход. Непонятно по имени ресурса что за картинка и тд.
>>773495
#421 #773495
>>773485
ну тогда называй картинки "опасные новости.png" "сверхопасные новости.png" и
в getIdentifier подставляй words.toLower()+".png"
>>773500
#422 #773500
>>773495
Не, спасибо. Нахуй ты такое говно советуешь? Тебя самого не ебут за такое?
>>773508>>773556
10 Кб, 320x300
#423 #773508
>>773500
Спасибо у меня все хорошо, держи подарок.
>>773512
#424 #773512
>>773508
Себе можешь забрать, как раз подойдет под размер твоего ануса, может говно в тред перестанет вылетать.
#425 #773556
>>773427
>>773410
Какой вопрос

>>773500
Такой и ответ. Хуярь эти картинки как-нибудь сам.
#426 #773580
>>773471
Ну, если при умножении у тебя всё будет виснуть, а сложение будет работать нормально, то да, сложение будет лучше.
>>773603
#427 #773588
>>773410
Я бы сделал два массива ресурсов.
Один с заголовками, другой с идшками картинок.
И будешь получать R.array.my_titles и R.array.my_images
#428 #773598
Антон, где я проебался с разметкой, в этом ли трабол?
Как такое фиксится?
>>773600>>773601
21 Кб, 328x612
#429 #773600
>>773598
пикчефикс
#430 #773601
>>773598
>>773600
Ну и где твоя разметка, даун?
#431 #773603
>>773580
Пизди хуйню расти дибилом.
>>773608
#432 #773604
>>773600

> Решено?


Охуенный UI.
#433 #773607
>>773600
Что у тебя с тулбаром?
>>773609>>773626
#434 #773608
>>773603
Твоё мнение очень важно для нас, школьник.
>>773610
#435 #773609
>>773607
Хуйня.
#436 #773610
>>773608
Да успокойся уже и хватит советовать хуйню.
>>773614
#437 #773613
Ой я ебал, началось лето и это пиздец. Нестерпимое желание укатить из треда.
>>773620
#438 #773614
>>773610
Да говна пожуй, дурачок.
>>773618
#439 #773618
>>773614
Что говоришь? Твоих советов пожевать? Нет спасибо.
#440 #773620
>>773613
Так бери и уёбывай, вместо того, чтобы плач Ярославны тут устраивать.
Скучать не будем.
>>773621
#441 #773621
>>773620
Ну конечно, вы тут ковровую бомбардировку говносоветами устраиваете и сами себя в нем топите.
>>773623
#442 #773623
>>773621
И один лишь ты в белом плаще стоишь красивый?
>>773625
#443 #773625
>>773623
Нет, нормальные люди в вашем метании говном просто не участвуют, я просто решил немного образумить.
>>773629
#444 #773626
>>773607
Уже пофиксил, спасибо, адекват. А то понабежало тут школоебов.
>>773627>>773632
#445 #773627
>>773626
Так ты его руками делал чтоль?
>>773630
#446 #773629
>>773625

> Двач


> нормальные люди

>>773634
#447 #773630
>>773627
А чем его еще делать?
>>773636
#448 #773632
>>773626

> Спрашиваешь, что не так с разметкой, не показывая разметку


> Кругом школоебы

>>773635
#449 #773634
>>773629
Понятно. Так на будущее, в нормальных тематиках сидят нормальные люди. Вообще удобнее форума не найти.
Но вот залетевшие школотроны из б засирают все, благо им в тематиках особо не интересно.
>>773637
#450 #773635
>>773632
Подумал, что тут очевидно всё, местные помогут хуй
>>773640
#451 #773636
>>773630
На скрине видно какой-то прозрачный лейаут.
Имею ввиду ты его пытался сам реализовать через лейауты или взял готовую вьюху - тулбар?
>>773639
#452 #773637
>>773634

> Двач


> Форум

>>773642
#453 #773639
>>773636

> реализовать через лейауты


> готовую вьюху - тулбар


Так это одно и то же ведь, не? Или что ты имеешь в виду?
>>773641
#454 #773640
>>773635
На самом деле очевидно, просто он дибил.
Если тулбар не привязать к апкомпатактивити то он так и выглядит. Правда пока не понял какого хера он у тебя прозрачный.
#455 #773641
>>773639
Ладно, похуй, просто забей.
Юзай Toolbar и AppCompatActivity
#456 #773642
>>773637
Анонимный форум, что тебе не нравится?
#457 #773678
Стоит вас на минуту оставить и тред сразу скатывается в говно.
>>773681
#458 #773681
>>773678
Слава богу, ты вернулся!
>>773693
#459 #773693
>>773681
Ну а как иначе? Не могу же я вас бросить.
#460 #773905
>>773435
Спасибо, друг. не знаю, кто в треде отписывался - это был не я. Твой совет помог. Прям то, что надо!

700 чаёв с меня
#461 #773941
При обновлении приложения SQLite база не будет заново создана, если версия её не изменилась?
>>773962>>773977
#462 #773962
>>773941
Ты о чем вообще?
Если ты про sqliteopenhelper, то он никогда не ПЕРЕСОЗДАЕТ базу,
он может только ее проапдейтить
#463 #773977
>>773941
Только если ты сам в онАпгрейд/онДаунгрейд такое не сказал делать.
#464 #773981
Скажите, дизайнером в студии кто-нибудь реально пользуется? Вообще, что думаете про него?
>>774010
#465 #774010
>>773981
Что за дизайнер?
>>774014
#466 #774012
В архитектуре MVP где нужно размещать асинхронный код (AsyncTask):
1) Прямо в моделе и далее вызывать методы презентера по результату выполнения асинхронной задачи?
2) В презентере. В моделе при этом реализовать синхронный доступ к данным?
>>774100
105 Кб, 504x612
#467 #774014
>>774020>>775035
#468 #774020
>>774014
90% верстаю мышкой.
Остальные 10% через XML.
При этом в custom view делаю так, чтобы в редакторе они отрисовывались точно также, как и в приложении.
11 Кб, 485x124
#469 #774042
Сап, двач! Можно ли как-то в GridLayout сделать divider, подобные LinearLayout?

У меня есть три кнопки, между ними - пустошь. Вот пустошь в линеар можно забить либо бэкграундом, либо сделать android:divider и даже сделать divider_height и цвет.

Как сделать divider(или его подобие) в GridLayout?
>>774046>>774055
#470 #774045
Используй recyclerview с gridlayoutmanager, там декораторы можно любые ставить.
>>774046
#471 #774046
#472 #774055
>>774042
А если у тебя три кнопки, то просто сделай LinearLayou с orientation: horizontal
>>774057
#473 #774057
>>774055
там ведь есть дивайдер, да?
>>774059
22 Кб, 400x338
#474 #774059
>>774057
Я никогда не использовал android:divider. Но если ты использовал его в LinearLayout и хочешь сделать что-то подобное в горизонтальном лэйауте, то очевидно,что нужно использовать тот же самый LinearLayout, просто с другим параметром ориентации (горизонтальная вместо вертикальной).
>>774065
#475 #774065
>>774059
Я ошибся. я юзал его в листвью
>>774071
#476 #774071
>>774065
Тогда попробуй обернуть кнопки в фреймлэйауты, ставь нужные маргины кнопкам внутри фреймлэйаута, а уже фреймлэйауты разукрась, как хочешь. Между фреймлэйаутами вроде не будет пустоты. А сами фрейм лэйауты запихни в горизонтальный линеарлэйаут. Можешь заменить фреймлэйауты на кардвью, если хочешь элевэйшн и красивые уголки, можешь заменить фреймлэйаут на релативлэйаут, если хочешь сделать дивайдеры какими-то особенными вьюшками.
Если хочешь какой-то простенький бэкграунд, типа однотонного цвета сзади, то обойдёшься без фреймлэйаутов, просто линеарлэйаут, оборачивающий кнопки, с нужным тебе бэкграундом.
Ну и вариант с ресайклервью с гридлэйаутом и статическим списком объектов и кастомным декоратором. Дохуя кода, сложная обработка кликов по кнопкам, но зато все дизайнопроблемы кладутся на совесть андроида.
>>774073
#477 #774073
>>774071

>с ресайклервью с гридлэйаутом


>с ресайклервью и гридлэйаутменеджером*

#478 #774089
>>762039 (OP)
Хуя там подбородок у трапа
#479 #774100
>>774012
Во времена android 1.6 писал и так и эдак, в любом случае с asynctask получалась полная лажа.
Хотя для моделей без asynctask было проще писать тесты.

В любой подходе mvc/mvp/mvvm юзать asynctask это устаревший подход.

Asynctask это api-костыль что внести в java 1.6 работу с асинхронными очередями команд как и handle/looper.
x) AsyncTask нельзя нормально зачейнить,
x) для них нужно порождать подклассы либо погружаться в колбек-хел,
x) ну и конечно там много бойлерплейта (особенно если пишешь в стиле java 1.6).

Используй RxJava, это сразу снимет большинство головной боли.
Там и асинхронность будет и тесты легко писать.
>>774105>>774128
#480 #774105
>>774100
Вот допустим, у меня сейчас есть проект, довольно большой, в нём я использую асинктаски для одной цели - конвертации изображений (из файловой системы или в виде массива байтов) в битмапы. Соответственно, в асинктаске тупо пять строчек кода декодирования BitmapFactory с нужными параметрами, плюс абстрактный коллбэк в UI, чтобы я реализовал его в нужном месте и сделал с битмапом необходимые действия. За несколько месяцев разработки не сталкивался ещё со случаем, когда этот механизм меня подвёл бы. RxJava не умею. Вопрос: стоит ли прямо сейчас попытаться заменить этот асинктаск на RxJava-аналог или я не получу никакой выгоды от этого?
>>774137
#481 #774128
>>774100
У меня задачка по-проще, думаю не стоит усложнять применяя всякие сторонние библиотеки.
Мне нужно выбрать через contentResolver некоторые данные по медиатеке пользователя.
Нашел AsyncQueryHandler - кажется это то, что надо.
Получается максимально простое взаимодействие с моделью:
//вызов из Presenter
model.getArtistsList(AsyncQueryHandler callback);
>>774136
#482 #774136
>>774128
А через Loader нельзя это сделать?
>>774139
#483 #774137
>>774105
Усложнение - это путь в никуда.
У меня тоже есть одно место, где используется AsyncTask - внутри Loader для загрузки данных из кэша и апдейта кэша. Работает мегастабильно, при том, что сделано очень просто.
>>774170
#484 #774139
>>774136
Хм, точно. Это можно сделать через CursorLoader.
Пока не знаю что из этих трёх способов лучше.
Вариант с AsyncQueryHandler выглядит самым компактным.
>>774160
#485 #774160
>>774139
Делай через Loader, пусть это и гряный код, пушо придётся имплементить коллбэки непосредственно во View, зато это рекомендуемый способ работы с БД.
#486 #774170
>>774137
А зачем загружать данные (из сети) прямо внутри Loader'a?
Я всегда по-другому делаю: Loader загружает данные только из БД. Сервис получает данные из сети, сохраняет их через ContentResolver в БД. После этого, Loader автоматически получает notification, что данные были изменены и сам их перезагружает.
>>774173
#487 #774173
>>774170
Я думаю твой вариант хорош, когда загрузка данных из сети длится достаточно долго.
Кстати, а как правильно: в случае с MVP получать от модели уже ГОТОВЫЕ данные или что-то промежуточное, к примеру Cursor с некоторыми полями, что далее уже преобразуется в объект, который лежит внутри ListAdapter?
>>774178
#488 #774178
>>774173
У меня всегда адаптеры работают с Cursor'ами. Именно поэтому обновление данных так удобно и происходит (CursorLoader + ContentResolver).
А если ты будешь сохранять свои элементы как массив/список/что-то еще, то тебе самому нужно будет реализовывать механизм оповещений и обновлений.
#489 #774444
Парни, глупый вопрос, конечно, но скажите: 10 активити в приложении - это не дохуя?
Может, для памяти плохо или ещё что?
#490 #774471
>>774444
не дохуя
#491 #774491
>>774444
От проекта зависит. Для хэллоуворлда 10 конечно дохуя. Для серьезного проекта уже нормально.
#492 #774557
>>774444
А фрагментов сколько?
#493 #774617
>>762039 (OP)
Как сделать полупрозрачный фрагмент с вьюпейджером, где будут картинки (т.е. обычная галерея). И ещё, как сделать transition анимацию из вьюпейджера в вьюпейджер? transition name вешал и на картинки во вьюпейджерах, и на сами вьюпейджеры, но че то не получается.
>>774673
sage #494 #774673
>>774617

> Как сделать полупрозрачный фрагмент с вьюпейджером


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

> как сделать transition анимацию из вьюпейджера в вьюпейджер


Что?
>>774684>>774685
#495 #774684
>>774673
что что? Надо сделать анимацию перехода картинки, я делал это с двумя разными картинками не во вьюпейджерах, но как сделать это со вьюпейджерами хз
>>774685
#496 #774685
>>774684
>>774673
Как я понимаю, он хочет сделать анимаци перехода между фрагментами во вьюпейджере.
>>774692
#497 #774692
>>774685
есть фрагмент с информацией о чем-то, там в коллапсинг лейауте маленький вьюпейджер с картинками, по клику на картинку в этом маленьком вьюпейджере должен открываться фрагмент, но уже с большим вьюпейджером, с теми же картинками. И при открытие фрагмента должна происходить вот такая анимация https://guides.codepath.com/android/Shared-Element-Activity-Transition
>>774892>>774894
#498 #774892
>>774692
Это большая и сложная задача. За тебя её тут никто решать не будет. Гугли разные варианты, пробуй.

В любом случае, делать анимации под android - это боль. Что-то более-менее нормальное можно сделать только для api >= 21. И то, очень много проблем. На последнем IO был пример с похожим поведением, что тебе нужно.
#499 #774894
>>774692
Проще выбить дизайнеру зубы. А то открывать в вьюпейджере фрагмент с вьюпейджером попросто хуйня.
#501 #775035
>>774014
никогда не юзаю, я олдфаг?
Тред утонул или удален.
Это копия, сохраненная 12 июля 2016 года.

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

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