我想根据用户手指的运动以任意角度旋转视图。用户可以像手势检测器一样通过在屏幕上拖动手指来旋转视图。给我点时间,我好开始工作。它应该在一个手指中工作,因为我已经实现了两个手指缩放
函数处理单指旋转,主要思想是计算视图的中心x和中心,并考虑到状态栏高度,如果你使用一个。
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (action) {
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_DOWN:
rotateX = event.getRawX();
rotateY = event.getRawY();
centerX = view.getX() + ((View) getParent()).getX() + (float) view.getWidth() / 2;
centerY = view.getY() + statusBarHeight + (float) view.getHeight() / 2;
break;
case MotionEvent.ACTION_MOVE:
newRotateX = event.getRawX();
newRotateY = event.getRawY();
double angle = Math.atan2(event.getRawY() - centerY, event.getRawX() - centerX) * 180 / Math.PI;
view.setRotation((float) angle - 45);
rotateX = newRotateX;
rotateY = newRotateY;
}
}
return true;
}
};