Есть ли способ программно получить цветовой акцент 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
}