我正在將應用程序從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