在中心画布中绘制圆并旋转视图



我在自己的视图扩展上在中心画了一个圆(+还有一些我会省略的(。然后我把它添加到我的布局中,在 onClickListener 中,我递增 .setRotation((;但是我的圆不绕着它的中心旋转,它有点偏离。为什么?

我尝试将填充和边距设置为 0,但这不会改变任何东西。

最小示例:

public class MyCircleView extends View
{
private int width = 0;
private int height = 0;
public MyCircleView(Context context)
{
super(context);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
width = w;
height = h;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(width/2, height/2, width/2, new Paint());
}
}

然后在主要活动中:

MyCircleView circle = new MyCircleView();
myLayout.addView(circle);
circle.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
v.setRotation(v.getRotation()+10);
}});

我发现了问题,一行偷偷摸摸的width = width - 50;隐藏在我的代码中。

最新更新