用一根手指旋转视图



我想根据用户手指的运动以任意角度旋转视图。用户可以像手势检测器一样通过在屏幕上拖动手指来旋转视图。给我点时间,我好开始工作。它应该在一个手指中工作,因为我已经实现了两个手指缩放

函数处理单指旋转,主要思想是计算视图的中心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;
    }
};

最新更新