Articles of дизайн

Развитие библиотеки. Использование данных из внешнего источника

У меня нет никакой практики для развития библиотеки, но теперь я хотел бы что-то создать. У меня есть класс CodeSet, который используется в большой структуре. class CodeSet(val value: String) { fun validation(list: HashSet<String>): ErrorCode { … } } class A { val a1 … var a2: CodeSet? = null } class B { val b1: […]

Android Studio не применяет мои изменения в дизайне

Я пытаюсь изменить тему некоторых действий, удалив панель действий или изменив ее заголовок. Сначала я делал это, используя опцию AppTheme на вкладке дизайна. Однако после поиска в Интернете я знал, что делаю это неправильно, поэтому я перешел к файлу AndroidManifest, чтобы делать свои изменения вручную. К сожалению, он тоже не работает. Вот код моего файла […]

Соглашение о кодировании для пустых функций, которые необходимо переопределить в Котлине

Удовлетворение очень коротким соглашениям о кодировании не дает ответа на то, как записывать пустые функции в Котлин. Пример: ani.setAnimationListener(object: Animation.AnimationListener { override fun onAnimationRepeat(animation: Animation?) = Unit override fun onAnimationStart(animation: Animation?) {} override fun onAnimationEnd(animation: Animation?) = activity.runOnUiThread { loadLists() } }) Здесь используется только один из 3 необходимых методов AnimationListener (Android). Какой тип пустого […]

Является ли тип неявного свойства одинаковым с явным типом свойства?

Следующий код A – от разработчиков Kotlin-for-Android. Код B написан мной. Аналогичны ли эти два разных блока кода? Код А class DetailActivity : AppCompatActivity(), ToolbarManager { override val toolbar by lazy { find<Toolbar>(R.id.toolbar) } … } Код B class DetailActivity : AppCompatActivity(), ToolbarManager { override val toolbar: Toolbar by lazy { find<Toolbar>(R.id.toolbar) } … }

Критики Котлина и неправильный вывод

Рассмотрим общий class Item и определенный class Event который наследует его: open class Item<T> { fun copyFrom(item: T) { if (this is Event && item is Event) { owner = item.owner value = item.value } } } class Event : Item<Event> { open var owner = "" open var value = 0 } Благодаря выводу […]

Statusbar не прозрачен, но белый

Чтобы проверить kotlin с anko DSL, я решил запустить новый proyect в последней Android-студии ide (2.1.3), используя плагин kotlin (1.0.3) и последнюю библиотеку anko (0.9) Я использовал функцию «Активность ящика навигации по умолчанию», поэтому мне просто пришлось преобразовать основной xml в anko. Это xml: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" […]

Функции делегирования класса Kotlin

Вот как я знаю, чтобы создать делегацию класса в Котлине: class CustomList<T>(private val data: ArrayList<T> = ArrayList<T>()) : List<T> by data Однако я не хочу помещать данные в конструктор, потому что я хочу, чтобы список был пуст при создании CustomList : class CustomList<T> : List<T> by data { private val data = ArrayList<T>() } Кажется, […]

Почему в котлин можно делегировать только интерфейсы?

Я видел несколько подобных вопросов, но никто не объяснил, почему делегирование ограничено интерфейсами? В большинстве случаев на практике у нас есть что-то, что фактически не имеет никакого интерфейса, это класс, который ничего не реализует, кроме как предоставляет некоторую функциональность или реализует абстрактный класс. Существует ли какое-либо фундаментальное ограничение, которое ограничивает это интерфейсом, или мы можем […]

Как выполнить эту анимацию в CardView с помощью макета и поведения координатора?

Я пытаюсь выполнить следующий эффект с компоновкой координатора: Я потратил около 30 часов +, пытаясь решить эту проблему, и я знаю, как это происходит с помощью поведения макета координатора, но есть много вещей, которые я ошибаюсь. Вот мой xml: <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.StatisticsFragment"> <!– TODO: Update blank fragment layout –> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" […]