【发布时间】:2013-12-31 01:33:03
【问题描述】:
我正在尝试移动 ImageView(不旋转)。运动应该在圆的边缘。这个圆圈也是一个图像视图。
基于 onTouch, ACTION_MOVE 事件,我正在尝试移动它。
不,困境是用户可能不会以完美的圆形方式移动手指,但我想确保图像仍然围绕这个圆圈的边缘移动。
我目前在 ACTION_MOVE 中使用以下内容:
mCurrTempIndicator.setTranslationX(event.getX());
mCurrTempIndicator.setTranslationY(event.getY());
但这不会在一个完美的循环中移动。
有人可以帮忙吗。
更新:代码
@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;
}
【问题讨论】:
标签: android math transform touch-event