android颜色处理:得到已知颜色的深色或者浅色

泡在网上的日子 / 文 发表于2014-05-05 19:12 次阅读 canvas

android的颜色处理在2d绘图的时候有可能用到,刚好碰到需要根据已知颜色获得其相应深色或者浅色的情况,我知道的有两种方法。

第一种:将color转换成hsv颜色空间改变hsv的值,再转换成int类型的color值:

转换成深色:

public int getDarkerColor(int color){
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv); // convert to hsv
    // make darker
    hsv[1] = hsv[1] + 0.1f; // more saturation
    hsv[2] = hsv[2] - 0.1f; // less brightness
    int darkerColor = Color.HSVToColor(hsv);
    return  darkerColor ;
}

转换成浅色:

public int getBrighterColor(int color){
      float[] hsv = new float[3];
      Color.colorToHSV(color, hsv); // convert to hsv
                                                         
      hsv[1] = hsv[1] - 0.1f; // less saturation
      hsv[2] = hsv[2] + 0.1f; // more brightness
      int darkerColor = Color.HSVToColor(hsv);
      return  darkerColor ;
  }

第二种简单,但是感觉不太科学,而且只能转换成更浅的颜色:

int newColor = Color.parseColor("#0E" + oldColor.replace("#", ""));


可以看出其实就是在原有颜色的基础上增加了不透明度。
收藏 赞 (0) 踩 (2)
上一篇:android Shader类简介_渲染图像示例
Android中提供了Shader类专门用来渲染图像以及一些几何图形,Shader下面包括几个直接子类,分别是BitmapShader、 ComposeShader、LinearGradient、RadialGradient、SweepGradient。 BitmapShader主要用来渲染图像,LinearGradient 用来进行梯度渲染,RadialG
下一篇:android开源图表库MPAndroidChart(曲线图、直方图、饼状图)
一个可以拖动缩放的图表库,包含曲线图、直方图、饼状图,其中直方图支持3d效果。 该库的可扩展性强,切代码相对规范,如果不喜欢 AChartEngine 可以考虑在此库的基础上开发自己的图表类。 linechart BarChart2D BarChart3D PieChart 以piechart为例介绍使用