4
我想在android中创建一个类似pad的视图。我得到了一个符合用户手势的圆圈,我正在使用距离来保持向外控制板主圈外的圆圈。 我的问题是我想让圈子继续跟着手势,但留在主圈内。我使用公式来找到使用角度和半径的点,但它确实有些时髦的东西。如何在另一个圆圈内保持一个圆形android view view控制
我翻译画布,使主圆心为0,0。 下面是代码:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.translate(this.mainRadius, this.mainRadius);
canvas.drawCircle(0, 0, this.mainRadius, this.debugPaint);
canvas.drawCircle(this.handleX, this.handleY, this.handleRadius, this.handlePaint);
}
private void translateHandle(MotionEvent event) {
int x = (int) (event.getX() - this.mainRadius);
int y = (int) (event.getY() - this.mainRadius);
double distance = distanceFromCenter(x, y);
if (distance <= this.maxDistance) {
this.handleX = x;
this.handleY = y;
} else {
float angle = (float) Math.toDegrees(Math.atan2(y, x));
if (angle < 0)
angle += 360;
this.handleX = (int) ((this.mainRadius - this.handleRadius) * Math.cos(angle));
this.handleY = (int) ((this.mainRadius - this.handleRadius) * Math.sin(angle));
}
//onTranslateHandle(distance);
}
这里是一个gif图片的时髦的东西:
钉着它,欢呼队友! –
谢谢!这真是太棒了! –