颜色渐变、#16进制转RGB颜色(转Int)
2016-07-07 18:43
471 查看
A: 初始颜色 B: 目标颜色
获取10个 A到B渐变的颜色值依次展示实现颜色渐变效果
思路:通过16进制字符串,对应拆分为RGB色值
举例:“#FB5D22” R: FB; G:5D; B:22;
获取到AB的RGB16进制色值后分别转换为10进制,同比例加减数值,实现颜色变化效果。
16进制字符串转10进制
设置每次加减步长
现在:
private int[] c = new int[3];// 步长值
private int[] a = new int[3];// 初始值
private int[] b = new int[3];// 目标值
private int[] d = new int[3];// 当前值
通过循环设置d的值,在屏幕上绘制出来即可
获取10个 A到B渐变的颜色值依次展示实现颜色渐变效果
思路:通过16进制字符串,对应拆分为RGB色值
举例:“#FB5D22” R: FB; G:5D; B:22;
获取到AB的RGB16进制色值后分别转换为10进制,同比例加减数值,实现颜色变化效果。
private void getColor() { // Color.rgb(210, 233, 251); // 方式一 colors = 0xD2E9FB; //一个RGB分别为8位,获取R的色值右移16位 a[0] = colors >> 16; //获取G的色值右移8位,取低8位, a[1] = (colors >> 8) & 0xff; //取低8位 a[2] = colors & 0xff; // 方式二 b = RGBString2Int("1d3652"); byABGetStep(); }
16进制字符串转10进制
/** * 将指定字符串src,以每两个字符分割转换为16进制形式 * */ public static int[] RGBString2Int(String src) { int[] ret = new int[4]; for (int i = 0; i < 5; i += 2) { ret[i / 2] = Integer.parseInt(src.substring(i, i + 2), 16); } return ret; }
设置每次加减步长
private void byABGetStep() { for (int i = 0; i < 3; i++) { int step = Math.abs((a[i] - b[i])); c[i] = step / COLOR_SUM; if (step % COLOR_SUM > (COLOR_SUM / 2)) { c[i]++; } } }
现在:
private int[] c = new int[3];// 步长值
private int[] a = new int[3];// 初始值
private int[] b = new int[3];// 目标值
private int[] d = new int[3];// 当前值
通过循环设置d的值,在屏幕上绘制出来即可
/** * 绘制画面 */ public void myDraw() { try { canvas = sfh.lockCanvas(); if (canvas != null) { canvas.drawColor(Color.rgb(d[0], d[1], d[2]));// 刷新屏幕,用背景色刷新 canvas.save(); // 注意canvas.save()与canvas,restore()是成对存在的 canvas.rotate(oneEartRatOut, ratX, ratY); // 旋转控制的角度 4000 canvas.drawBitmap(bmpEart, bmpEartX, bmpEartY, paint);// 绘制地图 canvas.restore(); } } catch (Exception e) { } finally { if (canvas != null) { sfh.unlockCanvasAndPost(canvas); } } }
相关文章推荐
- iOS SDWebImage 淡入 UITableViewCell
- C++中ANSI、Unicode、UTF8字符串之间的互转
- 支持向量机(五)SMO算法
- Android异常解决--A WebView method was called on thread 'JavaBridge'. All WebView methods must be called
- KVM 虚拟化架构和实现原理
- 异常篇之Activity class {} does not exist(AS)
- UIButton 的图文混排
- linux 快速分析JVM信息
- 浅谈Android开发中内存泄露与优化-------其一
- Ubuntu下github pages+hexo搭建自己的博客
- Objective-C——Block的使用
- session详解
- Ubuntu下github pages+hexo搭建自己的博客
- 项目经验(持续更新)
- 【计算机视觉】Visual Tracking 领域最新进展(论文与源码)
- java反射学习总结
- 随记
- Linux下iptables 禁止端口和开放端口
- 最近阅读的开源库
- unable to install breakpoint in ... absent line number information