这是我正在使用的代码,它在背景上运行很重的部分,它绘制了一个不断增长的圆圈,当它在增长时,圆圈内的文本会淡出,问题是文本在蓝色(与圆圈相同的颜色)和白色(文本的颜色)。我正在使用双缓冲(使用画布,绘制我需要的所有内容,然后发布在 UI 线程上使用的图像)。
有什么建议么?
Canvas c = new Canvas(mBitmap);
c.drawColor(0, PorterDuff.Mode.SRC_OVER);
GrowingButtonData buttonInfo = (GrowingButtonData) params[0]
.get("buttonInfo");
int pickedCirclNumber = params[0].getInt("pickedCirclNumber");
int color = buttonInfo.getColor();
currentPaint.setColor(color);
Rect bounds = new Rect();
currentPaint.getTextBounds(buttonData.get(pickedCirclNumber)
.getText(), 0, buttonData.get(pickedCirclNumber)
.getText().length(), bounds);
String name = buttonData.get(pickedCirclNumber).getText();
float xText = offsetX * (pickedCirclNumber + 1)
+ (pickedCirclNumber * radius) + radius / 2.0f;
float yText = offsetY + radius / 2.0f + +bounds.height() / 2.0f;
float initalOffsetX = offsetX * (pickedCirclNumber + 1)
+ (pickedCirclNumber * radius);
while (lastRadius < getMeasuredWidth() * 1.5f) {
currentPaint.setAlpha(255);
currentPaint.setColor(Color.BLUE);
lastRadius += (System.currentTimeMillis() - lastTime);
lastTime = System.currentTimeMillis();
RectF rectF = new RectF();
rectF.set(
initalOffsetX
- ((lastRadius - (float) radius) / 2.0f),
(offsetY - ((lastRadius - (float) radius) / 2.0f)),
initalOffsetX + radius
+ ((lastRadius - (float) radius) / 2.0f),
(offsetY + radius + ((lastRadius - (float) radius) / 2.0f)));
c.drawArc(rectF, 0, 360, true, currentPaint);
int newAlpha = (int)(255.0f * (1.0f-lastRadius/(getMeasuredWidth()*2.0f)))-63;
if (newAlpha<0)
newAlpha =0;
currentPaint.setAlpha(newAlpha);
currentPaint.setColor(Color.GREEN);
c.drawText(name, xText, yText, currentPaint);
publishProgress(new JSONObject());
}
return params[0];
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
@Override
protected void onProgressUpdate(JSONObject... values) {
super.onProgressUpdate(values);
setImageBitmap(mBitmap);
}