Вы видите копию треда, сохраненную 8 декабря 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред для тех, кто пытается вкатиться в андройд разработку или что-то похожее. По возможности стараемся угощать ньюфагов чаем и поливать друг друга радугой.
> Хочу вкатиться в разработку под Android! С чего начать?
С видеокурсов от Udacity. Они бесплатны и затрагивают основы разработки даже если не умеешь писать на Java.
https://www.udacity.com/course/android-development-for-beginners--ud837
Для тех, кто не хочет учиться по юдасити существует скучный кат от гугла: http://developer.android.com/training/index.html
Так же есть книга, которая затрагивает основы разработки и имеет 2-е издание с 2017 года: https://www.amazon.com/Head-First-Android-Development-Brain-Friendly/dp/1491974052
Большинство приложений написано на Java, необходимо понимать что ты пишешь, в уме достаточно знать базовый Core т.к. 90% времени придется тыкаться в Android SDK. Полезные обучалки от анона:
https://habr.com/company/golovachcourses/blog/215275/ - смотри Головача
https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208 - книжка для ньюфагов. Хорошо заходит.
https://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486
Неплохим вариантом для изучивших джава будет книга https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997
Алсо можешь читануть паттерны, рано или поздно все равно базовое знание понадобиться https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124
Существует два текстовых ресурса для закрепления андройда на русском. Первый - несмотря на старость описывает базовые вещи, на которых построены мощные либы, второй - продавшийся говноед с котиками http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
https://commonsware.com/Android/ - толстая книга для гиков.
Так же можешь смотреть видосики от Mail.Ru
https://habr.com/company/mailru/blog/345252/
https://github.com/ybereza/technotrack-resources - ресурсы к лекциям
Или от Яндекса. В некоторых моментах спикеры рассказывают важные детали, которые кроются в мелочах:
https://www.youtube.com/watch?v=5EvxWifIgro&list=PLQC2_0cDcSKBNCR8UWeElzCUuFkXASduz
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> Я прошел курсы Udasity, а дальше что?
После прохождения курсов у тебя должно сложиться базовое представление о создании приложения; жизненные циклы Activity/Fragments, AsynsTask, Http, Json, SQLite.
Дальше закрепляешь знания путем просмотра видосов выше +
Написание парочку приложений на свой вкус. Так же стоит уделить внимание BroadcastReceiver, IntentService, поиграться с Loader's, хендлерами, Contest providers и прочее.
>Хочу изучать популярные либы и не быть говноедом!
Если ты сразу после курсов переползаешь сюда - будь готов, что ты не будешь знать как это делается под капотом.
Retrofit - стандарт для взаимодействия с сетью. Вместе с ней можешь изучать либу okhttp3. Так же для справки можешь гуглить volley.
RxJava - тяжеловесная либа. Одно из решений для выполнения кода в бекраунде.
[YouTube] KotlinConf 2017 - RX Java with Kotlin in Baby Steps by Annyce Davis - rxJava с нуля
[YouTube] RxJava доставляет Артём Зиннатуллин - на русском
[YouTube] Managing State with RxJava by Jake Wharton - rxJava
[YouTube] Making Retrofit Work For You by Jake Wharton - retrofit
Неплохо было бы и изучить MVP. Для самообразования можно написать его голыми руками или прогуглить, как это делается.
https://github.com/ArturVasilov/AndroidSchool - здесь рассматривается архитектура, и как ее ели с 2011 года.
MVP:
https://javarush.ru/groups/posts/505-mvp-v-android-dlja-samihkh-malenjhkikh - для понимания
https://github.com/Arello-Mobile/Moxy - плюшка для поворотов экрана
https://github.com/sockeqwe/mosby - англоязычная плюшка
MVVM - костыли от гугла:
Для нормального понимания желательно знать AAC.
https://startandroid.ru/ru/courses/architecture-components.html - свежие уроки от Димона
https://proandroiddev.com/the-missing-google-sample-of-android-architecture-components-guide-c7d6e7306b8f - для продвинутых
Пример MVVM
https://github.com/ericmaxwell2003/MvvmTipCalculator
Это всего лишь обертки, чтобы вынести логику из views. Для более углубленно изучения можно попробовать почитать
this: https://habr.com/company/mobileup/blog/335382/
Пример на котлине:
https://github.com/hitherejoe/GithubTrending
> Хочу анимировать мои говноподелки!
https://www.youtube.com/watch?v=dzB-1VlHJW8
Онли теория. Первые двадцать минут покрывают больше половины статей, которые можно найти на медиуме и т.д.
Здесь побольше практики на любой вкус: https://labs.ribot.co.uk/exploring-meaningful-motion-on-android-1cd95a4bc61d
Так же можно подробно почитать про смены сцен: https://blog.prototypr.io/applying-meaningful-motion-on-android-a271a873bd78
> Не хочу писать на Java!
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. С 17.05.2017 поддерживается официально.
[YouTube] Лекция 1. Kotlin 101[РАСКРЫТЬ] - свежие лекции на русском
https://www.amazon.com/Kotlin-Action-Dmitry-Jemerov/dp/1617293296 - библия
https://kupdf.com/download/kotlin-for-android-developers_59a05e2ddc0d60992a18496b_pdf - Kotlin for Android
https://www.udacity.com/course/kotlin-for-android-developers--ud888 - курсы Udacity
> Есть что-то кроме нативных приложений на Java/Kotlin?
- Flutter - кросс-платформенный фреймворк от Google. Js с аля строгой типизацией. Если совсем поехавший можешь начинать с него.
https://flutter.io/docs/ - документация
https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905 - курсы от Udacity
Остальные:
ReactNative — мочаскрипт во всей красе.
- PhoneGap/Ionic/Titanium — имя им мочаскрипт-младшие, принципы у них разные, первые три попытка в кроссплатформенность одного кода. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- Qt — кросс-платформенный фреймворк на C++. Используется в основном для игры и для приложений с высокими требованиями к производительности (обработка изображений, звука, ГИС-системы). Спрашивать в C++ треде.
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.
> Хочу писать игры!
LibGDX - слишком медленная параша для больших проектов, но познакомится можешь. Unity - для адекватных, Corona SDK, LOVE, Defold и другие. Спрашивать в /gd/.
> Что нужно, чтобы взяли джуниором? Что учить в первую очередь?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library и ее версии, shared preferences, SQLite, Handlers, Executors, Content-Providers), знание популярных библиотек типа Retrofit + Glide/Picasso + RxJava2 + Dagger2(по обстоятельствам), понимания СОЛИД и других паттернов проектирования. И хотя бы несколько готовых приложений.
Полезные ссылки:
https://www.youtube.com/channel/UCSwuCetC3YlO1Y7bqVW5GHg - канадский челик, поясняет за архитектуру и отвечает на разные вопросы на стримах.
https://github.com/toddmotto/public-apis - бесплатные API для создания приложений.
https://github.com/AlexeyZatsepin/Android-ORM-benchmark - бенчмарки на вопросы о том, какую БД выбирать.
Итак вопрос? Сильно ли это плохо для аккаунта? Притом что у меня очень давно блокировали приложение за неприемлемый контент.
Бля, если аккаунт забанят, то новый потом и не создать и хуй че докажешь этим гуглам.
Очень страшно, живу онли на доход с игор.
>Андроид приложения где публикуют?
Причем здесь это? Если ты делаешь игры - пиздуй в соседние треды.
Допустим, есть app компонент - базовый. От него идет First SubComponent - а от него идет SecondSubcomponent. Я прочитал статьи, и соответственно когда у нас активи, например, закрывается, то чистим нам First SubComponent.
У меня вопрос:
Нужно ли когда-нибудь чистить SecondSubcomponent и в каких случаях?
https://pastebin.com/6N7qVrVa
Создаю класс видео плеера ExoPlayer. С использованием DI Koin делаю этот класс синглтоном и инжект во врагменте. Передаю в метод ссылку на видео и view плеера. Запускаю аппу все работает. Делаем поворот экрана и получаю наложение звука, т.е. у нас создался еще один экземпляр плеера. Сейчас сижу и думаю, что проебался где-то на элементарной хуйне, но хз как гуглить.
Ты нахуя ExoPlayerFactory.newSimpleInstance вызываешь каждый раз? Не забывай, тебе ему еще release нужно не забыть вызвать, когда все отыграешь.
>Делаем поворот экрана и получаю наложение звука, т.е. у нас создался еще один экземпляр плеера.
Пхахахахах. Проиграл
делаю запрос в сеть,подписываюсь
.subscribe
(s->temp=s.getValue().get(symbols).toString()) ;
return temp;
получаю результат. НО получаю старый,то есть обновляется ,тогда когда делаю повторный запрос.Как сделать что б сразу получать результат. Как исправить ,плиз.?
Используй сабжекты.
private Observable<Change> request(String name, String name2){
return Network.getService().getDara(name,name2)
.subscribeOn(Schedulers.single())
.observeOn(AndroidSchedulers.mainThread());
}
Очень многое говорит.
А словами нет? Это странно конечно, может чекнуть как анон выше написал. Или кешировать в рх да.
Как земля
В смысле универсальный? Можно один сервер использовать на макмини, и разные конфигурации иос/ведро.
Глянуть все 17ые строки где фигурирует TextView, похоже ты без сапортной либы пытаешься что-то новое в xml сделать. Посмотреть версии и прошики, сохранять кастомные ключики типа емэйла или userId (если есть) в крашлитику, возможно что бы связаться с юзером.
Добро пожаловать в прекрасный мир андроида.
Есть ли смысл вкатываться с нуля для долгосрочной перспективы?
Уже нету.
>вкатываться с нуля для долгосрочной перспективы?
Да. А что? Все равно не вкатишься, если будешь руководствоваться такими суждениями.
Привет, можешь дать телегу если ещё чекаешь тред, лол? Помню твой тред на б, хотелось бы пообщаться, вкатываюсь во все это.
>использовать логи для дебага полохо?
Когда ты войдешь в андройд дебаг, логи писаться не будут. Хуй знает как на других платформах, т.к. сижу онли на андройде.
Что? У меня все пишется вроде.
>>273118
Тут я бы больше поставил акцент на 'printf' - вообще никакое не решение, ни тебе тегов, ни контекста, ни в файл записать, без буфера и тд.
Ну и вообще ты заебешься собирать проект после добавления каждой строчки логов.
чем негодила светлая тема - не понимаю, раньше сидел на темной, сейчас на светлой, биг дил бля
>Что? У меня все пишется вроде.
Application terminated ставится. Ало. В ране ничего не найдешь.
Для дебага же, а не в дебаге.
AVD пробовал обновить, безрезультатно
Лол
Обновить как? удалить и поставить новый?
Никогда с этим не сталкивался, я бы еще переустановил андройд, если не помогает. В настройках еще посмотри, когда создаешь авд, мб что там есть.
инб4 неосилятор
>каждый раз там что-то не работает что-то разное
Берешь и идешь по шагам. Проговариваешь - так эта фоточка идет сюда, здесь сохраняю - а здесь получаю пизды.
>Может, кто-нибудь знает пример получше?
Все примеры идут из доков или же от умных людей, которые набили шишку. Но они как правило чсвшные. Можешь этот брать. Или код скинуть сюда, хотя бы в пастербине.
Кстати, я тут очень занят, как все сделаешь - проверь работу не с фрагментом, а с dialog fragment. Будет ли туда эта параша передаваться или нет?
>> 2018
>> фрагменты
Тебе что-то не нравится? Я тоже могу пиздеть, 2018 - переворот активити. 2018 - дохуя либ, которые гугол рекомендует, чтобы покрыть костыли. Андройд вообще параша, что тут говорить. До 6.0 используется интент сервис, с 6.0 джоб, и то, он ПРОСТО так крашится с НПЕ в любом случае. с 8.0 work manager и прочая хуйня.
С октября месяца чтобы релизнуть апп нужно поставить мин сдк что-то там 24 что ли или что-то вроде того.
Вышел из приложения, постоял 20 минут - зашел - активити убито и тупо все данные улетели. Ничего не работает нормально.
Я тоже могу расписывать, а не решать проблемы, так что соси хуй. Я не жалуюсь на фрагментах, я же не делаю одно активити, если бы делал, то взял бы цицероне.
640x400, 0:14
Да я вроде все по гайду делаю, но бага очень маленькая и из-за этого не поддается дебаггингу. Дело в том, что анимация первого элемента всегда "мерцает" (видеорилейтед), хотя в примере все нормально работает.
Вот ссылки на пастебин:
GridFragment - https://pastebin.com/kvxtQEig
RecyclerAdapter - https://pastebin.com/AhxXdpL0
ImagePagerFragment - https://pastebin.com/UiMwJ80Z
ImageFragment - https://pastebin.com/2Ad1FDbB
>первого элемента всегда "мерцает" (видеорилейтед),
Попробуй android profiler. Мне кажется это из-за инджекта андройда.
Ну инжект в аттаче, он вообще лишь раз вызывается. И, кстати, я для DI не только даггер использовал, и все равно результат тот же. Но окей, попробую ручками все заинжектить, спасибо за идею.
А насчет профайлера - что конкретно профайлить?
Тебе не влом каждый раз писать AndroidSupportInjection? Можно же DaggerFragment использовать.
>Так-то мне кажется, тут где-то собака зарыта в маппинге элементов,
Ну я тоже так думаю. Посмотри момент в коде, как закрывается, у тебя image view исчезает.
Ебаный ЧТО
Бага пофиксилась после того, как я задал ресайклеру атрибут paddingStart. Пиздец. Сач плезантли девелопинг, со мач документед.
>Бага пофиксилась после того, как я задал ресайклеру атрибут paddingStart. Пиздец
Что? На что это повлияло? Как атрибут в разметке может помочь, кек.
Лол, не пытайся использовать падинги для красоты в ресайклере. Маржины в элементах иногда можно, но лучше конечно ItemAnimator, хотя у вот как-то повторял айсовский механизм инсетов для ресайклера и наблюдал крайне странное поведение из-за которого пришлось частично вернуться к маржинам в элементах.
>>273896
Возможно из-за того что анимация по координатам не сходится.
Держи. https://pastebin.com/g43KQXZk
Паддинги вынес в димены, чтобы глаза не мозолили (задал им 1dp).
>>273899
Так я и не пытаюсь, у меня просто анимация из-за этого не работала. Да и вообще, для красоты можно использовать. ItemAnimator и ItemDecoration.
> ItemDecorator
Срань, начинаются анальные боли, когда тебе нужный разный отступ в зависимости от предыдущего или следующего элемента. Например, от хедера тебе отступ не нужен, а от другого такого же элемента нужен. Если у тебя хедер ремувится, то тебе нужно явно вызывать notifyItemChanged элементу, у которого динамический отступ, иначе он не пересчитается.
Оо, да ты шаришь. Работаешь где-то?
У меня там была какая-то хрень что отступы заданные через ItemDecorator влияли на внутренние констрейнты во вьюхе холдера.
Ну вообще разве DiffUtil не решит той проблемы что ты указал?
Нет, там же у элемента за хедером не вызовется notifyChanged. Он же не поменялся, а просто хедер был удален, кроме notifyRemoved ничего не будет.
Я сейчас в итоге необходимость отступа формирую на уровне презентера и пишу в поле элемента списка. А сам отступ паддингом или марджином элемента, в зависимости от внешнего вида. Тогда это поле учитывается в диффутилах и все нормально нотифаится. ItemDecorator соотвественно не использую.
Еще вспомнил кейс, полный анальной боли.
Берем обычный гридлейаутменеджер. По материал сетке, там слева 4 дп, между элменетами 4 дп и справа 4 дп. В итоге в getItemOffsets можно это нормально просчитать через view.layoutParams as GridLayoutManager.LayoutParams, благо там эта информация есть. В итоге пихаем такие самому левому лево 4дп право 2дп, центральные 2дп, самый правый 2пд и 4 дп.
Удаляем элемент из списка, делаем notifyItemRemoved, а у остальных отступы нихуя не пересчитались, и все едет по пизде.
Андройд - это как веб. Значит, ты макака и опущенец.
Контент при скролинге будет преждевременно уходить за падинг
Анчоусы, недавно вкатился в офисную разработку под ведро. До этого ток для себя писал
И это какойто ПИЗДЕЦ, блять, такое говно, просто яебал
Джун тащит в проект любую бяку, какую найдет и даже не может нормально реализовать. Уже втащил MVP, DAGGER, RX и нихуя из этого нормально не сделано. Полное говно.
>Уже втащил MVP, DAGGER, RX и нихуя из этого нормально не сделано. Полное говно.
Ну ты же сам джун, если недавно вкатился. И тащемпа у всех по говнястому реализовано. Там же заказчики сроками ебут. Вот у меня на работе - я сам и дизайн делаю и сам пишу в одиночестве.
>Ну ты же сам джун, если недавно вкатился
Я не с нуля вкатился
Ну так если бы не было MVP, Daggerа и RX было бы намного чище
А если вообще всё прилодение в одном классе написать, то была бы 100% чистота. Но ебаный андроед не позволяет этого сделать.
Ну я так и сделал в итоге в кейсе с гридом. Но осадочек остался.
Можно в одном файле.
>если бы не было MVP, Daggerа и RX было бы намного чище
ПХАХАХАХХА. Я знаю как чище. Берешь. отрубаешь orientation в каждом активити. Пишешь все инстансы ретрофита хуита в Апп, а остальное говно в активити. Это как раз называется у даунов МВС. Вот тогда ЧИЩЕ.
Блять, моя жопа в огне. Теперь еще и все импорты отвалились, я ебал так жить. Пойду на 3.1 откачусь
>Теперь еще и все импорты отвалились, я ебал так жить.
рофлишь что ли? Все нормально работает. Хотя поначалу когда я вкатывался тоже горел со всей этой хуйни.
Контекст прекрасно абстрагируется от бизнес логики.
public View getView(int position, View convertView, ViewGroup parent)
всяких адаптеров?
Имеет ли смысл вкатываться в андроид ТОЛЬКО ради фриланса? Не загнется ли завтра тема?
Посмотри реализацию FragmentPagerAdapter.
Можно, но не нужно. Почитай про ViewHolder pattern и используй ресайклер. А для общения с контейнером ресайклера используй интерфейсы.
если все же хочешь упороться - делай через пустой FrameLayout, в который пихаешь фрагмент через транзакцию
Выучи - расскажешь. Я видел таски для андройда на фрилансе. Можно все так-то. Только защеку схватишь.
И сколько нужно вкатываться в среднем, чтобы можно было фрилансить хотя бы на 500 баксов в месяц?
https://material.io/design/components/app-bars-bottom.html#behavior
Если кто-то делал - поделитесь плз.
BottomDialogFragment имеет конченную анимацию (или можно как-то сделать плавно?)
BottomSheetBehavior - впринципе можно использовать, но придется его перепиливать, тк задуман он для другого.
На медиума есть серия из трёх статьей по нему. Плюс на гитхабе есть примеры.
> BottomSheetBehavior - впринципе можно использовать, но придется его перепиливать, тк задуман он для другого.
С чего ты взял?
Да и у фрагмента фиксится анимация, нужно просто сделать свой диалог фрагмент, выключить ему анимацию, и боттомшит, который там используется инициализировать с состоянием хидден, а в онстарте перевести в экспандед.
Что вообще в ведре по отладке чужих апк? Есть вообще нормальные дебаггеры, чтоб я мог как на винде ида про/x64dbg взять и поковырять что хочу?
Frida вроде.
ну каждому свое же, мне хватит 500
Есть штука которая автоматически скидывает логи, без окон. Называется crashlytics
ACRA вроде так умеет, но зачем тебе это? Используй крашлитику и не еби мозги.
>Зачем вы пишите что то? Фуксия скоро убьет андроид и оставит вас без работы
Зачем ты живешь вообще? Человек существует около 70 лет на этой земле и дальше растворяется на атомы, а там и на более мелкие частицы. Зачем ты каждый раз встаешь по утрам? Зачем ты вообще что-то делаешь, если скоро сдохнешь?
Перекатимся туда, делов то.
Вот поэтому рашка и в говне...
>Ты опять за свое? Котлин же экономит кучу времени.
Пока ты учишь котлин, дарт встает на ноги и даст пососать уже через год-два. Гугол бросит всех разрабов, тогда андройд рухнет и очень много людей пострадает от этой хуйни.
>Если б разобрался, не спрашивал бы.
Просто так спросил, чего плеваться-то. Я уже и сам понял. Через полгода пора бы выучить котлин и на корутины пересесть.
Зачем rx когда есть корутины?
> Через полгода пора бы выучить котлин и на корутины пересесть
Посмотрел видосик про курутины от е-легиона. Просто пиздец, нахуй так жить?
Ну да, можно некоторые вещи писать в императивном стиле, только при этом ты теряешь всю мощь рх, даже блять банальный дебаунс нужно самому велосипедить. Есть рх, дефакто стандарт индустрии, нет, не хотим, хотим хуйню.
> только при этом ты теряешь всю мощь рх,
А в чем эта мощь? Если ты обволакиваешь целые проекты реактивщиной, то нечего и переживать. Люди, которые втягивают такую либу ради гет пост запросов - ну такое себе.
Емнип, в метод show() можно передать либо саппортФрагментМенеджер, либо саму транзакцию. Можешь попробовать запихнуть туда транзакцию с транзишном и посмотреть, что получится. Кстати, если получится, то отпиши итт, мне интересно, но проверить времени нет.
>можно передать либо саппортФрагментМенеджер
Нет, я пробовал. Привязывал к диалог фрагменту setSharedElementEnterTransition, после всех аниманий вызываю show и передают туда тракзакцию свою. В итоге ничего не крашится, но диалог показывается как обычный диалог без всяких пистелок свистелок, который были добавлены в транзакцию.
>Значит сделай обычной фрагмент.
Тогда как мне объединить в viewPager методы addPagerChangeListener и onTouchListener в view Pager? Сейчас думаю, что нужно перелистывание реализовать в onTouch только хуй знает как это делать пока.
А нет, это я понял. Меня больше интересует, можно ли fragment сделать transparent? Диалог конечно же можно. Там просто getDialog.getWindow устанавливается бекграунд и рутовый леяут устанавливается в определенную альфу. Пытался такое провернуть с фрагментом - не получилось.
> fragment сделать transparent
Конечно можно, рутовой вьюхе фрагмента не задавай фон и все будет ок.
>Конечно можно, рутовой вьюхе фрагмента не задавай фон и все будет ок.
Думаю это не подойдет. Я уже нашел ответ.
Как сделать обратно? Тыкать шорткаты на клаве не предлагать.
Да, чертовски важны. Особенно, когда накодил хуйню, и понял это только после того, как уже переписал кусочек. А переписывать его по памяти лень или чревато багами.
Или переписал, и засомневался, не лучше ли было оставить старое?
Впрочем, я уже вернул как было. Хз, зачем гугломразям было их убирать.
Погоди, это ctrl + z что ли и ctrl + shift + z? Возвращая старое. Алсо, можешь тогда подсказать гле это, я тоже посмотрю.
Да и банальнейший пример - выделил кусочек в порыве страсти, он оказался большим чем нужно примерно на пол класса, и был нечаянно удален. Делать мне вот больше нехер, выплясывать на клаве шорткаты, чтобы вернуть все на место. Хочу давать пальцам хоть иногда отдых, а не воспоминать пердолево в cmd.
Предлагаешь лезть в менюшку за этим, когда раньше было прям на тулбаре?
Новые хромотренды ебучих дизайнеров, прятать все в 100500 подменюшек, чтобы все охуели, как могут.
А возвращается так
ПКМ на тулбаре - Customize Menus - Main Toolbar - Add After - Main Menu - Edit - Undo/Redo
Нажать две кнопки на клаве или одну на мышке? Да еще и в зависимости от того, Undo или Redo - нужно жать две или три кнопки на клаве для совершения, в общем-то, идентичных действий.
Интерфейс не один и тот же выходит ведь, контракт нарушен.
Двигать ебаную мыш, в поисках кнопки через весь монитор, вместо того, чтобы быстро нажать на клаве 2 кнопки, когда рука уже лежит на клаве - страдай, хуле
ctrl z
Попытался просто через setOnLongClickListener сделать, но не взлетело. Никак не гуглится способ вызвать контекстное меню без override onCreateContextMenu()
Щито делать?
Ну значит форкнуть и доделать в кишках.
Может для этого нужно использовать звук? Тип один телефон издаёт звук и если другой телефон его услышит, то тип близко находится. Или "выцепить" этот звук из окружающего шума не реально?
По блютузу не выйдет. Мощность сигнала сильно варьируется от устройства к устройства и по мимо этого есть ещё куча параметров, которые влияют на мощность сигнала.
> По блютузу не выйдет.
Nfc - не блютуз, почитай про него.
>Мощность сигнала сильно варьируется от устройства к устройства и по мимо этого есть ещё куча параметров, которые влияют на мощность сигнала.
Ну а это вообще пушка. Знаешь ответ на вопрос, сколько требуется программистов, чтобы вкрутить лампочку в люстру?
> Знаешь ответ на вопрос, сколько требуется программистов, чтобы вкрутить лампочку в люстру?
Ноль, т.к. нужен один офис-менеджер.
>>277029
НФЦ же до 20 см, так и нет поддержки большинства девайсов, особенно любимыми в нашей стране ксяоми. Хотя задача у него довольно специфичная, может там под заказ мобилки будут.
Ну так и я о том же, если проблема аппаратная, то решает ее не программист. Ты говоришь, что сделал обнаружение устройств с использованием технологии, разразработанной именно для этой задачи, и тебя не ебет, что дальше. Да и вообще, что за хуйня, искать устройства рядом по звуку? Это как будто хранить 10к записей в SharedPreferences вместо SQLite.
А если менеджеры начнут доебываться что устройства с нфц ДОРАХА то скажи им чтобы попробовали абак вместо экселя, хуле, функционал схожий.
>>277005
https://habr.com/post/347954/
Ну или вот амазоновская кнопка (ты покупаешь кнопку для порошка и когда нажимаешь ее возле телефона она связывается с твоим аккаунтом и регается в вайфае) тоже по звуку конектится к девайсу.
Хорошо, прочитаю про Nfc, но 20 см - это слишком мало для моей задачи.
>>277161
>НФЦ же до 20 см, так и нет поддержки большинства девайсов, особенно любимыми в нашей стране ксяоми. Хотя задача у него довольно специфичная, может там под заказ мобилки будут.
Нет, мобилки у меня абсолютно обычных людей. У меня в планах разработать игру, для которой мне требуется определить, что два человека находятся очень близко.
>>277218
Читал эту статью. Их проект, насколько я знаю, сейчас закрытый и его можно использовать только на коммерческой основе. Мой проект бесплатный. Кроме того, их метод обнаруживает в радиусе 5 метров, а мне нужно сделать проверку в радиусе 50-100см.
Про кнопку в первый раз слышу. Будет ли она работать при окружающем шуме? Моё приложение должно работать в торговом центре, где, обычно, стоит гул.
>Хорошо, прочитаю про Nfc
Я сейчас работаю с нфс, и сразу могу сказать, что это не то, что нужно.
> У меня в планах разработать игру
Особенно для этой параши.
> что два человека находятся очень близко.
Для этого существует интернет или блютуз, недоразвитый ты наш малыш.
>Про кнопку в первый раз слышу. Будет ли она работать при окружающем шуме? Моё приложение должно работать в торговом центре, где, обычно, стоит гул.
Хуй знает, на ведре она работала через nfc/блютус, а через звук на iOS, ну мы впринципе были в небольшой комнате, обычный разговор выдержала. Там же звук совсем на других частотах, ей скорее какие-нибудь траснформаторы бы помешали наверное.
Есть какая то статья, в которой расписано, как правильно подловить звук, который издаёт одно устройство.
Вряд ли, я не гуглил, не думаю что слишком сложно, нужно записывать семплы микрофоном с каким-то интервалом который раз в десять (пусть с гаком) больше длины сигнала. И так пару раз послушать. Потом сравнить с эталоном.
>>277444
Ну хз, вроде как аудитрек достаточно низкоуровневый, может даже в нативщину не придется лезть, в крайнем случае можно его скачивать/бандлить с девайсом. Вон на телеках/рекламных стендах всяких прошаренных во время рекламы звуки проигрывают, а сдкашки на телефонах их ловят.
>Вряд ли, я не гуглил, не думаю что слишком сложно, нужно записывать семплы микрофоном с каким-то интервалом который раз в десять (пусть с гаком) больше длины сигнала. И так пару раз послушать. Потом сравнить с эталоном.
До этого я и так догадался. Проблема в том, как выделить звук на фоне окружающего шума.
>>277479
>Вон на телеках/рекламных стендах всяких прошаренных во время рекламы звуки проигрывают, а сдкашки на телефонах их ловят.
Шо? Чёт первый раз про такое слышу
Ты занимаешься хуйней. Игры не стреляют, либо ты вкатываешься, либо дрочишь какую-нибудь парашу. Более чем уверен, что ты даже писать ничего не начинал.
Я тебе сразу говорю не стоит, поздно или рано ты это поймёшь. Занимайся более нормальными вещами, вон, кодить попробуй.
Есть код в активити сразу после setContentView():
>Perdol.start() //да, без аргументов, без передачи активити/контекста
Задача: вызовом этого статического метода start() детектить эвенты тапов на view И получать поля этих view (например, текст, если это button или просто id).
Как бы вы это сделали?
>вызовом этого статического метода start() детектить эвенты тапов на view
Слушатель что ли? Так это, разные способы есть.
Мне не понятно, для чего тебе получать с каждого события событие по тапу. Зачем тебе это все?
Нужно получать каждое событие тапа (или хотя бы ACTION_DOWN). Это нужно например чтобы знать, куда пользователь кликает.
Но нужно сделать это не просто ручным навешиванием листнеров на все view, а единственным вызовом в активити метода
>Perdol.start()
внутри которого происходит аркейн-магия, которая позволяет видеть (в logcat'e, например) все тапы и инфу о view, на которую тапнули.
Никак.
Ты же у мамки хакир и не научился нормально работать со smali, чтобы инжектить что-то кроме статических вызовов без параметров? Иначе твоя задача вообще не имеет смысла в такой формулировке.
Ничего инжектить не требуется, требуется вызвать в своём коде Perdol.start() и начать видеть все тапы (или хотя бы часть?).
Сейчас не важно, имеет ли смысл задача, сейчас важен способ её выполнения. И то что это сделать возможно - инфа 100%, вопрос КАК
Можно через content provider application ещё получать, это если ты в манифест его прописать можешь
Если в метод start() нельзя ничего передавать, то его пердоль нужно оформить синглтончиком со ссылкой на контекст приложения, а затем с помощью контекста вешать лисенеры на все вьюхи. Если передавать можно, то передавай контекст или, лучше, рутовый леяут, затем получай список детей и рекурсивно по ним проходись, если ребенок - вьюгруппа.
оформить синглтончиком со ссылкой на контекст
В том-то и суть, что нельзя ссылку на контекст ему давать. Должен быть исключительно голый Perdol.start() и ни намёка на передачу параметров.
Хитрые еврейские ребята из appsee так сделали, чем лишили меня сна. Мало того, что у них все тапы, свайпы по всем вьюшкам детектятся одной единстивенной(!) строчкой кода Appsee.start(), так они ещё и видео и скриншоты приложения делают. А исходников нет, они всё обфусцировали вжопень.
И единственное до чего я дошёл, так это до анальных контузий с MainLooper'ом и рефлексией, которой, отсеивая тонны сообщений лупера, можно поймать такие сообщения, которые содержут в себе ссылки (естественно непрямые, там тоже попердолиться рефлексией пришлось) на активити, которая породила это сообщение.
Но это очень нездровая ситуация, хотелось бы верить, что хитрые евреи сделали что-то по-проще.
Прыгай от com.appsee.bb класса. Потыкай туда брейкпоинты.
Там как минимум работа с определением нажатой вьюхи и выковыриванием атрибутов из нее.
Охуенно, спасибо. Они, оказывается, вешали Window.Callback, а не на каждую вью листенер. Но остаётся вопрос, как именно они получили этот window из статического класса без ссылок на контекст.
Есть ли смысл выкатывать подобное говно в маркет? Или получу 0 скачиваний и буду сидеть грустный?
Можно ли завести несколько аккаунтов разработчика? Один под откровенное говно, другой под продукты за которые не стыдно.
>несколько аккаунтов разработчика
Будешь за них платить - хоть сотню. А так да, удивляет обилия говна, за которое даже платят.
ContentProvider
Так.
Ваня, опять ты вылез, сукин сын. А ну полезай назад!
> то что всё же лучше учить начинающему разработчику?
Что хочешь то и учи. Реакт никогда не взлетит, кто бы что не говорил. На флуттер смотреть еще рано, пусть еще 2 года пройдет и посмотрим. Еще годик два можно вкатываться в андройд, а дальше нельзя.
+15
>Ещё нужно чтобы была возможность скомпоновать несколько таких результатов в один
rx java zip
>типа как settle в jdeferred или Promise.all в жс.
Что это такое? Дждеферед, промисе жс? Ты из макакинга сюда подался?
часов 80, моя ставка 30$/hr
Сказал бы drawer. Я б сразу понял.
Шторкой всегда назыали то что сверху (с нотификациями), впервые слышу что бы НАВИГАЦИОННУЮ ПАНЕЛЬ называли шторкой.
Из-за выхода фуксии? Тогда разве не стоит всерьёз заняться flutter потому что в фуксии dart будет активно юзаться?
>Тогда разве не стоит всерьёз заняться flutter
Если бы мне было 12 лет я бы занялся, в чем проблема? 5 лет это очень долго, даже Вартон не занимался дартом. А мне уж и тем более это нахуй не сдалось. Вон умеешь клепать на андройде и иосе - и норм. Если андройд закроется - просто перекатишься в иос и потом подучишь дарт (если это конечно же будет очень важно) и все.
Кстати всегда хотел для себя игрушку, рисовать умею. Если я хочу визуальную новеллу бахнуть на чем лучше то делать и проще?
Если знаешь только джаву, то наверное libGDX, но я сам ноль, лучше погугли
Не будет, не думаю что kotlin-native успеет и не думаю что гугл будет добавлять jvm в дистрибутив как бы весь поинт как раз слезть с jvm
И даже если kotlin-native успеет, то он будет ограничен своим текущим синтаксисом, создаваемым по сути для jvm и IDE.
Что выглядит все больше как фикс-джавы, чем полноценный native язык.
Другая проблема, которая в корне зарешает, это то, как вообще обучать народ котлину, если предварительно человека надо вкатить в джаву, в его инфраструктуру и прочее - это мега оверхед
Я бы ставки делал на js, может даже dart, в край ts.
Я бы вообще все заняшил на питоне, так как для дрочки на UI и с десяток строк для CRUD, строгой типизации хватит
Но не скрою, поддув от котлина сильный, даже народ сердечки рисует что конечно пиздец и вызывает только испанский стыд, но заливают его хорошо что лично у меня вызывает больше остороженность к хайпу
Что вообще котлинконф годного принес в этом году? На радио-т что-то ржали про анонс целой веб-странички, а реально какие-то движения есть?
Что пробовал сделать и почему мне нужно реализовать первый кейс: когда в onPause выставляю значение переменной play = false, а при возврате в активное состояние в onResume true, то при повороте экрана идет небольшая задержка и звук приостанавливается, пока повторно не вызовется метод onResume.
14
>вон дауны котлин учат
Зачем учить котлин, если до этого писал на джаве, а тем более на 8 с ее элементами ФП? 400 страничной книги от разрабов языка хватает, чтобы вкатиться.
>Фуксия скоро убьет андроид
Так скоро это когда? Мне 3 года сидеть на жопе и ждать ее релиза, вместо того, чтобы перекатиться с андроида? Ты дурак?
Причем тут флаттер, флаттер это второсортный фреймворк для ведра и айоси. Или под эту вашу фуксию будет тот же флаттер?
Есть разница между конкретно флаттер и дарт.
На PhoneGap тоже пишут. Дальше то че?
Флаттер будет основным фреймворком новой ОС. Попробуй сложить "2+2" в своей головушке
Новая ОС может и не взлететь, а Андроид так просто не уйдет - всякие самсунги и хуявеи так просто свою дойную корову на колбасу не пустят и вполне могут продолжить разработку. А вообще, жс всех переживет, конечно.
Спасибо, сделал мой день.
Абсолютно все туториалы/примеры/документация рассказывают, как прилепить на экран здоровенную конскую ебанину по типу той, что слева на пикрелейтед. Она мне нахуй не упёрлась, от неё мне нужна только маленькая кнопочка.
Короче, нужно сделать как справа. Как это делается лучше всего?
Делать тулбар прозрачным нельзя - мне нужно, чтобы элементы списка оставались кликабельными и не перекрывались тулбаром. Плюс мне нужно, чтобы иконка была на фоне кружочка, а не висела в воздухе просто так.
Делать кнопку через FloatingActionButton нельзя - гайды по материал дизайну советуют помещать только одну такую кнопку на экран (а одна такая кнопка у меня уже есть, в правом нижнем углу).
Какие ещё варианты есть?
>Какие ещё варианты есть?
Сделать простой баттон и впихнуть ему в background shape? Зачем столько расписывать.
Ну а почему бы и нет, просто сам дашь ей позицию в лэйауте.
т.к. аудитория снг, то в районе 1$, с англоязычной версией ~5-6$ (но там показов намного меньше)
у самого то как успехи?
>Погоди, и она сможет просто вот так висеть где нужно?
Пора бы выучить матчать расположения вьюшек на экране.
Не повторяйте мою ошибку, учите джаву или котлин.
Но не под старые устройства.
Как-то решил вкатиться в хаскель, но гопники с улицы меня избили, назвали борщехлебом и заставили писать все на php
>Не понял что тут пруфать.
То, что пиздишь пруфай. Кинь мне свой гитхаб с нормальным приложением на флаттере, иначе тут и нечего говорить
Нужен такой Observable который при каждом следующем запросе на эмит либо возвращает уже существующий успешный результат запроса, либо делает запрос, запоминает его результат (успех или ошибка) и пробрасывает дальше.
То есть состояния такие:
initial (I) - начально состояние
error (E) - была ошибка, придется провести запрос еще раз
success (S) - збс, запрос завершился успешно, впредь всегдва возвращаем только это значение.
Я в принципе вижу как это можно сделать на Observable::generate, но ведь там внутри generate нужно все синхронно провести, а я хочу воспользоваться обсерваблом из ретрофита.
Котлин, сейчас, твой
Для начала давай определимся что такое нормальное приложение. Делал например приложение с аудиокнигами - наебался всласть с плеером. пофиксить никак, на джаве же всё блять. Прикрутил туда фаербейз, какую-то анимацию, адмоб. Короче пытался скил немного прокачать. Делал проекты по заказам от знакомых - простые контентные, где-то json спарсить, где-то прикрутить формы. Короче ничего сверхъестественного, но обратного я и не утверждал.
Я ж для себя приложение пишу, а тонкости осваиваю по необходимости.
В последний раз писал в 2016, а до этого в 2014. Много поменялось с тех пор.
Добавляешь в макет свою кнопку, присваиваешь ей висабилити. И по условию проверки показывается у нас тулбар или нет меняешь ее видимость.
>В последний раз писал в 2016, а до этого в 2014.
Земля тебе пухом. За 4 года люди становятся мидлами как минимум.
А я только допиливаю аппку, готовлюсь иметь 1 показ в месяц.
Если твое приложение выстрелит как angry birds, то да.
Иначе даже 25$ за аккаунт разработчика не окупятся.
Сколько раз говорить одно и тоже. Если ты разрабатываешь все что угодно под андройд - ты подписываешься на бесплатность. Сколько раз еще можно это говорить? Все андройдеры бомжи, не имеющие деньги. Бомжоящере. Бомжы!
Весь доход идет с иос и только с него, ибо там привыкли жрать говно!
>>280506
Просто нужно понять, что разрабатывать приложения под андроид - это один скилл.
А создавать прибыльные продукты - это совершенно другой навык.
И они никак не связаны. Умеешь делать первое - найди работу и спокойно пиши код за деньги, не парься над продвижением, законами, бухгалтерией, налогами.
Умеешь делать второе - найми разработчика и не еби никому мозг.
Ну вот насколько реальный сценарий: допустим я пишу оч удобное приложения для будильника, или погоды, похуй. Естественно я ориантируюсь на западный рынок, но в моем приложении будет кнопочка, где я расписал пасту, которая вызывает скудную слезу у клиентов и они могут придонатить мне 1-5 доллара-евро за бесплатность приложения, такое имеет право на жизнь?
>кнопочка, где я расписал пасту, которая вызывает скудную слезу у клиентов и они могут придонатить мне 1-5 доллара-евро за бесплатность приложения
Ты 1-5 долларов и получишь. Суммарно.
Лучше воткнуть рекламу и/или премиум версию замутить и не изобретать велосипед.
>я пишу оч удобное приложения для будильника, или погоды, похуй.
За время написания и отладки "оч удобного будильника" можно разгрузкой вагонов заработать в 50 больше чем ты поднимешь с маркета.
А с учетом что будильников или погодных виджетов там миллионы, то ты либо выкладываешься в продвижение и уходишь в минуса, либо имеешь 15 скачиваний в неделю.
Даже конченный дебил клепает простейшие игры для дошкольников/офисного планктона и зарабатывает 500$/наносек.
>Даже конченный дебил клепает простейшие игры для дошкольников/офисного планктона и зарабатывает 500$/наносек.
На последнем Гугел ИО говорили, что только 30% всех игр в маркете приносят прибыль.
70% лежит мертвым грузом.
Не, а зачем мне вообще делать это профессионально?
Мне понадобился инструмент для решения определённых задач и я решил его написать. То же самое происходило и в 2016, и в 2014. В перерывах между этими этапами мне никакие инструменты нужны не были. Проблемы?
Это действительно открывается новый фрагмент каждый раз? В таком случае как наладить общение между searchView и фрагментом (по вводу запроса фильтровать suggestions)? Или это кастомная вьюха и не стоит вскрывать эту тему?
Мне вообще непонятен весь контекст.
>Это действительно открывается новый фрагмент каждый раз?
Поставь логи в onCreateView or onAttach и узнаешь.
Щас бы файлы в бд пихать, когда есть Cloud Storage.
Ну да, как ты и говорил, лучше не вскрывать эту тему.
Cкладывается ощущение, что шапка написана джава-ублюдками. Почему то про ламповые PhoneGap и Angular, на которых делать приложение намного проще и быстрее не упоминаются вообще.
хорошая попытка
> из вэба
Твой мозг уже был подвергнут необратимым изменениям. Можно откуда-то перекатиться в веб, но не наоборот.
>Посоны, сколько в среднем по времени потребуется перекатиться из вэба в андройд?
3 месяца по 8 часов в день.
>>280974
>Почему то про ламповые PhoneGap и Angular, на которых делать приложение намного проще и быстрее не упоминаются вообще.
Первый раз слышу. А кто-то еще разрабатывает приложения исключая андройд студию? Земля вам пухом.
Ебать. Это по 2 часа 12 месяцев. По 3 часа - 9.
>Первый раз слышу
Если знаком немного с html и css, то ангуляр и кордова (фонгап) самое то. И не надо ебацца с жабой.
Ну если у жабо макаки руки из жопы растут то да)
У жс господ все отлично работает без всяких тормозов.
P.S. Писать планирую на Котлине.
Я имею ввиду, идею для проекта, документацию я уж сам нагуглю.
настолько аутист, что даже выразить свои мысли не могу
https://pastebin.com/DDmRy3hr - в чем может быть проблема?
Пытался запустить эмулятор Pixel 2 API 28 через Hardware.
Остальные устройства на которых можно выставить Software эмуляцию работают нормально и без каких-либо проблем.
Процессор: i7 3770k
В биосе включена виртуализация
На команду kmv-ok выдает:
INFO: /dev/kvm exists
KVM acceleration can be used
т.е все нормально. Добавил своего пользователя в группу kvm (а также в еще какую-то, не помню), как просил установщик. Для установки kvm вводил вот такую команду:
$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils ia32-libs-multiarch
Event Log выдает вот это - https://pastebin.com/CktVyWX9
примеры хорошего приложения на js в студию!
Кто разбирался с правилами гуглплея, есть какой-нибудь краткий вариант того что можно а что нельзя?
Ясен хуй нельзя прон и контент нарушающий авторские права. А что ещё? Что говорит про азартные игры? А про лотереи?
Решил вчера поиграться с альфой sqldelight, еле подключил, по ходу дела поставил влагин котлина с rc версией.
Сегодня утром отвалилась половина зависимостей (в основном androidx, но тимбер и rxjava2 тоже, наверняка еще много другого не заметил), студия в упор подчеркивате их красным, мол от них только R файл есть, но собирается все нормально, удалил студию, постарался все от нее удалить - хуй там после переустановки воз и ныне там.
Попробую пока в идее поработать, может кто сталкивался с похожей проблемой?
Эээ, братиш, ты не знаешь что весь современный 64-битный интол это amd64 архитектура, или ты о чем?
Ну я сам этого не понял как бы
Ну я конечно в ваш вопрос не вникал, я мимо крокодил, но будь так любезен пояснить, почему я дурачок и что тебе не понравилось в сочитании amd64+i7?
На самом деле х86_64, а амд64 - синоним, но узнал я это из заголовки википедии.
Там о разных вещах идет речь. Я добавил другой плагин к сборке, а не самый основной для ведра, потом убрал, но все похуевилось так что даже переустановка не помогает. Причем после тех же манипуляций в IDEA все норм.
Бамп, проблема все еще не решена. Может ли быть причина в том, что используемая мной видеокарта это GTX 9800 +, которая не поддерживает DirectX 11? Или в этом деле видеокарта вообще не задействуется?
А тебе не кажется что это из за пердолинга с линуксом? Ты чекал на другой оси это дело?
Все нахуй, починил, что-то произошло в идеевских файлах. Когда я скачал проект по новой с гита все стало норм, пиздец.
Давно пользуюсь даггером, но сейчас на одном проекте предыдущая комнада несколько оверинжинирнулась и на каждый фрагмент - компонента с одним модулем, причем все под копирку. Из-за дагера это весьма долго собирается, потому решил глянуть на альтернативы?
Как вижу на первый взгляд koin чисто андроидовсая тема, это meh, но он похоже пиздец простой/легковесный - это +.
Kodein же вроде как везде для котлина сойдет, но какой-то более навороченный, но вроде не навороченней даггера.
Koin это не DI, а Service locator. Больше кода руками писать будешь. Но для мелких проектов - это ок.
Ну на винде я даже боюсь что-либо тестировать, ибо эта хуйня скорее всего еще хуже будет там работать. Но вообще попробую, спасибо что напомнил.
Есть primaryKeys в описании Entity дроченном.
Как прописать autoGenerate в эту хуйню?
Чувствую себя говноедом-хипстером с этими ебучими ORMами, честно говоря. Год уже этому Room, и до сих пор нельзя пользоваться INSERT, ну охуеть вообще
Точнее, мне нужно сгенерировать уникальный айди для сущности.
А primaryKeys мне нужен, чтобы сделать несколько столбцов уникальными (возможности сделать это по-человечески, как в sql query при создании таблицы - я так и не нашел). И вот через аннотацию @PrimaryKey(autoGenerate=true) я могу это сделать, но ВОТ ЭТО ПОВОРОТ - она может быть только одна на сущность. И никак не одновременно с primaryKeys.
2) Как происходит обработка при Hardware эмуляции? Вся нагрузка идет на процессор или какую-то часть на себя берет видеокарта компа? Потому что сейчас чувствую подлагивания возможно из-за того, что видюха у меня GTX 9800+ (512mb), а процессор i7 3770k (и 16gb озу).
3) Как правильно установить кастомное приложение на эмулируемый девайс? Например если мне нужно потестить Samsung Browser на Android 7, в папке девайса лишь лишь img образ sd-карты.
>возможности сделать это по-человечески, как в sql query при создании таблицы - я так и не нашел
Room callbacks гугли.
Дело в дровах, было 1 в 1 такое же на старом радеоне. Все потому что пидоры выпилили старый драйвер в замен опенсорс параши.
Я плохо помню теорию реляционных баз, но ты уверен что то что ты хочешь ей соответствует?
Типа ты хочешь primaryKey не autoIncrement, а какой-то свой, и еще одно поле для обеспечения какой-то дополнительной уникальности? Но ведь у тебя есть primaryKey, зачем еще что-то?
Приведи пример может из пары таблиц.
>>282493
В 2.18 завезли инкрементальную сборку: https://twitter.com/gradle/status/1053387932260679680?s=12, попробуйте.
Ну и dagger более продвинутая штука, думаю. Покрывает больше кейсов, которые могут возникнуть, более стабилен. Зачем менять проверенную тему на хайповую?
>>281596
.idea в проекте попробуй ебнуть
>>282911
IntentService это древняя хуйня. По сути сервис который позволяет исполнять задачи в параллельном потоке. Хз зачем он может понадобиться в текущих реалиях, когда твои сервисы убивают нахуй по любому чиху ради экономии батарейки.
JobScheduler это не сервис. JobService -- сервис. Доступен с Android 5 и выше Я точно не помню как это выглядит в API, но суть сводится к тому, что твои джобы будут запускаться не сразу как только ты их задал, а тогда система решит что ее стоит запустить. Ты можешь конфигурировать джобу, например так, чтобы она запустилась только когда появится соединеине с интернетом. Или задать максимальное количество времени, на которое ее можно отложить.
WorkManager это какой-то новый суперкостыль для того чтобы удобно запускать таски вне зависимости от версии ведра на которой в данный момент работает приложение. Если это 5+, то может использоваться JobScheduler. Если меньше 5, то, например, AlarmManager.
Из всего этого, думаю, тебе лучше всего использовать WorkManager, даже несмотря на то, что ты можешь поддерживать только девайсы с 5+. Тебе самому удобнее будет. Потому что мало ли что там будет дальше. Если появится новый велосипед, то он скорее всего тоже будет поддержан этим методом и тебе ничего не придется дописывать.
А вообще посмотри в строну корутин или rxjava, если у тебя стоит задача просто запустить поток параллельно и не нужно что-то делать прям в фоне, типа прослушивания музыки, загрузки какой-нибудь хуйни или еще каких-нибудь gps трекеров.
Спасибо большущее, анончик.
Но подскажите, по чему не взлетел QML вообще не слышал чтоб кто-то на нем что либо писал? Покурив и реакт нейтив и флаттер и qml могу сказать, что реакт нейтив выглядит совсем уж костылем. Флаттер относительно не плох, но бесконечно вложенные параметры раздаражают. А вот qml тоже яваскрипт подобный синтаксис, если не хватает его возможностей, можно писать сложные части на c++/qt шустр, билд значительно меньше чем у конкурентов.
Вообще стоит им обманываться? Если мне понравилось с ним работать? Какие по вашему перспективы? И всеже почему никто им не пользуется?
Так с котлином все равно же не будет работать, т.к. капт это отдельная хуйня, не?
> И всеже почему никто им не пользуется?
Итс 2К18 - уже ни кто не пользуется сипипи
> народ присматривается к flutter.
флаттер это мем
> реакт нейтив выглядит совсем уж костылем.
ок
Вот так - ВЫБОРЫ БЕЗ ВЫБОРА!
Внятной инфы не нашел, но в release notes явно указан javac, в твиттере тоже пишут что не будет работать. Походу ты прав
Сначала блядь должен разобраться в jdk, jre, jvm, sdk, mdk, pnh, gradle, maven, huyaven
Потом выпилить всю хуйню из интерфейса которая высрана по всем краям, отключить все лампочки, выделения, подчеркивания, стрелочки
Потом эта хуйня начинает тупить и лагать, когда ты еще даже ничего сделать и разработка на макпуке не представляется возможной
К слову в ios все работает изкоробки, интерфейс упорядочен и никакая хуйня не мозолить глаза, так сильно не тормозит даже большом проекте
>Итс 2К18 - уже ни кто не пользуется сипипи
дак дело в том, что это и не цпп, а некая смесь яваскрипта с цсс, в цпп можно даже не лезть если нет особой нужды
Xcode редкостное говнище. Даже лень объяснять, но может если мне бомбанет сильнее распишу.
Объяснить? максимум оправдаться. У икскода тоже есть косяки, но по сравнению с этой парашей они вообще не заметны. Я просто физически не могу работать за ноутом на котором икскод летает, что тут можно говорить
Что за ноут? У меня древнющий pro late 13. Особых лагов в жетрбейноподелках нет. Икскод конечно тоже не лагает, но устраивает постоянные приколы в духе миграции кода, который уже мигрировали, и от того нельзя мигрировать лол (версии свифта). Иногда хуй знает от чего нет разрешения на файл потому проект билдится но не запускается, "призрачные ошибки" (ее уже исправили но она всеравно светится). Никакующий автокомплит. Недавно еще выловил классный баг, но это навернео компилятор свифта, из-за которого в 4 из 5 случаев один и тот же валидный код не компилился.
Зачем нужен мавен, если уже с грэдлом разобрался?
У меня 13" 2012 ссд и 16гб, хорошо хоть игральный комп есть чтобы поиграться в андроид на максималках. Все, что ты описал кроме автокомплита случается раз в 100лет и то не точно. И чтобы все это ощутить надо еще постараться, а тут на меня сразу кучу говна вылили и думаю дальше будет только интересней.
Не знаю, у меня 8 гб. Призрачные ошибки/варнинги и никакующий автокомплит лично меня уже убивает, и случаются довольно часто.
> у меня 8 гб. Призрачные ошибки/варнинги и никакующий автокомплит лично меня уже убивает,
У меня 8 гб. Все работает идеально. Просто не понимаю как можно жаловаться и на студию, и на хкоде. Хотя хкоде по части хот кейс просто ужасен.
При сборке вообще какую-то ебалу не может загрузить. Что ему надо, где ему почесать, чтобы заработало?
бля, как вы вообще пользуетесь этим говном
Покажи какие репозитории подключены. Возможно там проект говно мамонта и не через гугловский репозиторий подключались, а локально через sdk tools.
Хуйни в buildscript и allprojects:
repositories {
mavenCentral()
google()
jcenter()
// все остальное
}
Какие вообще best practices по обновлению элементов в RecyclerView.
Например, есть плиточка со скачиваемыми элементами: нажимаешь на айтем и начинается скачивание, на элементе показывается процесс в процентах. Есть очевидные notifyItemChanged, но не будет ли нагрузка большая на перерисовку, если дергать часто и разные элементы? Или лучше каким-то хитрым образм во вью холдеры инжектить сущность, которая будет сообщать о изменении прогресса загрузки и ручками обновлять прогресс во вьюшке?
Самый простой вариант и при этом не очень муторный - DiffUtil с changePayload. Можешь руками дергать notifyItemChanged, главное дергать его с пэйлоадом. Когда дергаешь с пэйлоадом другой метод адаптера вызвается и ты можешь не полностью вьюхолдер переделывать, будет норм.
Есть Epoxy, может там чето внутри по-лучше.
Хотя можно и инжектить во вьюхолдер, но он тогда пожирнеет, возможно лучше для в таком случае сделать свой презентер, главное его цеплять в onBind, а onRecycled отцеплять.
>, главное его цеплять в onBind, а onRecycled отцеплять.
ну вот я сейчас так и делаю, но хочется красивее. Наверное буду на
>notifyItemChanged, главное дергать его с пэйлоадом.
переписывать.
Спасибо
Попробуй на своём css наливные элементы UI элементы сделать.
Иду в сосноль через gradlew, там не находит aapt2-proto сука, ну почему?. В репе, где он ищет, внезапно только pom файлик. А ты ж блять, а на мавене jar есть! Как заставить эту gradle-ссанину юзать мавеновский репозиторий? Или любой другой, где нужный стафф есть?
вообще хуею с этой недоинфраструктуры, какая-то ебаная помойка
Раз в год берусь потрогать ведроид и каждый раз какая-нить залупа. Удалил jcenter и посинкалось - а на хрена тогда там вообще несколько реп, если он автоматом не перескакивает на дополнительные?
нихуя непонятно, пропиши в терминале (вкладка внизу рядом с build) "gradlew build" и скинь сюда внятный лог
Да всё, разобрался уже, даже apk получил. Проблема в репе jcenter была - удалил и завертелось.
> Хотя можно и инжектить во вьюхолдер, но он тогда пожирнеет, возможно лучше для в таком случае сделать свой презентер, главное его цеплять в onBind, а onRecycled отцеплять.
Это кусок говна, не надо так делать. Ты потом будешь туда накидывать все больше и больше и охуеешь поддерживать. DiffUtil с пейлоадами идеальный вариант.
На линуксах пердоля больше, на винде запускается однокнопочно. А если у тебя амудя, лучше даже не пытайся эмулятор запустить
Потому что ты ньюфак и не знаешь про мой "invalidate caches and restart". Когда студия тупит - тут же инвалидируешь всё к хуям и ребилдишь проект.
>Failed to allocate a 8 byte allocation with 0 free bytes and 4GB until OOM
>OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available
Как?
А какой тебе стектрейс надо? Это же ООМ, тут профайлить надо
> А если у тебя амудя, лучше даже не пытайся эмулятор запустить
На 10ке же завели недавно через хипер-в вроде.
Да, только RecyclerView.ListAdapter менее гибкий
>>Notice: The Fabric iOS and Android mobile apps will be sunset on November 30, 2018. After this date, you will not be able to log into the apps.
как же я ненавижу гугл, всем сердцем прям, всей душой (но все равно меньше чем apple)
У тебя репорты на почту валятся, тот же самый пуш, что и фабрик дает в приложение. А стактрейсы в нем смотреть я ебал, проще через веб, чтобы сразу если что копипастнуть нормально.
Ну какому мудиле в голову может прийти, что фрагмент Б, который был вызван фрагментом А (например, диалог о добавлении записи в список) - будет привязан к активити, а не к создавшему фрагменту? Какого хуя, чтобы получить результаты диалога - нужно создавать вермишель из хуйни, перекидывать результат по цепочке?
Поэтому и архитектура в виде одной базовой активити и кучи сменяемых фрагментов - это БОЛЬ И УНИЖЕНИЕ.
Не говоря уже о архиуебищном способе инициализации фрагментов через bundle, который ебет все ООП в рот.
Не особо. onAttach и тд все равно будут привязаны к активити.
А вместо использования обратного вызова в строк 5 - нужно нахуярить не меньше 20 с onActivityResult и тем же bundle, в который не все положишь, а тронешь в одном месте - отвалится в другом. Не говоря уже о том, что выглядит это все, как нечитаемое и неявное говно с какими-то непонятными кодами.
Хотя, может, можно будет избежать этой вермишели, если просто дергать корневой фрагмент через getTargetFragment(), приводить к listener, и вызывать его методы напрямую.
> дергать фрагмент через getTargetFragment(), приводить к listener, и вызывать его методы напрямую
Я это и подразумевал.
Вообще сейчас это решается через общую модель, но ты видимо еще до этого не добрался.
А ты через какой менеджер фрагментов его добавлял? Обычный саппортный, или через child. Просто в первом случае так и задумано что он к активити прицепится.
Ну если ты сам не способен в ведроид и не знаешь о разных фрагмент менеджерах, то не выебывайся. Это как танцор, который пиздит на танец, не выучив все па.
>нужно создавать вермишель из хуйни, перекидывать результат по цепочке?
Для этого можно использовать или rx или какой-нибудь bus. Твой гнев не обоснован, школьник. В году так 13-14 была боль и унижение.
Ну возьми и напиши всё с нуля правильно. Займёт это лет 5 и никому нужно не будет.
Сколько уже можно ныть про одно и то же? Да, при разработке было допущено много ошибок, причём до того, как гугл купил ос. Если бы гугл каждый раз ломал совместимость, то ты бы сейчас под андроид не писал, и 70% рынка у него бы не было.
Ну а хуле ты хотел. Андроид это одно большое легаси. И он такой не один. Я не знаю как там на самом деле с JS, но вот >>285094 говорит что все тоже хуево.
Любой старый проект обрастает костылями со временем. Посмотри на какой-нибудь Си с функциями типа "__do_something()", которые так выглядят потому что "_do_something()" и "do_something()" уже deprecated, но легаси код, опять же, никуда не делся.
Сейчас задача разработчика состоит в том числе в том чтобы знать такие костыли и знать как с ними работать и как инкапсулировать все это говно с помощью архитектуры.
Конкретно твой кейс с диалогами мы у себя порешали через лайвдаты. Есть единый метод в BaseFragment, который позволяет показать диалогФрагмент. В нем же происходит подписка на лайвдату, которая лежит в этом диалогФрагменте. Ну и по тычку на "ок" передается эвент, который может в себя включать текст введеный на диалоге/дату из datePicker/любое другое дерьмо.
Никаких проблем с лайфцайклом/утечками и тд нет.
Моя кибертелепатия (гугл) говорит, что у тебя используется TextInputEditText без TextInputLayout.
Может хоть layout свой покажешь?
Ты видишь где исключение генерируется? Это не мой layout, а приблуда от huawei
com.huawei.android.hwcontrol.HwEditor$HwActionPopupWindow.initContentView
Нет, я это дерьмо даже палочкой не трогал, не то что у себя использовал. Это внутри прошики хуйавеной что-то сыпется, но проблема распространенная, у меня в консоли дофига крашей фиксирует от счастливых пользователей девайсов от huawei
Скорее всего, вываливается на лонгтапе EditText внутри TIL. Ты, случаем, TextFieldBoxes не юзаешь?
У меня была похожая проблема, только вываливалась не на хуавее, а на гнусмасах.
Фикс: editText.setOnLongClickListener { !editText.isFocused }
AR-садик. Садишь деревья и растения у себя дома, смотришь, как они растут в реальном времени. Поливаешь их, плоды собираешь, вся хуйня.
Вопрос: насколько сложно это реализовать? AR-приложения ещё никогда не писал. Реально в этом дерьме самому разобраться? И на чём их пишут? На Java?
Я же тебе сказал, игры - берешь Unity.
https://unity3d.com/ru/partners/google/arcore?_ga=2.130877643.534308711.1540722945-1287009715.1540722945
Ты даже нагуглить неудосужился. Вангую, что ничего у тебя и не получится с таким подходом. Иди лучше выпиливайся, няша.
Во-первых, про ARcore я уже читал.
Во-вторых, если бы ты вместо того, что бы выпендриваться, сам бы почитал, что кидаешь, то ты бы заметил, что этот самый ARcore работает на крайне узком круге моделей и, увы, у меня нет под рукой Samsung Galaxy S8. У ARcore рили охуенный функционал, но игру, построенную на нём, смогут запустить два с половиной пользователя.
Есть ещё Vuforia, но она работает онли с маркерами, а хотелось всё таки обойтись без них.
Ты, черствый дурачок, думаешь блять запускать свою нахуй никому не нужную игру на 5.0 +? Ты ебанулся что ли? Большинство андройд устройств, даже говнокитайские поделки за 3-4к уже продаются с системой 7.0+ как минимум. ВСЕ ИГРЫ С АР сделаны от маршлелоу. Сука, иди нахуй блять. Вкатывальщик хуев. Ставлю 1к на то, что нихуя у тебя не получится и ты все забросишь.
Да что с тобой не так то? Для ARCore нужен не просто мобильник с андроидом 7.0, а мобильник определённой модели. Есть, блядь, даже список моделей, которые поддерживают его.
Алсо, сейчас на своём андроиде 6.0 запустил пару AR-приложений, и все они работали, токсик ёбанный.
Есть субкомпоненты дагера, лениво создаются по требованию, ну то есть создалась активити/фрагмент и дернула апликейшн, и тот создал субкомпоненту для логического скойпа. А когда ее (субкомпоненту) грохать? Не вижу какого-то прямого выхода кроме как во всех точках возврата из логического скоупа грохать субкомпоненту, но выглядит как-то совсем неудобно.
Если бы у меня была сингл активити было бы чуть проще, следил бы за фаргментаи/контролелрами/или что там вместо них было бы. Но у меня 3х летнее легаси которое разваливается, и пока отдельные большие логические скоупы живут в своих активитях.
Сначала подумал можно было бы в onCleared ViewModelи ассоциированной с активити убивать субкомпоненту, но что если я из этой активити перейду вниз по скоупу? Тогда onCleared вызовется, но грохать активити еще не нужно.
Есть субкомпоненты дагера, лениво создаются по требованию, ну то есть создалась активити/фрагмент и дернула апликейшн, и тот создал субкомпоненту для логического скойпа. А когда ее (субкомпоненту) грохать? Не вижу какого-то прямого выхода кроме как во всех точках возврата из логического скоупа грохать субкомпоненту, но выглядит как-то совсем неудобно.
Если бы у меня была сингл активити было бы чуть проще, следил бы за фаргментаи/контролелрами/или что там вместо них было бы. Но у меня 3х летнее легаси которое разваливается, и пока отдельные большие логические скоупы живут в своих активитях.
Сначала подумал можно было бы в onCleared ViewModelи ассоциированной с активити убивать субкомпоненту, но что если я из этой активити перейду вниз по скоупу? Тогда onCleared вызовется, но грохать скоуп еще не нужно.
Понадобилось иметь одинаковые отступы в RecyclerView перед первым элементом, между элементами и после последнего. Margin и padding у самого листа не подходят, поскольку он будет скроллиться под пару пустых пикселей, а не под другую вьюху ил край экрана. Задал все отступы кроме верхнего в item.xml, а верхний реализовал через ItemDecoration.getItemOffsets у первого элемента. Всё нормально отрисовывается, но теперь при обновлении списка (чистка через notifyItemRangeRemoved) список сначала прыгает вверх (пусть и на пару пикселей) и только потом удаляет элементы. Как я понимаю, сначала удаляется offset и это нормальное поведение. Но выглядит это всё не оче...
Кто-нибудь сталкивался с таким и как решил?
Лол, пару тредов назад это обсуждали, я разошелся во мнение с другим чуваком, он предложил использовать дополнитетельные элементы в списке, которые представляют из себя отступы.
Я написал себе декоратор который работает с LinearLayoutManagerом и GridLayoutManagerом (даже с кастомным SpanSizeLookup'ом), но что бы не было описанной тобой проблемы приходится в итем включать его позицию в списке и в DiffUtil.Callbackе либо DiffUtil.ItemCallbackе счиать это одним и тем же элементом, но с изменением и передавать в качестве payloadа сигнал об изменении позиции, тогда DiffUtil нормально выкупит и не просто пересчитает getItemOffsets, но и применит их новые значения.
Сделал маленький проект где показывал эту проблему на примере списка и как оно себе ведет при разных вариантах (notifyItemChanged для всех с заменой списка, swapAdapter, DiffUtil) если меняется порядок. Самое странное что без всяких суррогатных позиций в данных методы декорации вызываются, но не применяются. Так и не дошли руки никуда отправить вопрос баг ли это, уже недельки две как прошло.
>ClickableSpan
>нужно ручками указывать индексы ссылки в строке
Мде, и как вот такое локализовывать? Придумывать свой тег и парсить строку?
Именно, причем вроде даже есть встроенная парсилка xml, но из нее хуй достанешь аттрибуты.
В принципе, терпимый варифнт. Очко делало жим-жим при мысли, что переводчик (особенно, левый) забудет закрыть непонятный тег или вообще сотрет его, и это распидорасит функционал. Но студия ругается на корявые скобки даже кастомных тегов.
Блять, ну пиздец.
>пару тредов назад это обсуждали
Странно, как-то не обратил внимания. Пропустить не мог - читаю этот тред уже год точно.
>использовать дополнитетельные элементы в списке, которые представляют из себя отступы
Это конечно самый простой вариант (и очень даже в духе программирования под андроид), но и так же пять типов элементов для списка с одной моделью.
>приходится в итем включать его позицию в списке и в DiffUtil.Callbackе либо DiffUtil.ItemCallbackе счиать это одним и тем же элементом, но с изменением и передавать в качестве payloadа сигнал об изменении позиции
>Самое странное что без всяких суррогатных позиций в данных методы декорации вызываются, но не применяются.
Не совсем понял идею. Где-нибудь можно глянуть код?
>Не совсем понял идею.
Было в списке так напрмиер:
sealed class FeedItem(val id: Long) {
class Image(id: Long, val url: String) : FeedItem(id)
class Text(id: Long, val text: String) : FeedItem(id)
}
стало:
sealed class FeedItem(val id: Long, val order: Int) {
class Image(id: Long, order: Int, val url: String) : FeedItem(id, order)
class Text(id: Long, order: Int, val text: String) : FeedItem(id, order)
}
Не, это неинтересно. Есть же опенсорс дашчан, с ним гораздо интереснее возиться
А вот это уже интереснее. Опиши подробнее, что это, что-то типа соцсети с тредами?
Сам более года юзал MVP, в ус не дул, все выглядело идеально и логично в плане распределений в коде, но все чаще слышу об MVVM, а в инетике никто толковых аргументов о плюсах и минусах так и не расписал. Стоит ли вообще копать в сторону МВВМ или это юзлесс херня? Через что (какие библиотеки) она реализовывается и можно ли сделать связку с DI?
МВВМ сосет жопу, без аргументов.
>Аноны, подскажите, что предпочтительнее в андроид-проектах в плане архитектуры - MVP или MVVM и почему?
>>287234
Это просто общение вью с презентером и все. Читай про клин архитектуру вместе с инжектингом. Статья в шапке есть, можешь скакать оттуда.
Я бы подождал пока гугол не выкатит нормальные релизы своей мввм, а не багнутые вещи, которые они сейчас пропагандируют.
>эмвепэ
>эмвевеэм
Лол, почему сразу не на голом NDK? Не тормози, делай TEA на React-Native + Redux + Redux-Loop. По крайней мере пацанам во дворе не стыдно будет показать.
https://play.google.com/store/apps/details?id=by.wanna.apps.wnails&hl=ru
?
То есть при наводке камеры на руку детектились нужные части и как-то дорисовывались. Куда хоть копать - в сторону AR или в сторону Firebase Machine Learning?
Давай лучше на вопрос просто ответишь?
Есть проблема с Media Player.
Делаю пока проигрывание во фрагменте, а не в сервисе и возник баг. Если я начинаю проигрывать трек, потом поворачиваю экран то все нормально, фрагмент пересоздается, из savedState берется текущее время проигрывания и звук с небольшой задержкой продолжает проигрываться с того же места.
Однако если перед поворотом я поставлю на паузу, то после поворота meida player выдает отрицательное значение duration. Хотя вызываю его в коллбеке onPrepared(mediaPlayer).
Код фрагмента тут:
https://pastebin.com/cKcdm9aH
Лайвсайкл в обоих случаях одинаковый в логах.
(прикрил 1 и пикрил 2)
В чем может быть проблема?
> на реакт нейтиве
После такого каминг-аута тебе тут никто не ответит. Теперь только в js-тред.
Ещё проверил: добавил после первых нескольких элементов отступ через ItemDecoration.getItemOffsets. И теперь, при очистке списка этот отступ сначала применяется ко всем элементам.
Вообще изначальная проблема:
>Понадобилось иметь одинаковые отступы в RecyclerView перед первым элементом, между элементами и после последнего
>Я написал себе декоратор который работает с LinearLayoutManagerом и GridLayoutManagerом (даже с кастомным SpanSizeLookup'ом), но что бы не было описанной тобой проблемы приходится в итем включать его позицию в списке и в DiffUtil.Callbackе либо DiffUtil.ItemCallbackе счиать это одним и тем же элементом, но с изменением и передавать в качестве payloadа сигнал об изменении позиции, тогда DiffUtil нормально выкупит и не просто пересчитает getItemOffsets, но и применит их новые значения.
Зачем так сложно? Зачем так усложнять? Ты просто создаешь ячейку, допустим, с 60дп, и делаешь высоту еще 60, в итоге у тебя 60 + 60 = 120. Первый и последний это другой вью холдер.
Ну например высоты ячеек не фиксированные. Не хочу лишние вьюхи создавать.
Просто удивляет, что не работает то, что должно работать
> Первый и последний это другой вью холдер
Охуенно. У тебя список из 5 элементов. Последний - другой вьюхолдер с отступом. Докидываешь еще один, диффутила дает тебе только notifyItemAdded. Поздравляю, у тебя 2 элемента с отступом в конце.
>диффутила дает тебе только notifyItemAdded. Поздравляю, у тебя 2 элемента с отступом в конце.
Какая нахуй дифутила? Ты о чем вообще?
Ебнул два списка, Set и List
при апдейте ебашишь Set addAll, потом клинишь лист и адд алл так же. У меня проекты не на уровне параши, где заботишься о глобал перфомансе.
notifyDataSetChanged? Ну круто, чо.
>У меня проекты не на уровне параши, где заботишься о глобал перфомансе.
Какой интересный эфемизм для хеллоувордов.
https://android.jlelse.eu/pre-populate-room-database-6920f9acc870
регулярно случаются ситуации, что из базы выдергивается значение до того, как оно будет записано в нее на старте.
Есть какой-то способ заблокировать создание базы, пока все значение в нее не будут записаны?
Залупа ебаная, нихуя не придумал лучшего, чем самому писать query прямо в бд, которая дается через метод Callback'a
public void onCreate(@NonNull SupportSQLiteDatabase db) {}
и вставлять запись ручками, без ебли с неглавными потоками.
гг, меньше туторы от всяких гонзалесов читай
>Какой интересный эфемизм для хеллоувордов.
Эфемизм? На прошлой работе я спиздел 6 репозиториев и тщательно проанализировал. Ни у одного списка не была реализована дифутила.
Хотя я мб опять прочитаю про нее и попробую. Один хуй ничего не поменяется.
Проще найти удаленку и не париться.
Берешь и без задней мысли копируешь БД файл из ассетсов, потому уже открываешь коннекшн к базе.
Бамп, так и не разобрался отчего эта хуйня.
Оказывается ебучий Bundle сам по себе сука сохраняет объект и похуй ему на твои реализации Parceable
То есть сохранил я такой в Bundle свой класс:
public void onSaveInstanceState(Bundle savedInstanceState) {
//Save UserData
savedInstanceState.putParcelable(USER_DATA, userData);
//Call supper
super.onSaveInstanceState(savedInstanceState);
}
Ну думаю ша достану его при повторном запуске:
protected void onCreate(Bundle savedInstanceState) {
//Recreate previously saved state
if (savedInstanceState != null) {
//Recreate userData
userData = savedInstanceState.getParcelable(USER_DATA);
}
}
И действительно достал.
ТОЛЬКО БЛЯТЬ ЭТО ТОТ ЖЕ ОБЪЕКТ НАХУЙ. НИХУЯ ТАМ ПОД КАПОТОМ НЕ СЕРИАЛИЗОВАЛОСЬ/ДЕСЕРИАЛИЗОВАЛОСЬ
BUNDLE СУКА САМ ВСЕ ПОЛЯ ОБЪЕКТА РЕФЛЕКСИЕЙ СОХРАНЯЕТ/ДОСТАЕТ, РОТ ШАТАЛ ОН ТВОЙ PARCELABLE
ВСЕ ПОЛЯ СОХРАНЯЕТ БЛЯТЬ ДА ЖЕ ТЕ ЧТО НЕ ПРОСИЛ
> ТОЛЬКО БЛЯТЬ ЭТО ТОТ ЖЕ ОБЪЕКТ НАХУЙ
Ну да, он так и работает. Он серализует/десериализует только при IPC или смерти процесса. Оптимизации, сэр.
> никто в бандле не сохраняет классы
Именно поэтому он поддерживает Parcelable, Serializable. Я вот только сегодня Uri передавал через него. Надо было к строке приводить? Или разбирать идентифицирующий объект из трех полей в 3 строки вместо того, чтобы студией сгенерить реализацию парселебла и не ебать себе мозгии?
>Надо было к строке приводить? Или разбирать идентифицирующий объект из трех полей в 3 строки вместо того, чтобы студией сгенерить реализацию парселебла и не ебать себе мозгии?
Не знаю. Во всех проектах пихаю в презентер важную инфу. Вьюшки тупо рисую и все.
У тебя бандл только в сейв инстансе используется? Абсолютно такое же поведение при передаче в интентах и аргументах, и к нему нужно быть готовым.
>тебя бандл только в сейв инстансе используется?
В сейв инстансе ничего не использую. Ну бандл иногда, я же написал, по большей части с презентера на презентер кидаю.
Не нужно.
> Could not find lint-gradle-api.jar (com.android.tools.lint:lint-gradle-api:26.1.2).
Searched in the following locations:
https://jcenter.bintray.com/com/android/tools/lint/lint-gradle-api/26.1.2/lint-gradle-api-26.1.2.jar
это что вообще такое-то?
>он настолько бета?
Да нет, я слышал там в америке запилили апп для театра какого-то на нем. Но всякая кросплфт параша же. Лучше с андройда начинай, а потом и иос выучишь как я.
АйОС мне в сраку не упал, нужен Ведроид. Проблема (моя) в том, что Java вызывает лютую тошноту одним своим видом
У них нет companion object.
Проблема любой кроссплатформенной параши в том, что для того чтобы написать любое более-менее качественное для 2к18 года приложение нужно будет все равно погружаться в особенности платформы. В итоге тебе все равно нужно знать платформы, на которых пишешь + всю ту хуйню, с текущими как суки абстракциями, которыую нахуевертели в фремворке для кроссплатформенной разработки.
Получаем что вместо 2 вещей тебе надо знать 3 + бонусом получаешь снижение производительности из-за многоступенчатой ебли-переебли твоих кроссплатформенных хуиток.
На таком говне хорошо только всякие хеллоуворды и тудулисты выглядят, которыми ее обычно и рекламируют. А когда твоему приложению нужно использовать многопоточку, сеть, анимации, какие-то нестрандартные графические вещи, бд тут сразу твоя кроссплатформа начинает насасывать и ты пишешь еще больше кода, чем если бы написал нативно, на каждую платформу.
Уже блять были Phone Gap, Xamarin, React Native, Appcelerator и куча менее известной параши + всякое пистоно-руби-jsо-говноо для ухода от obj-с/java. Но необучаемые все равно думают что вот сейчас-то очередная параша взлетит ее же гугль делает и всe будут писать на кроссплатформе
Мимо
Анон, спасибо тебе и лучшей добра. Поведай мне, что кроме Java и Kotlin мне можно понюхать для вката на ведроид?
Цель: достаточно простые приложения под собственный же сервак, грубо говоря есть 50-150 человек со своими телефонами которые могут посылать некие команды на сервер, получать своё состояние с сервера, возможно как-то взаимодействовать с окружением типа считать QR код.
>типа считать QR код.
https://github.com/journeyapps/zxing-android-embedded
>ava и Kotlin мне можно понюхать для вката на ведроид?
Шапку читать, собственный сервак, а читать не научился?
мимо.
>Нахуй нужен inflater? я просто добавляю вьюхи через addview?
инфлатер же раздувает целый леяут и преобразует в класс один вью, а адд вью ты вынужден писать много раз + перентов еще заебешься включать.
Ну собственно то кроме java и kotlin + документация я бы ничего больше и не советовал.
Можешь сразу с котлина начинать, если знаешь какой-то другой язык на приличном уровне.
Не знаю, даже для простых приложений я бы советовал начинать сразу с нативной разработки т.е. java или kotlin + фреймворк андроида.
Для простых приложений это не сложнее чем какой-нибудь кроссплатформенный йоба фреймворк, а потом гемора будет намного меньше.
>Как в котлине добавить экстеншенами static метод в java class?
>У них нет companion object.
>
никак, потому что нет companion object
как боженька пояснил
>Можешь сразу с котлина начинать, если знаешь какой-то другой язык на приличном уровне.
Да-дада. Больше таких даунов слушай.
>вы жонглируете этими relative/constraint/linear?
Релатив статичен. Констрейн позже появился. С ним анимация идет.
Ну StackView в айосе это тот же LinearLayout, так что разные типы и там появляются. А так да, в ведре ConstraintLayout появился не так давно и это закос под систему констрейнтов в айосе. До этого был RelativeLayout с меньшим количеством возможностей, а до него все еще хуже(впрочем как и в яблоке до автолейаута).
Считай что xml макет это .xib. А inflater это аналог Bundle.loadNib который превращает твой xml во view.
Имхо, расставлять все в коде это дич.
Ясно, от .xib и Bundle.loadNib я и ios отказался, вот почему и тут не понял смысла.
>Имхо, расставлять все в коде это дич.
Попробуй еще захочешь, vfl и китаец с ютуба в помощь
Ну так телега говно и есть.
>Щас бы телегу как пример хорошего кода приводить.
Не хороший код. Они там все рисуют на канвасе. Достойно уважения, но это пиздец. Я кстати задумался, рили так делают в других топовых компаниях?
Можно расширение на класс повесить:
fun Class<YourClass>.doSomething() { ... }
И потом вот так: YourClass::class.java.doSomething()
Тогда попробуй anko, так хоть выглядеть будет чуть лучше.
Я тоже в ios вьюхи кодом хуярю, но это из-за ублюдочного сториборда, но в андроиде оно жирнее получится как мне кажется + можно xml вручную рас-рас-рас.
Пили
Как можно реализовать в приложении подключение через прокси? Не самой среды и эмулятора, а чтобы пользователь смог в самих настройках приложения, например, все прописать? Да, например как в телеге реализовано.
В какую степь копать?
> Intel® Hardware Accelerated Execution Manager
Да вроде же прикрутили амуде через Hyper-V на винде, там даже какие то баги были, которые исправили. На прыщах не знаю.
https://developer.android.com/reference/java/net/Proxy
>>290245
Ты даун что ли?
>HAXM на AMD не запускается, я так понял
Земля тебе пухом
То есть вот переходим с 2 экрана на 3 и возвращаемся назад.
У меня вызывается onstop и при возврате onrestart в котором я говорю finish и заново открываю эту активити. Вызывается еще один onstop.
У друга onstop при переходе на 3 экран и еще один onstop при возврате на 2, при этом onrestart не вызывается и хз откуда и почему вызывается onstop вместе orestart. В моем случае понятно, что при закрытии активити и ее переоткрытии.
Что делать, помогите.
Для примера:
public Cursor query (boolean distinct,
String table,
String[] columns,
String selection,
String[] selectionArgs,
String groupBy,
String having,
String orderBy,
String limit,
CancellationSignal cancellationSignal)
10 АРГУМЕНТОВ СУКА. ПЕРЕДАЧА ИМЕНИ СТОЛБЦОВ В МАССИВЕ ПО ОДНОМУ.
ЗАБОР ИЗ NULL, NULL, NULL, NULL ПРИ ВЫЗОВЕ ОСОБЕННО КРАСИВ. И ТАКОЕ ПОЧТИ ВСЕ API
1) Старая добрая рабочая лошадка, почти что джава;
2) Кулхацкер с сахарным диабетом;
3) Взять и поделить;
Low level api же, почти что обертка над сосишкой. Не нравится - берешь релм, рум, сторио, склделайт или еще какую орм на свой вкус.
Ну, примерно 18:30 слушать можно. и флаттер и хуяттер. Мб поможет задуматься о жизни.
Легче всего это сделать через задепрекейченный сенсор TYPE_ORIENTATION, там просто сразу этот угол у приходящего в коллбек SensorEvent'а есть. Но он на то и задепрекейчен.
Пробовал еще одним способом через TYPE_MAGNETIC_FIELD и TYPE_ACCELEROMETER, примерно как тут: https://www.ssaurel.com/blog/get-android-device-rotation-angles-with-accelerometer-and-geomagnetic-sensors/
И еще через TYPE_ROTATION_VECTOR, примерно как тут https://github.com/kplatfoot/android-rotation-sensor-sample/blob/master/app/src/main/java/com/kviation/sample/orientation/Orientation.java
Проблема с 2 и 3 вариантами в том, что искомый угол они выдают как на пикрелейтед. Закрашенный прямоугольник - девайс, стрелка - куда его верхушка смотрит. Вроде бы нормально, но мне нужно именно чтоб было отличие по знаку или хоть как угла в I четверти от угла в IV четверти.
Для собственноручной ебли с векторами, матрицами и кватернионами я туповат. Может кто знает, как можно решить вопрос?
>Ну блять охуенная привычка. Ты о других то подумай, им потом твое говно разгребать. И че у тебя там по стилям, как с атрибутами темы работаешь?
Кому им то, кому им? Я один здесь и под ios, и под android. Сегодня понял, что до некоторых вещей через код просто не достучаться, вот и с инфлятором разобрался
>Сегодня понял, что до некоторых вещей через код просто не достучаться,
с контекстом у тебя все двери открыты. Дерзай, юный подаван.
> архитектурой MVP
Это не архитектура
>разделение логики во вью и презентере просто перфект.
Слишком мало кода, поэтому и перфект. Поди еще переворота нет.
>Какого хуя на собеседованиях говорят смотреть в сторону ебучего MVVM
Для общего развития норм.
>Это не архитектура
Архитектура. И заебало, что в каждом андроид-треде находится "умник", который только при виде аббривеатур MVC, MVP и т.д. врывется со словами: "Это не архитектура, я скозал, ну не архитектура, ну мааам!"
>Поди еще переворота нет
Есть, чего ж нет.
>Для общего развития норм.
Для общего мейби, а для развития как программиста юзлесс.
360x360, 1:00
Подскажите плез, по поводу работы удалённо с андроидом, реально ли джуном? Я сейчас вкатываюсь в андроид по-фану, леплю лапшичку, разукрашиваю градиентики - вьюшки, всё нравится.
Но вот мой кореш - он же сенсей, говорит что лучше всего в офисе поработать годик - другой, а я последние 3 года на удалёнке работал, уже отвык от офисной педарасни и привыкать назад совсем не хочется.
Может быть есть истории успеха, полностью без личных контактов тру хиккарей?
Вы видите копию треда, сохраненную 8 декабря 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.