TGViewer
Channel Public Channel
Android разработка

Android разработка

@android_its

все о Android разработке

@itchannels_telegram - 🔥 лучшие it каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - ml 📚

@pythonlbooks -📚books
Subscribers
4.88K
Photos
476
Videos
26
Links
554

Showing posts older than #314 · Back to latest

Older Posts 11 shown
Post #310 1.77K
💻 Отличная шпаргалка по функциям в Kotlin

⏩Держите отличную презентацию по функциям в Kotlin, которая поможет повторить самое важное
Затрагиваются такие темы:
— функция main, точка входа
— компактные функции
— лямбды и функции высшего порядка
— список фильтров
— нетерпеливые и ленивые фильтры

Описано подробно и понятно, рекомендую
📎 Сайт со слайдами

@android_its
  • 👍 6
  • ❤ 1
  • 🔥 1
Post #309 1.49K
💻 О .not() и ! в Kotlin

Мы довольно часто используем оператор .not(), поскольку это более читабельно, чем !.

Но есть одна вещь, которую оператор .not() не может сделать — поглядите:
myEvents?.forEach { myEvent -> 
if (!myEvent.events.isNullOrEmpty()) {
myEvent.events.find { it.type == eventType }
}

if (myEvent.events.isNullOrEmpty().not()) {
myEvent.events.find { it.type == eventType }
}
}

Как-то так

@android_its
  • ❤ 4
  • 👍 2
Post #305 1.57K
💻 Отличная статья-презентация о работе с шаблонизаторами Kotlin

⏩В статье рассматривается использование шаблонизатора Pebble для формирования HTML-документов и его особенности, включая поддержку фильтров, тегов и наследования шаблонов.

⏩Описаны условные конструкции, проверки и наследование шаблонов в рамках использования шаблонизатора Pebble.

⏩Обсуждаются принципы работы с шаблонами и передача списков данных в шаблоны.

⏩Параллельно рассматриваются различные аспекты разработки приложений на Kotlin, включая императивный, объектно-ориентированный и функциональный синтаксис; рассматривается работа с функциями в Kotlin и их объектная природа.

⏩Кроме этого обсуждается вопрос null-безопасности в Kotlin и удобные средства для обработки этой ситуации.

📎 Онлайн-презентация

@android_its
  • 👍 5
  • 🔥 2
  • ❤ 1
Post #304 1.4K
💻 Библиотека Scout — быстрый и безопасный DI на Kotlin

Scout — это библиотека, появившаяся как результат большого количества проб и ошибок. Пет-проекты с кастомными DI-контейнерами. Изучение каждого нового DI-фреймворка, который появлялся в комьюнити.
Держите полезную статью о том, как Scout создавалась и какие проблемы может решать.

Вот ещё некоторые факты из статьи:
*️⃣Библиотека Scout использует рефлексию для доступа к содержимому графа и предоставляет защищенные методы для обращения к нему.

*️⃣Валидация графа становится сложной из-за отказа от аннотаций, но может быть проверена в unit-тестах.

*️⃣Библиотека предлагает удобный и настраиваемый валидатор графа зависимостей.

📎 Читать подробнее

@android_its
  • ❤ 4
  • 👍 1
  • 🔥 1
Post #303 1.39K
💻 Золотой век Kotlin, и какое будущее его ждёт

— «В компании Infobip с 2017 года и до сегодняшнего дня идет золотой век Kotlin. Будет ли он продолжаться, зависит исключительно от JetBrains и их способности внедрять инновации в Kotlin»

Полезная статья, в которой затрагиваются важные вещи, автор рассуждает о том, почему одни технологии сменяют другие, почему взлетевшие Scala и Groovy не так популярны сегодня и т.д.

Разбираются достоинства и недостатки Kotlin:
⏩Плюсы Kotlin
— Интероперабельность с Java
— Корутины
— Структура данных и сопоставление шаблонов
— Работа с Null
— Другие особенности

⏩Минусы Kotlin
— Интероперабельность с Java
— Экосистема Kotlin
— Рабочая сила
— Отсутствие прогресса

📎 Статья

@android_its
  • ❤ 4
  • 👍 2
  • 👎 2
  • 🔥 1
Post #299 1.61K
💻 Отличия Sequence API vs Collection в Kotlin

Держите хорошее объяснение отличий между 2 этими понятиями.

⏩В статье рассматриваются примеры, которые помогают визуализировать разницу между Sequence API и обычными коллекциями.

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

⏩Sequence API в Kotlin могут обрабатывать данные более эффективно, чем обычные коллекции.

📎Читать подробнее: [ru], [en]

@android_its
  • 👍 3
  • ❤ 2
  • 🔥 1
Post #298 1.46K
Android 15 Developer Preview 2!

Google выпустили предварительную сборку Android 15 Developer Preview 2.

🔸 Добавлен интерфейс для работы с спутниковой связью. Теперь Android 15 поддерживает обмен сообщениями SMS, MMS и RCS через спутник.

🔸 Новый раздел - "Передача аудио". Предполагается, что пользователь сможет передавать звук через Bluetooth одновременно на несколько наушников и динамиков с поддержкой Bluetooth. Однако на данный момент эта функция не работает.

🔸 "Режим веб-камеры" теперь поддерживает режим HQ-качества изображения.

🔸 Обнаружение записи экрана. Теперь, если приложение записывает ваш экран, вы получите уведомление об этом.

🔸 В разделе "О приложении" появилась функция "Отправить в архив". Архивация позволяет освободить до 60% пространства, сохраняя личную информацию.

Более подробную информацию о других изменениях можно найти в блоге Google. Заводские образы доступны по ссылке (начиная с Pixel 6).

https://developer.android.com/about/versions/15/download

@android_its
  • 👍 6
  • 🔥 2
  • ❤ 1
Post #297 1.53K
💻 Создание анонимного экземпляра интерфейса в Kotlin

⏩Если сразу к сути, то для создания экземпляра анонимного интерфейса в Kotlin применяется объектное выражение. Определите интерфейс непосредственно при инициализации переменной следующим образом:
val myInterfaceInstance = object : MyInterface {
override fun myFunction() {
// Ваш код здесь
}
}

myInterfaceInstance.myFunction()

В данном примере переменной myInterfaceInstance мы присваиваем объект, используя ключевое слово object :
Далее указываем название интерфейса, а затем в фигурных скобках представляем реализацию необходимых функций с помощью переопределения.


⏩Создание экземпляра SAM-интерфейса, используя лямбду

Интерфейс с одним абстрактным методом (SAM) в Kotlin может быть представлен лямбдой. Котлин предлагает более лаконичную запись для интерфейсов с единственным методом:
fun interface MySAMInterface {
fun myAction()
}

val myInterfaceInstance = MySAMInterface {
println("Смотрите, мама, я пишу код без использования рук!")
}

myInterfaceInstance.myAction()


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

📎 Читать подробнее

@android_its
  • 👍 4
  • ❤ 3
  • 🔥 1
Post #296 1.4K
💻 Работа с интерфейсами Kotlin: правильная инициализация

⏩В Kotlin интерфейсы не имеют конструкторов и не способны создавать экземпляры сами по себе. Они выступают в качестве шаблонов для классов, которые обязаны их реализовывать, предлагая конкретные реализации абстрактных методов, предусмотренных интерфейсом. Вот наглядный пример:
interface MyInterface {
fun myFunction()
}

class MyClass : MyInterface {
override fun myFunction() {
println("Пришло время действовать!")
}
}

val myObject = MyClass()
myObject.myFunction()

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

📎 Читать подробнее

@android_its
  • 👍 4
Post #295 1.39K
💻 Своё расширение в Kotlin

⏩Можно ли организовать свое собственное расширение в Kotlin? Да, это можно сделать через Delegate:
class MyString {
fun myPrint(text: String) {
println(text)
}
}


⏩Есть класс MyString с методом myPrint(). Допустим нам надо сделать собственное расширение printRealExt() без использование встроенных в Kotlin возможностей:
fun MyString.printRealExt(text: String) {
println(text)
}


⏩Реализуем интерфейс и класс с нашим методом "расширения":
interface ExtensionPrint {
fun printExt(text: String)
}

class ExtensionPrintImpl : ExtensionPrint {
override fun printExt(text: String) {
println(text)
}
}


⏩А затем воспользовавшись Delegation делегируем этот метод:
class MyString : ExtensionPrint by ExtensionPrintImpl() {
fun myPrint(text: String) {
println(text)
}
}


⏩Синтаксис вызова из расширения и из делегата выглядит одинаково:
    val myString = MyString()
myString.printRealExt("Real ext")
myString.printExt("Text from ext")


⏩Таким же образом можно организовать множественное наследование в Kotlin:
interface OneClassInterface {
fun someOne()
}

class OneClassImpl : OneClassInterface {
override fun someOne() {
println("some One")
}
}

interface TwoClassInterface {
fun someTwo()
}

class TwoClassImpl : TwoClassInterface {
override fun someTwo() {
println("someTwo")
}
}

class DerivedClass : OneClassInterface by OneClassImpl(), TwoClassInterface by TwoClassImpl()


@android_its
  • 👍 7
  • ❤ 3
  • 🔥 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →