Есть ли способ программно получить цветовой акцент Android Q System

Как вы заметили, Google включил способ выбора общесистемного цветового акцента в настройках Android:

Сначала я подумал, что это будет невозможно использовать в моем приложении, но Gboard успешно использует его для элементов пользовательского интерфейса темы, как мы видим в этой новости: https://9to5google.com/2019/05/08/android-q-gboard-accent-color/

Тогда мне стало интересно, является ли это общедоступным API или есть способ получить его тем или иным способом.

Спасибо за любую идею.

1 ответ

Решение

Вы должны использовать Theme.DeviceDefault тема как источник, который не зависит от AppCompat Мир.

Я протестировал следующий фрагмент, и он отлично работает, когда я изменил цвет акцента на Android Q:

@ColorInt
fun getDeviceAccentColor(context: Context) : Int {
    val value = TypedValue()
    val ctx = ContextThemeWrapper(context, android.R.style.Theme_DeviceDefault)
    ctx.theme.resolveAttribute(android.R.attr.colorAccent, value, true)
    return value.data
}
Другие вопросы по тегам