Перемещение изображения в круговом движении на основе сенсорных событий в Android
Я пытаюсь переместить 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;
}