2017-02-17 33 views
0

我的應用程序在按下屏幕時繪製一個圓圈。我試圖根據屏幕上有多少個文字來放置文字。所以,如果你第一次輕觸會給你文字C0了一圈,第二會給你C1轉了一圈,等帶有不同文字的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); 

其中VX和VY是協調員你觸摸屏幕的地方,我是圓圈計數器。這段代碼剛剛開始,但在第一次繪製圓之後,它將所有圓圈的所有文本都更改爲新的i值。我如何解決這個問題?

謝謝

回答

0

只需在自定義視圖內創建一個新變量i即可。然後在click中增加變量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; 
    } 

}