1. 程式人生 > >安卓中COLOR的值分析

安卓中COLOR的值分析

   今天在做方面的安卓的影象顯示的時候,需要實時的改變圖片的顏色,然而,客戶端接收的都是RGB值,而JAVA中的BITAMP類構造時,需要的是一個顏色值,所以需要一個類似new Color(int r,int g,int b)的函式。由於JAVA.AWT.Color這個JAVA中的顏色類不能用,而ANDOID的應用中好像沒有提出類似的方法,本人就想直接使用最原始的方法獲得顏色值:

   int color  = (r<<16)|(g<<8)|(b)

   然而根據此顏色得到的影象卻顯示不出來。為探究其原因,首先打印出了COLOR.RED值,發現竟然是負值,然後查了查ANDOID的COLOR的方法發現所有的顏色值都是負的,接著檢視其16進位制編碼發現 綠色為

-16711936 (0xff00ff00)。發現JAVA中的顏色都是補碼的方式輸出結果的,而且ALPHA值預設255(透明時可以設定其它值)開始,不能省略,而32位中第一位的1被當作了負號使用,從而0xff00ff00成了-16711936。因此可以把顏色的獲取方法改為如下:

        int color  = (0xff000000)|(r<<16)|(g<<8)|(b)

  問題解決