Android:context.getDrawable()的替代方法

2020年4月14日 88点热度 0条评论

我在项目中使用了context.getDrawable()这样的代码:

Drawable greenProgressbar = context.getDrawable(R.drawable.custom_progressbargreen);

但是Eclipse给我一个错误,它需要一个
Minimum API level of 21。这意味着在Google快速搜索后,我的APP仅可在
Android 5.0上使用。由于并非所有设备都在使用此版本的android,所以我想为
context.getDrawable()选择一个替代方案。

解决方案如下:

根据SDK 22文档,已弃用了先前接受的方法:

Prior to android.os.Build.VERSION_CODES#JELLY_BEAN, this function would not correctly retrieve the final configuration density when the resource ID passed here is an alias to another Drawable resource. This means that if the density configuration of the alias resource is different than the actual resource, the density of the returned Drawable would be incorrect, resulting in bad scaling.

正如
this answer中指出的那样,更好的解决方案是使用
ContextCompat:
ContextCompat.getDrawable(context, R.drawable.***)