2017-02-17 7 views
0

Мое приложение рисует круг при нажатии экрана. Я пытаюсь поместить текст в круги в зависимости от количества экранов. Так что, если ваш первый кран даст вам круг с текстом C0, то второй даст вам круг для С1 и т.д.Кружок для рисования Android с различным текстом

В настоящее время мой код выглядит

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); 

Где ъх и уу являются координаторами где вы коснулись экрана, а i - счетчик окружности. Этот код начинается просто отлично, но после первого рисования круга он изменяет ВСЕ текст для ВСЕХ кругов на новое значение i. Как мне обойти это?

Спасибо

ответ

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; 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^