Так вот, хотелось бы заметить что так можно делать только для api 26+
потому, что с апи 21 по 25 не было флага View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
который нужен чтобы кнопки на навбаре стали тёмного цвета. Иначе на этих апи будет белый навбар с белыми кнопками.
Navigation Drawer все еще не поддерживает навигацию жестами
Здесь же упоминались System Gesture Insets
И видимо если он так и не будет поддерживать, придётся прикручивать костыль на их переопределение для определённых фрагментов.
Сам столкнулся с проблемой установки инсетов во фрагментах.
И визуально, чтобы всё хорошо выглядело с прозрачностью, пришлось много повозиться. Особенно для нормального отображения тулбаров в разных ориентациях и rtl. А также внутри Navigation Drawer, где надо по разному обрабатывать отступы для контента.
Пару месяцев назад, на реддите, происходил масштабный эвент вроде боёв за пиксели. То есть заходя по ссылке, пользователь попадал на холст, на котором он мог изменить цвет одного пикселя раз в 5 минут. И самое интересное было, что отрисовка происходила в реальном времени, рендерилась быстро, даже на телефонах. И можно было просто наблюдать за изменениями пикселей.
Визуально было чем то похоже на вашу текущую анимацию. Как это выглядело для пользователя, ну например можно тут посмотреть https://youtu.be/Tl9jS8r5mjQ?t=617
Показалось, что ваша отрисовка пиксельной анимации как то перекликается с этим, и, возможно, можно сделать отрисовку на канвасе отдельных пикселей. Ну или просто подчерпнуть что-то из той статьи.
Детали появления UTF-16 жалко не написали. Не понятно, зачем она вообще нужна, если есть UTF-8? Ведь UTF-8 меньше занимает объёма и тоже переменной длины.
Хотелось бы указать вам, что вы перепутали понятия «инвертирование изображения» и «инвертирование яркости изображения»
Здесь та же самая картинка c инверсией яркости (плюс 15% белого)
Скрытый текст
Хотя согласен, что данную процедуру нужно выполнять очень осторожно, и на некоторых логотипах всё равно результат может получиться не очень, особенно на лого с тенями и объёмом.
В основном из за опыта использования lab в фотошопе. Приходилось много где с его каналами колдовать. Он очень хорош для операций я яркостью и насыщенностью.
Плюс lab специально создавался c подстройкой под человеческое зрение.
CIELAB был разработан, чтобы быть перцептивно однородным по отношению к цветовому зрению человека, что означает, что одинаковое количество числовых изменений в этих значениях соответствует примерно одинаковому количеству визуально воспринимаемых изменений.
То есть изменение l канала в lab мне кажется будет лучше восприниматься визуально, чем то же самое в hsl
И скорость обработки ну очень мало различается, особенно если делать hashmap из уже использованных цветов, и определять инверсию для цвета только 1 раз.
Очень интересная статья.
Мне приходилось тоже заниматься перекрашиванием стилей, хотя делал это на более простых стилях, и для моей цели это подошло.
Делал это конвертацией цвета в lab, и инвертированием L канала.
Однако чисто инвертация не очень хороша. На AMOLED экранах да, чисто чёрный цвет можно использовать, но всё же пока большинство использует IPS.
И ещё, тёмная Holo тема не использует чёрный в качестве фона.
Так что я конвертировал цвета с небольшим смещением относительно будущего чисто чёрного цвета.
outLab[0] = 100 — outLab[0] * 0.85
Отлично подошло под Holo тему.
Вообще в приложениях с несколькими темами наверно неплохо делать две тёмных темы: тёмную и чёрную для amoled экранов.
Но для для каталога getExternalFilesDir запрос разрешения вообще не нужен, достаточно в манифесте прописать, и то при maxSdkVersion=«18».
А для остальных папок нужно просто добавить разрешение в манифест, запросить его и определить файлпровайдер с доступом к каталогу, в котором нужно читать или писать (хоть к корню флешки).
Реализуется совсем не сложно и описано в официальных гайдлайнах.
Или здесь какая то другая магия с доступами к external storage?
Согласен.
Даже Vk, WatsApp, Telegram, Сбербанк и куча других… Просто берут и создают папку в корне флешки, которая никогда не удалится при удалении приложения.
Зачем нужны папки Environment.getExternalStoragePublicDirectory() и context.getExternalFilesDir(), которые специально предназначены для хранения файлов приложения на внешней памяти, они видимо не знают…
Или это я просто не понимаю, зачем так делать.
Естественно нужно скрыть эту возможность от простых пользователей. К примеру, добавить в Developer options, в которые обычный пользователь вряд ли просто так попадёт, переключатель «Разрешить удалять системные приложения».
И если я действительно хочу удалить звонилку, почему мне для этого нужно рутить телефон?
Добрый день.
Хотелось бы поинтересоваться возможностью реализации фильтрации лучшего.
А конкретнее, «Лучшее за вчера» или за определённый день или период.
Просто, если я 1 день не посещал хабр, то хочется узнать, что было вчера интересного, но это, с главной страницы не получается сделать (или я не нашел данного функционала).
Единственная возможность — смотреть лучшее за неделю, но всё что там попадается, я уже видел, так как обычно регулярно посещаю хабр.
Да, действительно. Мне кажется в статье не очень понятно излагалась суть и решение первоначальной задачи. Перечитал ещё раз всю статью заново. Классное решение.
Однако, если имеется несколько яиц (больше двух), мне кажется (просто сугубо личное мнение), что первоначальный бинарный поиск очень сильно сократит время и количество попыток для поиска этажа.
То есть, если, например, яйца начинают биться с 51 этажа, то бинарным поиском это определится с 3 попытки, а в оригинальном решении потребуется больше бросков.
То есть, если яйца могут разбиться с равной вероятностью с любого этажа, ведь логично сразу отбросить 50% вариантов.
Однако не могу ручаться, что это действительно так, нужно провести тесты и смотреть, действительно ли, если половину (или какой то первоначальный процент) попыток отвести на бинарный поиск, общее количество попыток уменьшится.
Спасибо, интересно. Такие вопросы появились:
Может лучше стоило назвать параметр isOpen как нибудь более понятно, к примеру
val isConnectedOrConnecting: Boolean
?Может вообще в статусе
ConnectState
стоило сделать три состояния -Connected
,Connecting
,Disconnected
?Попробовал вашу клавиатуру. Замечательные подсказки.
Однако при использовании dex mode (Samsung S10) к сожалению нажатие cmd+space не меняет язык.
Приходится перевыбирать клавиатуру от Samsung и обратно.
Так вот, хотелось бы заметить что так можно делать только для api 26+
потому, что с апи 21 по 25 не было флага View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
который нужен чтобы кнопки на навбаре стали тёмного цвета. Иначе на этих апи будет белый навбар с белыми кнопками.
Здесь же упоминались System Gesture Insets
И видимо если он так и не будет поддерживать, придётся прикручивать костыль на их переопределение для определённых фрагментов.
Сам столкнулся с проблемой установки инсетов во фрагментах.
И визуально, чтобы всё хорошо выглядело с прозрачностью, пришлось много повозиться. Особенно для нормального отображения тулбаров в разных ориентациях и rtl. А также внутри Navigation Drawer, где надо по разному обрабатывать отступы для контента.
Пару месяцев назад, на реддите, происходил масштабный эвент вроде боёв за пиксели.
То есть заходя по ссылке, пользователь попадал на холст, на котором он мог изменить цвет одного пикселя раз в 5 минут.
И самое интересное было, что отрисовка происходила в реальном времени, рендерилась быстро, даже на телефонах. И можно было просто наблюдать за изменениями пикселей.
Визуально было чем то похоже на вашу текущую анимацию.
Как это выглядело для пользователя, ну например можно тут посмотреть
https://youtu.be/Tl9jS8r5mjQ?t=617
Как это работало, есть небольшая статья (и возможно где то можно ещё найти)
https://www.redditinc.com/blog/how-we-built-rplace/
Показалось, что ваша отрисовка пиксельной анимации как то перекликается с этим, и, возможно, можно сделать отрисовку на канвасе отдельных пикселей.
Ну или просто подчерпнуть что-то из той статьи.
Latest commit on 21 Nov 2016… и 31 пуллреквест
Кажется что он заброшен.
Здесь та же самая картинка c инверсией яркости (плюс 15% белого)
Хотя согласен, что данную процедуру нужно выполнять очень осторожно, и на некоторых логотипах всё равно результат может получиться не очень, особенно на лого с тенями и объёмом.
Плюс lab специально создавался c подстройкой под человеческое зрение.
То есть изменение l канала в lab мне кажется будет лучше восприниматься визуально, чем то же самое в hsl
И скорость обработки ну очень мало различается, особенно если делать hashmap из уже использованных цветов, и определять инверсию для цвета только 1 раз.
Мне приходилось тоже заниматься перекрашиванием стилей, хотя делал это на более простых стилях, и для моей цели это подошло.
Делал это конвертацией цвета в lab, и инвертированием L канала.
Однако чисто инвертация не очень хороша. На AMOLED экранах да, чисто чёрный цвет можно использовать, но всё же пока большинство использует IPS.
И ещё, тёмная Holo тема не использует чёрный в качестве фона.
Так что я конвертировал цвета с небольшим смещением относительно будущего чисто чёрного цвета.
outLab[0] = 100 — outLab[0] * 0.85
Отлично подошло под Holo тему.
Вообще в приложениях с несколькими темами наверно неплохо делать две тёмных темы: тёмную и чёрную для amoled экранов.
А для остальных папок нужно просто добавить разрешение в манифест, запросить его и определить файлпровайдер с доступом к каталогу, в котором нужно читать или писать (хоть к корню флешки).
Реализуется совсем не сложно и описано в официальных гайдлайнах.
Или здесь какая то другая магия с доступами к external storage?
Даже Vk, WatsApp, Telegram, Сбербанк и куча других… Просто берут и создают папку в корне флешки, которая никогда не удалится при удалении приложения.
Зачем нужны папки Environment.getExternalStoragePublicDirectory() и context.getExternalFilesDir(), которые специально предназначены для хранения файлов приложения на внешней памяти, они видимо не знают…
Или это я просто не понимаю, зачем так делать.
И если я действительно хочу удалить звонилку, почему мне для этого нужно рутить телефон?
Хотелось бы поинтересоваться возможностью реализации фильтрации лучшего.
А конкретнее, «Лучшее за вчера» или за определённый день или период.
Просто, если я 1 день не посещал хабр, то хочется узнать, что было вчера интересного, но это, с главной страницы не получается сделать (или я не нашел данного функционала).
Единственная возможность — смотреть лучшее за неделю, но всё что там попадается, я уже видел, так как обычно регулярно посещаю хабр.
Однако, если имеется несколько яиц (больше двух), мне кажется (просто сугубо личное мнение), что первоначальный бинарный поиск очень сильно сократит время и количество попыток для поиска этажа.
То есть, если, например, яйца начинают биться с 51 этажа, то бинарным поиском это определится с 3 попытки, а в оригинальном решении потребуется больше бросков.
То есть, если яйца могут разбиться с равной вероятностью с любого этажа, ведь логично сразу отбросить 50% вариантов.
Однако не могу ручаться, что это действительно так, нужно провести тесты и смотреть, действительно ли, если половину (или какой то первоначальный процент) попыток отвести на бинарный поиск, общее количество попыток уменьшится.
И это последнее яйцо бросаешь с нижней границы добавляя по 1 этажу.