安卓中COLOR的值分析

来源:互联网 发布:淘宝模特去哪里找 编辑:程序博客网 时间:2024/05/22 00:39

   今天在做方面的安卓的图像显示的时候,需要实时的改变图片的颜色,然而,客户端接收的都是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的颜色有什么区别,首先打印出了COLOR.RED值,发现竟然是负值,然后查了查ANDOID的COLOR的方法发现所有的颜色值都是负的,接着查看其16进制编码发现 绿色为-16711936 (0xff00ff00),发现JAVA中的颜色都是补码的方式输出结果的,而且前而ALPHA值以255(透明时可以设置其它值)开始,不能省略,而32位中第一位的1被当作了负号使用,从而0xff00ff00成了-16711936。因此可以把颜色的获取方法改为如下:

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

   问题解决

0 0
原创粉丝点击