我有一种方法可以传递一个 int 颜色值
fun setTint(color: Int) {
}
Run Code Online (Sandbox Code Playgroud)
我可以通过R.color.black和Color.BLACK它。在我想检查它是否为@ColorRes或 的方法中@ColorInt。我该怎么做 ?
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)