如何在另一个圈子里面保持一个圆圈的android视图控件

如何在另一个圈子里面保持一个圆圈的android视图控件,第1张

概述我想在 android中创建一个类似pad的视图.我得到一个跟随用户手势的圆圈,我使用距离来保持圆圈越过垫控制的主圆. 我的问题是我希望圈子继续跟随手势,但要留在主圈内.我使用公式来找到使用角度和半径的点,但它做了一些时髦的东西. 我正在翻译画布,因此主圆的中心位于0,0. 这是代码: @Overrideprotected void onDraw(Canvas canvas) { sup 我想在 android中创建一个类似pad的视图.我得到一个跟随用户手势的圆圈,我使用距离来保持圆圈越过垫控制的主圆.
我的问题是我希望圈子继续跟随手势,但要留在主圈内.我使用公式来找到使用角度和半径的点,但它做了一些时髦的东西.

我正在翻译画布,因此主圆的中心位于0,0.
这是代码:

@OverrIDeprotected 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视图控件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存