You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:无需版本检测获取getDrawable及其他资源的方法?

简洁处理Android版本兼容的资源获取方式

当然有更简洁的办法啦!你可以通过封装工具方法或者利用AndroidX的兼容API,彻底摆脱重复的if-else版本判断,让代码清爽很多:

方法一:封装全局工具类

把版本判断逻辑封装成一个可复用的工具方法,之后每次调用只需一行代码:

public class ResourceUtils {
    public static Drawable getDrawable(Context context, int resId) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            return context.getDrawable(resId);
        } else {
            return context.getResources().getDrawable(resId);
        }
    }
}

使用示例:

imageView.setImageDrawable(ResourceUtils.getDrawable(this, R.drawable.ic_circled_v));

方法二:使用AndroidX兼容库(推荐)

如果你的项目已经接入AndroidX,直接用ContextCompat类的兼容方法就好,它内部已经帮你处理了所有版本适配逻辑,完全不用自己写判断:

imageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_circled_v));

这是官方推荐的做法,不仅针对Drawable,像颜色获取这类常见需求,ContextCompat也提供了ContextCompat.getColor(context, resId)这类兼容方法,同样能省去版本判断的麻烦。

内容的提问来源于stack exchange,提问作者Dishonered

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:52:00