安卓中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)

 

 

  问题解决

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值