我刚刚开始使用 Android 进行基本绘图。我从一些简单的形状开始,但我遇到了一些问题。我想在 Canvas 的中心画一个圆圈。我查看了一些示例,但似乎无法使其正常工作。我认为这是因为我真的不明白变量在哪里。
有人可以解释一下在屏幕中央绘制圆圈的正确方法吗?这是我的代码:
public class Circle extends View{
int width = this.getWidth();
int height = this.getHeight();
public Circle(Context context) {
super(context);
setFocusable(true);
}
protected void onDraw(Canvas canvas){
canvas.drawColor(Color.CYAN);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
//canvas.drawCircle(100, 100, 50, paint);
canvas.drawCircle(width/2, height/2, 100, paint);
Display disp = ((WindowManager)this.getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
float radius = 0;//Radius caused an error so I initialized this variable
canvas.drawCircle(disp.getWidth()/2, disp.getHeight()/2, radius, paint);
}
}
最佳答案
调用 getWidth() 和 getHeight() 时, View 的宽度和高度尚未初始化,只需在 onDraw 中使用 getWidth() 和 getHeight():
canvas.drawCircle(getWidth()/2, getHeight()/2, 100, paint);
您还可以覆盖 onSizeChanged 并获取 View 宽度和高度。
PS:不要在onDraw中创建任何东西,在构造函数中创建paint对象。
关于android - 在 Canvas 中心画圆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16552076/