这是我正在使用的代码,它正在背景中运行繁重的部分,并且它绘制了一个不断增长的圆圈,并且当它在增长时,圆圈内的文本淡出,问题在于文本在蓝色(与圆圈颜色相同)和白色(文本颜色)之间闪烁。我正在使用双缓冲(使用画布,绘制我需要的所有内容,之后,发布在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);
}