【发布时间】:2021-07-14 03:31:13
【问题描述】:
我正在使用Canvas 和Paint 创建一个简单的圆图。
我注意到当我在init() 之外创建变量myPaint 时,一切正常;如下代码所示:
public class Drawing extends View {
Paint myPaint;
public Drawing(Context context) {
super(context);
init();
}
public void init(){
myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
myPaint.setColor(Color.parseColor("yellow"));
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(getMeasuredWidth() /2, getMeasuredHeight() /2 , 100f, myPaint);
super.onDraw(canvas);
}
}
但是,当我做完全相同的事情,而是在 init() 内创建 myPaint 时,我在 onDraw() 中收到 myPaint 的错误;如下代码所示:
public class Drawing extends View {
public Drawing(Context context) {
super(context);
init();
}
public void init(){
Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
myPaint.setColor(Color.parseColor("yellow"));
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(getMeasuredWidth() /2, getMeasuredHeight() /2 , 100f, myPaint);
super.onDraw(canvas);
}
}
为什么会这样?谢谢!
【问题讨论】:
标签: java android android-studio canvas scope