大佬教程收集整理的这篇文章主要介绍了如何在另一个圈子里面保持一个圆圈的android视图控件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在翻译画布,因此主圆的中心位于0,0.
这是代码:
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.translate(this.mainRadius,this.mainRadius); canvas.drawCircle(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图像中的时髦东西:
private void translateHandle(MotionEvent event) { float x = event.getX() - this.mainRadius; float y = event.getY() - this.mainRadius; double distance = distanceFromCenter(x,y); if (distance > this.maxDistancE) { // if Distance is i.e 2.0 and maxDistance is 1.0 ==> adjust is 0.5 // which repositions x and y making distance 1.0 maintaining direction double adjust = this.maxDistance / distance; x = (float)(x * adjust); y = (float)(y * adjust); } this.handleX = (int)x; this.handleY = (int)y; }
如果不能提供任何有用的结果,我可以根据需要更新答案.
以上是大佬教程为你收集整理的如何在另一个圈子里面保持一个圆圈的android视图控件全部内容,希望文章能够帮你解决如何在另一个圈子里面保持一个圆圈的android视图控件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。