Unat
Я понимаю, что ты имел ввиду, но нельзя допустить чтобы кто-то тут подцепил неверное понимание терминологии
Konstantin
как ту сказали где то, функции с низкой социальной ответственностью
Сергій
Сергій
У меня просто глобальные функции
Unat
С неявным обращением к статическим объектам...
Konstantin
а про такое что думаете? val Int.dp: Int get() = (this / Resources.getSystem().displayMetrics.density).toInt() тут кто то говорил что типа может быть проблемой такое обращение к плотности экрана
Сергій
Я использую тоже, да и в анко есть. Только не вычисляю сам значение, для этого есть апи
Ivansuper
Анко не пример идеала
Сергій
Ничто не идеал, всё подбирается по требованиям 🌝
Unat
мне кажется, что экстеншены к примитивам - не очень правильная практика
Konstantin
а как думаешь короткий код это лаконичный код?
Unat
нет
Konstantin
а я думаю да
Konstantin
поэтому мне такие сокращения нравится а тебе наверное нет
Сергій
Можно экстеншен функцию написать к контексту
Unat
а я думаю да
но ведь короткий код - это короткий код, а лаконичный - это лаконичный. Это не синонимы. Короткий код может быть запутанным, небезопасным и труднорасширяемым точно так-же, как и наоборот.
Konstantin
вообще андроид рвет поначалу мозг, когда надо писать монструозные конструкции для простых вещей
Konstantin
и постоянно такое ощущение что хочется чего то попроще, покороче, попонятнее и в одну строку )
Turalllb
Подскажите, если нужно по клику с анимацией увеличить на весь экран изображение, а по обратно клику свернуть. ТО лучшая реализация заключается в том, чтобы иметь в макете увеличенное изображение с View.Gone и с анимацией его показывать ? А изображение которое есть в макете с View.Gone не жрет ресурсы?
Unat
ну так напиши функцию Resources.sizeDp(size: Int): Int - она будет явно указывать на то, что перевод единиц происходит через ресурсы, а не через магические константы
Konstantin
если бы я хотел писать вербозно - взял бы джаву
Alexey
можно как в анко dp(Int)
Сергій
можно как в анко dp(Int)
С этого и начали )
Alexey
самое очевидное
Unat
Вот вы приводите в пример анко... а покажите сигнатуру той функции.
Сергій
А вообще есть родное TypedValue
Сергій
куда уж очевиднее
Unat
fun Context.dip(value: Int): Int = (value * resources.displayMetrics.density).toInt() - вот так выглядят dip в Anko
Unat
и перегрузки для View, AnkoContext и Fragment
Unat
Вообще, экстеншен функции в котлине, если присмотреться, не используют для своих вычислений ничего, кроме this и аргументов - и это чертовски важное условие обеспечения "безопасности".
Anonymous
Кому-то блокировали AdSense? Мне отключили( За недействительный траффик. Но я не кликал по своей рекламе. Единственное, она просто показывалась, ведь я открывал свое приложение с того же аккаунта. Наверное за это. Что с этим можно сделать?(
Anonymous
Но никаких писем на почте не приходило. Я просто зашёл проверить свой адмоб как-то раз и обнаружил, что аккаунт отключен
Anonymous
Там так написано
Anonymous
Но про это ни слова не было. Было только написано, что нельзя кликать. Может кто-то сталкивался?
Anonymous
Хотя почему это недействительный траффик. Я даже не знаю за что толком. Просто написано ваш аккаунт отключен. Без каких-либо объяснений. И на почту, повторюсь, ничего не приходило.
Николай
public void create(String title, String description, boolean completed) { Todo todo = new Todo(); if (title.length() <= 1) { todo.setTitle(title+" This string is Empty"); todo.setDescription(description); todo.setCompleted(completed); todo.setEdited(new Date().getTime()); interactor.create(todo); Toast.makeText(context, "Saved", Toast.LENGTH_SHORT).show(); } else { todo.setTitle(title + " 222"); todo.setDescription(description); todo.setCompleted(completed); todo.setEdited(new Date().getTime()); interactor.create(todo); Toast.makeText(context, "Saved", Toast.LENGTH_SHORT).show(); } view.finishView(); }
Николай
помогите кто нибудь ... не работает как надо
Николай
вместо перезаписи оно делает копию + перезапись
Николай
1 -> edit to 2 -> 1 , 2
Dyno
ну проблема явно где-то не в этом коле
Dyno
что там? interactor.create(todo);
Anonymous
https://jobfinder-hessen.de/stellenangebot/karosseriebauer-m-w-oder-landmaschinenmechaniker-m-w-7QSP2F
Vitaly
На сколько я понимаю, если Service в отдельном процессе, то его нельзя запустить через bindService(), а так как в Android O, службы сильно порезали, то ситуаций, когда может понадобиться такая служба нет, верно? Получается остались только Foreground Service, которые изначально выполняют какую-то очень тяжёлую важную работу, которая изначально требует отдельный процесс (например проигрывание музыки), а значит и потребности в bindService нет?
tRuNKator
Всем привет, есть ли какая либо либа для генерации названия цвета ? По hex или rgb
Есть плагин, за качество работы не ручаюсь. https://plugins.jetbrains.com/plugin/10422-name-that-color/
Alexey
Для биндинга как раз нужен aidl
Vitaly
Для биндинга как раз нужен aidl
Ну да, без aidl вроде как нельзя
Vitaly
Для биндинга как раз нужен aidl
Хотя можно вроде как и через Broadcast Receiver реализовать межпроцессное взаимодействие или я ошибаюсь?
Alexey
*межпроцессное. Ну да
Vitaly
*межпроцессное. Ну да
А отличия в том, что один синхронный, а другой асинхронный => AIDL быстрее?
Alexey
Бродкаст только от сервиса, aidl - туда сюда
Vitaly
Опять начинаю путаться, зачем делать bindService, если этот Service будет работать только пока он привязан к какой-то Activity, если гораздо проще тогда создать отдельный поток для выполнения задачи внутри Activity или внутри приложения?
Alexey
https://m.habr.com/ru/post/349102/
Vitaly
Сервис может работать дальше когда unbind сделаешь
Проверил, действительно работает дальше (если конечно выделяю отдельный поток), но при unbind Service уничтожается и при следующем bind Создаётся новый Service Скорее всего что-то не так делаю
ltnay
Всем привет, значит есть активити, в ней viewpager с ботом навигацией, каждый пейдж фрагмент со своим внутренним стеком, есть пейдж корзина (фрагмент) с ресайклер, есть пейдж каталог с ресайклер, в каталоге можно добавлять товар в корзину по нажатию на кнопку у итема ресайклера. Я хочу обновить ресайклер корзины при нажатии кнопки и успешного выполнения запроса с фрагмента каталога или же обновлять при переходе на фрагмент корзины, но не совсем понимаю как мне тригерить обновление в корзине при выполнении запроса на сервер при добавлении из каталога. Корзина удаленная, по апи. MVP. Спасибо!
Владислав
всем доброго дня!!!
Владислав
Ребята киньте кто нибудь простинькую программу, а точнее код для того что бы затестировать среду разработки
Владислав
Можно в тхт если что
Проксимов
Ещё проще руками кинуть кнопку и текствью. Что там тестировать то?
Владислав
Проще с GitHub
Я даже не знаю что это)
Проксимов
Я даже не знаю что это)
А джаву/Котлин ты знаешь?
Владислав
А джаву/Котлин ты знаешь?
Вступления только начал читать, мне вчера только нормальные ссылки на обновленные версии кинули
Vitaly
Я даже не знаю что это)
Это удалённый репозиторий, в который программисты кидают свой код Если не знаешь что это, то зайди на StartAndroid, там будет проще
Владислав
Так смысел весь заключается в том что бы затестить среду на своем компе правильно и коректно всё ли работает
Vitaly
Вступления только начал читать, мне вчера только нормальные ссылки на обновленные версии кинули
А вообще лучше хорошо изучить Java, потом основы Android, потом Kotlin, а потом уже изучать Android основательно
Владислав
Лучшие повремени с андроидом
Да я это понял) С джавы и начал
Vitaly
Да я это понял) С джавы и начал
Тогда лучше пиши в беседу Java )
Vitaly
Да я это понял) С джавы и начал
накидай psvm и sout и будет простая программа
Владислав
Ruslan
Товарищи, посмотрите пожалуйста код. тут рх, но вопрос не в рх. Сначала делаю запрос в сети, получаю его, мапаю в удобные объекты, записываю в базу полученные элементы, после этого из базы беру элементы и вывожу на экран. вот этот момент смущает dao.insertEvents(events).andThen(dao.getEventList()) надо ли дожидаться окончания записи в базу и только потом выводить на экран? или сразу выводить на экран и начинать писать в базу? disposable += service.getEvents() .subscribeOn(Schedulers.io()) .map { eventsResponse: List<EventResponse> -> mapResponseToEventList(eventsResponse) } .flatMapSingle { events: List<EventItem.Event> -> dao.insertEvents(events).andThen(dao.getEventList()) } .map { events: List<EventItem.Event> -> groupEventsByDate(events) } .observeOn(AndroidSchedulers.mainThread()) .subscribe( { groupAdapter.addAll(it) }, { Log.e(TAG, it.message, it) } )
Ferrero
Блок andThen выполнится только после записи
Ruslan
Блок andThen выполнится только после записи
запросы в рум нельзя в главном потоке делать. andThen да, выполняется после завершения комплитабл. вопрос в том, надо ли дожидаться комплитабл и выводить записанные данные из базы, или можно в два места сразу и в базу и на ui отправлять? не дожидаясь окончания записи в базу и не вытягивая данные оттуда
Ferrero
А у объектов есть первичный ключ? Он генерируется или прилетает в апи?