在onDraw

时间:2018-07-06 17:14:30

标签: android android-custom-view staticlayout

我的自定义视图中包含以下代码。我正在使用StaticLayout在cirlce下绘制多行文本。

但是在onDraw内分配对象不是可取的。

如何解决此问题?我是否需要将StaticLayout对象存储在BoxLocation对象中并使用它?

 @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        for(MapBoxLocations mbl: BoxLocations) {
            int color = mbl.getColor();
            int x = mbl.getCx();
            int y = mbl.getCy();
            String title = mbl.getTitle();
            paint.setColor(color);
            canvas.drawCircle(x, y, 60, paint);
            textPaint.setTextSize(24);
            canvas.save();
            canvas.translate(x - 60,y + 70);
            StaticLayout dl = new StaticLayout("" + title, textPaint, 120,
                    Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
            dl.draw(canvas);
            canvas.restore();

        }

0 个答案:

没有答案