getResources().getDrawable()过时问题
前言
在Android的开发中我们经常会遇到过时的方法,当时为了图快、编译时也不会报错,也就没有去理会。随着慢慢整理代码,看到过时地方确实不美观,也会影响后期的兼容性问题,故特此记录下。本篇记录下关于getResources().getDrawable()过时问题。
问题
我们经常会根据不同场景显示不同背景,如下图,使用resource下面的getDrawable()方法会提示过时。
解决
1、使用drawable资源
//null的意思:不为其设置theme主题,如果想设置主题,请在此处改为该主题即可
recycler.background = ResourcesCompat.getDrawable(resources, R.drawable.bg_white_cn8, null)
2、使用默认Activity主题
recycler.background = ContextCompat.getDrawable(this, R.drawable.bg_white_cn8)
总结
注意:ContextCompat.getDrawable() 方法要求 API 级别为 21 或更高版本。
如果您的应用程序需要兼容 Android 4.4 及以下的版本,可以使用 AppCompatResources.getDrawable() 方法来替代 ContextCompat.getDrawable() 方法。
这两个方法的使用方式相似,只是前者需要使用 appcompat-v7 库。