Android绘制圆圈与不同的文本

时间:2017-02-17 20:17:23

标签: android canvas

我的应用程序在按下屏幕时绘制一个圆圈。我试图根据有多少屏幕将文字放在圆圈上。因此,如果你的第一次点击会给你一个带有文字C0的圆圈,第二个会给你一个圆圈用于C1,等等。

目前我的代码看起来像

lPaint = new Paint();
lPaint.setColor(Color.WHITE);
lPaint.setTextAlign(Paint.Align.CENTER);
lPaint.setTextSize(40);

nCanvas.drawCircle(v.x, v.y, 55, cPaint);
nCanvas.drawText("C"+i, v.x, v.y, lPaint);

v.x和v.y是您触摸屏幕的协调员,我是圆形计数器。这段代码开始很好,但是在第一次绘制圆圈后,它会将所有圆圈的所有文本更改为新的i值。我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

在自定义视图中创建一个新变量i。然后在点击上增加变量i,在onDraw方法中只需绘制圆圈,或者你想要的任何东西。例如:

package yourpackage.

import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Build;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.View;

/**
 * Color view used for picking color for drawing
 */
public class ColorView extends View {

    private Paint drawPaint;
    private int color = ContextCompat.getColor(getContext(), android.R.color.black);
    private int i;


    public ColorView(Context context) {
        this(context, null);
    }

    public ColorView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public ColorView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public ColorView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        init();
    }

    private void init() {
        drawPaint = new Paint();
        drawPaint.setAntiAlias(true);
        drawPaint.setColor(color);
        drawPaint.setStyle(Paint.Style.FILL);
        drawPaint.setStrokeJoin(Paint.Join.ROUND);
        drawPaint.setStrokeCap(Paint.Cap.ROUND);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawRect(0, 0, 100, 200, drawPaint);
    }

    public void setColor(int color) {
        drawPaint.setColor(color);
        this.color = color;
    }

    public void onClick() {
        i++;
    }

    public int getColor() {
        return color;
    }

}