У меня есть Framelayout, который добавляет четыре изображения в среду выполнения, а также в центре содержит основное изображение, с помощью которого пользователь может выполнять разные действия, но я сталкиваюсь с проблемой с отображением вида ротации
в настоящее время при нажатии кнопки поворота я делаю это
public void setRotateListener() {
mRotateImage.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX(0);
float y = event.getY(0);
float theta = getTheta(x, y);
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
theta_old = theta;
break;
case MotionEvent.ACTION_MOVE:
float delta_theta = theta - theta_old;
theta_old = theta;
int direction = (delta_theta > 0) ? 1 : -1;
angle += 3 * direction;
Log.d("Tag", "rotate angle : " + obj.getHeight());
obj.setRotation(angle);
notifyListener(direction);
break;
}
return true;
}
});
}
private float getTheta(float x, float y) {
float sx = x - (obj.getWidth() / 2.0f);
float sy = y - (obj.getHeight() / 2.0f);
float length = (float) Math.sqrt(sx * sx + sy * sy);
float nx = sx / length;
float ny = sy / length;
float theta = (float) Math.atan2(ny, nx);
final float rad2deg = (float) (180.0 / Math.PI);
float thetaDeg = theta * rad2deg;
return (thetaDeg < 0) ? thetaDeg + 360.0f : thetaDeg;
}
но я не могу получить ожидаемый результат, я уже ссылаюсь на эту ссылку https://github.com/rprouse/XkcdClock а также попытайтесь повернуть с жестом и анимацией, но, похоже, он не работает в соответствии с моим движением на экране