用一根手指旋转视图

时间:2014-08-04 06:39:44

标签: android gesture

我希望以任意角度旋转一个手指的视图取决于用户的手指运动。用户可以通过像手势探测器一样在屏幕周围拖动手指来旋转视图。给我一些时间让我可以开始工作。应该工作在一根手指,因为我已经实现了两个手指进行缩放。

1 个答案:

答案 0 :(得分:0)

用一根手指处理旋转的功能,主要思想是计算视图的centerX和centerY,并考虑状态栏高度(如果使用的话)。

 @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;
    }
};