我正在将应用程序从Iphone移植到与RGB颜色相关的Android。CGColorGetComponents在Android中相当于
Android中是否有与CGColorGetComponents
相同的内容?
我正在将应用程序从Iphone移植到与RGB颜色相关的Android。CGColorGetComponents在Android中相当于
Android中是否有与CGColorGetComponents
相同的内容?
我通常通过使用位级操作来手动获取我的argb值。如果它更方便,可以将其封装在一个辅助方法中,该辅助方法将其作为数组返回。
public int[] getColorComponents(int color)
{
int alpha = (color >> 24) & 0xff;
int red = (color >> 16) & 0xff;
int green = (color >> 8) & 0xff;
int blue = color & 0xff;
return new int[] { alpha, red, green, blue };
}
如果你需要浮点数,你可以做这样的事情
public float[] getColorComponents(int color)
{
int alpha = (color >> 24) & 0xff;
int red = (color >> 16) & 0xff;
int green = (color >> 8) & 0xff;
int blue = color & 0xff;
float a = (float) alpha/255;
float r = (float) red/255;
float g = (float) green/255;
float b = (float) blue/255;
return new float[] { a, r, g, b };
}
如果你这样做是多次(如通过像素的位图循环),你可能想使用一个数组并将其传入,替换方法中的值而不是实例化一个新数组。
在Android中有这样一来,不使用(在某个讨厌的十六进制值):
public static float[] CGColorGetComponents(CGColorRef color) {
float[] components = new float[4];
int currentRed = Color.red(color);
components[0] = currentRed/255f;
int currentGreen = Color.green(color);
components[1] = currentGreen/255f;
int currentBlue = Color.blue(color);
components[2] = currentBlue/255f;
int currentAlpha = Color.alpha(color);
components[3] = currentAlpha/255f;
return components;
}
对于iOS到Android同等的要素,我建议你参考http://docs.myappconverter.com/search.html?q=CGColor
PS:的MyAppConverter服务也可以免费使用将应用程序从iOS转换为Android本机代码源,并且至少您可以让您的应用程序的所有组件都可以在android中使用。
它是直接位级操作。但仍然最接近我正在寻找的解决方案。日Thnx。 – Ashay 2011-03-29 06:55:58