2

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

0 回答 0