【问题标题】:Android change chart color from white to red but just 30%Android 将图表颜色从白色更改为红色,但只有 30%
【发布时间】:2014-07-08 23:17:42
【问题描述】:

代码:

public final void SetBitmapImage(Bitmap paramBitmap, int color, float percentage)
  {
    float f = percentage * -360.0F;        
    int i = paramBitmap.getWidth();
    int j = paramBitmap.getHeight();
    Paint localPaint1 = new Paint(ANTI_ALIAS_FLAG);
    Paint localPaint2 = new Paint(ANTI_ALIAS_FLAG);
    Paint localPaint3 = new Paint(ANTI_ALIAS_FLAG);
    Bitmap localBitmap1 = Bitmap.createBitmap(i, j, Bitmap.Config.ARGB_8888);
    Canvas localCanvas1 = new Canvas(localBitmap1);
    localCanvas1.rotate(-90.0F, i / 2.0F, j / 2.0F);
    RectF localRectF = new RectF(0.0F, 0.0F, i, j);
    localPaint1.setStrokeWidth(2.0F);
    localPaint1.setStyle(Paint.Style.FILL);
    localPaint2.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
    Bitmap localBitmap2 = paramBitmap; // this should include color I think but don't know how
    localCanvas1.drawArc(localRectF, 0.0F, f, true, localPaint1);
    Bitmap localBitmap3 = Bitmap.createBitmap(localBitmap1.getWidth(), localBitmap1.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas localCanvas2 = new Canvas(localBitmap3);
    localCanvas2.drawBitmap(paramBitmap, 0.0F, 0.0F, localPaint3);
    localCanvas2.drawBitmap(localBitmap1, 0.0F, 0.0F, localPaint2);
    Bitmap localBitmap4 = Bitmap.createBitmap(localBitmap2.getWidth(), localBitmap2.getHeight(), localBitmap2.getConfig());
    Canvas localCanvas3 = new Canvas(localBitmap4);
    localCanvas3.drawBitmap(localBitmap2, new Matrix(), null);
    localCanvas3.drawBitmap(localBitmap3, 0.0F, 0.0F, null);
    localBitmap2.recycle();
    localBitmap3.recycle();
    localBitmap1.recycle();
    setImageBitmap(localBitmap4);
  }

但图像仍然相同。我希望图像的 70% 保持白色,30% 保持红色。

我认为Bitmap localBitmap2 有问题。

Bitmap localBitmap2 = paramBitmap; // this should include color I think but don't know how

应该是这样的:

Bitmap localBitmap2 = Something(paramBitmap, color); which will set the color

【问题讨论】:

标签: android android-layout


【解决方案1】:

在android中,设置十六进制码时,#后面的前6位是普通码,后面有2位可选,用于透明。

#000000 = black
#00000000 = fully transparent

鉴于最后两位数字需要采用十六进制格式,您需要在 0 - 255 之间选择范围,然后将其转换回十六进制。

提示:您可以在“程序员”模式下使用 Windows 计算器执行此操作。 :)

例子:

30% 不透明度:255*0.70 = 178。178 转换为十六进制 = B2。

因此,将 B2 添加到您拥有的任何颜色代码的末尾,它将是 30% 不透明的。

#000000B2

希望这会有所帮助。

【讨论】:

  • 你能举个例子吗?
猜你喜欢
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
相关资源
最近更新 更多