2011-03-28 109 views

回答

0

我通常通过使用位级操作来手动获取我的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 }; 
} 

如果你这样做是多次(如通过像素的位图循环),你可能想使用一个数组并将其传入,替换方法中的值而不是实例化一个新数组。

+0

它是直接位级操作。但仍然最接近我正在寻找的解决方案。日Thnx。 – Ashay 2011-03-29 06:55:58

0

在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中使用。