📜  不推荐使用 getResources().getColor() (1)

📅  最后修改于: 2023-12-03 15:06:12.762000             🧑  作者: Mango

不推荐使用 getResources().getColor()

在 Android 开发中,常用的获取颜色值的方法是通过 getResources().getColor() 来获取。然而,这种方式已经被弃用,建议开发者使用 ContextCompat.getColor() 方法来代替。

为什么不推荐使用 getResources().getColor()?
  1. API 版本兼容问题。getResources().getColor() 方法是在 API 23 之前的版本中引入的,如果你的应用需要兼容较低版本的 Android 系统(比如 API 19),则必须使用 ContextCompat.getColor() 方法。否则会出现 NoSuchMethodError。

  2. 与 ContextCompat.getColor() 相比,getResources().getColor() 方法不支持传入主题(Theme)属性,可能会导致颜色不一致的问题。而 ContextCompat.getColor() 可以根据当前主题属性动态获取颜色值。

  3. 从 Android 6.0 (API 23)开始,getResources().getColor() 方法已被标记为弃用,不再推荐使用,未来可能会在更新版本中被移除。

如何正确使用 ContextCompat.getColor() ?
val color = ContextCompat.getColor(context, R.color.color_name)
  • context: 上下文对象
  • R.color.color_name: 颜色资源的 ID
总结

总而言之,弃用 getResources().getColor() 是出于 API 版本兼容、可维护性等因素的考虑。因此,开发者应该尽快更换为 ContextCompat.getColor() 方法来获取颜色值,确保应用程序在不同版本的 Android 系统上能够正常运行。