有没有办法以编程方式获取Android Q System颜色强调

时间:2019-05-10 07:10:29

标签: android accent-color

您已经注意到,Google在Android设置中提供了一种选择系统范围的色彩强调的方法:

enter image description here

我首先认为这不可能在我的应用程序中使用,但是Gboard成功地将其用于主题UI元素,正如我们在此新闻中看到的:https://9to5google.com/2019/05/08/android-q-gboard-accent-color/

那时我想知道这是一个公共API,还是有一种方法可以从一种或另一种方法中获取它。

感谢任何想法。

enter image description here

1 个答案:

答案 0 :(得分:3)

您必须使用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
}