Android getColor 过期问题

2017-05-23  本文已影响0人  用心感受世界

如果你的Android项目中这行代码过期了

getResources().getColor(R.color.black);

可以尝试用代替

ContextCompat.getColor(this,R.color.black);

这个是兼容 全API版本的,方法里自己带有当API大于及小于23的判断

public static final int getColor(Context context, @ColorRes int id) {
        final int version = Build.VERSION.SDK_INT;
        if (version >= 23) {
            return ContextCompatApi23.getColor(context, id);
        } else {
            return context.getResources().getColor(id);
        }
    }

api 大于等于23 的方法核心是context.getColor(id);

class ContextCompatApi23 {
    public static ColorStateList getColorStateList(Context context, int id) {
        return context.getColorStateList(id);
    }

    public static int getColor(Context context, int id) {
        return context.getColor(id);
    }
}

事实上在单独运行

context.getColor(id);

时候会提示你需要API版本为23,我的当前最小支持版本是16,所以....不能用
而小于23版本的方法

getResources().getColor(R.color.black);

直接划一道横线,很干脆的告诉你过时了...
所以

ContextCompat.getColor(this,R.color.black);

是最好的选择

上一篇下一篇

猜你喜欢

热点阅读