2011-03-28 94 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中使用。