我正在根据自己的视图的滚动位置,将decorView
的{{1}}更改为window
为真与否。
由于我同时更改了ActionBar和Status Bar,因此我希望这两项更改至少应是瞬时的。但是我注意到在执行View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
与呈现新的状态栏模式之间存在50ms的延迟。我不想将我的工具栏更改放置在postDelay处理程序中,只是为了与状态栏更改协调它们的同时出现。我以为我可以覆盖window.decorView.systemUiVisibility = newIntWithToggledLightMode
以便在状态栏ui更新后得到通知,但这只是在我使状态栏不可见时才触发,而不仅仅是更改外观模式。有没有人碰到这个问题并想出一个更优雅的解决方案?
答案 0 :(得分:1)
我刚刚调查过尝试复制您的问题,但没有遇到您在谈论的延迟...在我的示例中,我通过单击按钮模拟了背景变化的事件。希望对您有所帮助,我在这里分享我的代码:
活动属性
config.assets.paths << Rails.root.join('node_modules')
活动的onCreate中的按钮初始化
private val isLight get () = (window.decorView.systemUiVisibility and SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) > 0
和 setStatusBarColors()函数
button.setOnClickListener {
if (isLight) {
setStatusBarColors(
decorView.systemUiVisibility and SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv(),
ContextCompat.getColor(decorView.context, android.R.color.holo_green_dark)
)
} else {
setStatusBarColors(
decorView.systemUiVisibility or SYSTEM_UI_FLAG_LIGHT_STATUS_BAR,
ContextCompat.getColor(decorView.context, android.R.color.holo_red_light)
)
}
}