【发布时间】:2016-01-20 19:35:52
【问题描述】:
我正在通过触摸事件围绕圆圈移动图像。 我希望用户触摸图像,当用户在圆圈周围拖动此图像时,它会移动,否则不会移动。
有人可以帮忙计算一下如何检查手指是否沿着圆圈移动,然后他们相应地移动图像。
谢谢。
更新:
我正在尝试围绕一个圆圈旋转图像。它已经放置在圆的边缘。
但在触摸和移动动作时,它以自身为中心,然后开始围绕定义的半径移动。
有人可以看看代码,让我知道我哪里出错了。
谢谢。
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mInitialX = event.getX();
mInitialY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
mEndX = event.getX();
mEndY = event.getY();
float deltaX = mEndX - mInitialX;
float deltaY = mEndY - mInitialY;
double angleInDegrees = Math.atan(deltaY / deltaX) * 180 / Math.PI;
mInitialX = mEndX;
mInitialY = mEndY;
mCurrTempIndicator.setRotation((float)angleInDegrees);
mCurrTempIndicator.setTranslationX((float)(310*(Math.cos(angleInDegrees))));
mCurrTempIndicator.setTranslationY((float)(310*(Math.sin(angleInDegrees))));
break;
case MotionEvent.ACTION_UP:
allowRotating = true;
break;
}
return true;
}
【问题讨论】:
-
计算圆心与触摸事件发生点之间的距离。如果它在 r-delta, r+delta 范围内,那么你在圆形路径上
-
可以的。但是我如何在计算坐标中找到圆心
-
你不知道你在哪里画圈子?
-
我正在为圆圈加载图像。 (抱歉造成混淆)但不确定坐标中的确切位置。有没有办法通过 onCreate() 中加载的 imageview 找到它?
-
那你为什么使用imageview而不是直接绘制位图?