因此,我必须在我正在构建的这个应用程序中使用调色板 API 来动态更改状态栏颜色,并且当我传递值时,我得到了更改应用程序状态栏颜色的方法,并出现java.lang.IllegalArgumentException:未知颜色
无论通过在数字前面添加需要“#”并将其作为字符串传递,我都正确格式化它,但应用程序仍然崩溃。
这是我用来做的代码片段。
binding.viewpagerMain.registerOnPageChangeCallback(
object: ViewPager2.OnPageChangeCallback(){
override fun onPageSelected(position: Int) {
var headerImage : Int? = null
when(position){
0 -> headerImage = R.drawable.character
1 -> headerImage = R.drawable.planets
2 -> headerImage = R.drawable.films
3 -> headerImage = R.drawable.species
4 -> headerImage = R.drawable.vehicles
5 -> headerImage = R.drawable.starships
}
if (headerImage != null) {
imageview_main.setImageResource(headerImage)
val bitmap = BitmapFactory.decodeResource(resources, headerImage)
Palette.from(bitmap).generate {
@SuppressLint("ResourceAsColor")
val paletteColor: Int? = it?.getDarkVibrantColor(R.color.colorPrimaryDark)
Log.e("MainFragment", "#${paletteColor}")
(activity as MainActivity).updateStatusBarColor("#${paletteColor.toString()}")
}
}
}
}
)
这是我运行的活动功能
open fun updateStatusBarColor(color: String?) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val window: Window = window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = Color.parseColor(color)
}
}
添加了一个日志调用以了解输出是什么,我得到的值是负数
#2131034159
#-14678008
#-15191992
#-7325688
我不知道为什么这些值是负数,或者如果可以,我假设它们在十六进制值的位置并传递了它们,但它们仍然不起作用。