All streams
Search
Write a publication
Pull to refresh
27
0
Максим Ковалев @OneeL

Android-разработчик

Send message
Исходя из названия, ожидал увидеть в статье описание технических проблем с которыми столкнулись ваши инженеры. Обычно компании рассказывают именно об этом, т.к. это повышает количество просмотров других разработчиков и, возможно, привлечет новых людей к вам в компанию.
Статья подходит для what's new в маркете или у вас на сайте, но не для технического блога.
Где-то пару лет назад была тут от меня статья habrahabr.ru/post/278945 раскрывает все довольно широко :)
Почти уверен, что если разобрать реализацию существующих функций, перед этим показав, как их применять, статья будет намного более полезной.
Нельзя оценить выразительность языка в полной мере, если рассматривать неудачные примеры. К сожалению, у вас в статье описанные возможности и правда используются не по назначению. Единственного apply было бы достаточно.
А еще Котлин не склонять. Такие вещи пишут обычно в личку :) К тому же, ничего страшного в таком варианте нет, это ведь не Активность вместо Activity.
Да, я об этом думал, но пока идей, как сделать это аккуратно, не было.
Это может звучать как перебор, но можно использовать include и передавать изменяемые параметры через те же databinding. Хотя стили для ViewGroup так не задать, конечно.
Делаю у себя в проекте именно так как вы описали (включая дефолтные значения), работает прекрасно. Используются дополнительные адаптеры, но в сумме выглядит, на мой взгляд, аккуратно и без лишней неявности. В xml задается примерно так (Color — enum c доступными для изменения цветами, colorScheme — map со значениями цветов):
Пример
<!--suppress AndroidUnknownAttribute -->
<data class="SomeFragmentBinding">
    <import type="package.Color"/>
    <variable name="colorScheme" type="package.ColorScheme"/>
</data>

<FrameLayout
    ...
    android:background="@{colorScheme[Color.CONTENT_BACKGROUND]}">

    <GridView
        ...
        app:colorScheme="@{colorScheme}"/>

    <TextView
        ...
        android:textColor="@{colorScheme[Color.DEFAULT_TEXT]}"/>

</FrameLayout>

Подобным образом реализовано у Meizu

Если не ошибаюсь, я даже видел отдельные приложения (или модуль для Xposed), реализующие это.
Гугл сами часто не следуют своим же рекомендациям, но в данной ситуации это выглядит странно. Обязательно еще раз проверю на Nexus 6 при возможности.
Чтобы не быть голословным, вот здесь написано, что runtime-разрешения добавили в 6 версии. Я слышал, что механизм был в андроиде чуть ли не с KitKat, но не был доступен официально. Скорее всего у вас все-таки некая надстройка от создателей прошивки.
Пара скриншотов взята как раз из Keep. Он определенно точно не запрашивает вообще все нужные ему разрешения при старте, некоторые запрашиваются в процессе работы, в этом и суть нового api.
2

Information

Rating
Does not participate
Location
Таганрог, Ростовская обл., Россия
Works in
Date of birth
Registered
Activity