如何检查 Int 值是 @ColorRes 还是 @ColorInt?

Man*_*ddy 0 android

我有一种方法可以传递一个 int 颜色值

fun setTint(color: Int) {

}
Run Code Online (Sandbox Code Playgroud)

我可以通过R.color.blackColor.BLACK它。在我想检查它是否为@ColorRes或 的方法中@ColorInt。我该怎么做 ?

Jar*_*vis 5

Android 资源 ID 是 32 位数字,而 Android 颜色可以编码为 32 位整数或 64 位长整数。

因此,首先检查数字是否是有效的颜色资源将是我的方法。如果它不是资源,则可以将其视为编码颜色。

if(isColorResource(value)) Log.d(TAG,"Found color resource");
else Log.d(TAG,"Found color value");
Run Code Online (Sandbox Code Playgroud)
public boolean isColorResource(int value) {
        try {
            ResourcesCompat.getColor(getResources(), value, null);
            return true;
        } catch (Resources.NotFoundException e) {
            return false;
        }

    }
Run Code Online (Sandbox Code Playgroud)