android ImageView单指旋转

android ImageView单指旋转,android,rotation,Android,Rotation,我看了很多帖子,但都找不到答案。 我想用另一个位于根图像下方的小图像旋转根图像 当旋转开始工作时,但我第一次按下它时,由于math.tan()的原因,它跳到了45度,我想我有一个计算问题 rotateImage.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { final int action = Mot

我看了很多帖子,但都找不到答案。 我想用另一个位于根图像下方的小图像旋转根图像

当旋转开始工作时,但我第一次按下它时,由于math.tan()的原因,它跳到了45度,我想我有一个计算问题

       rotateImage.setOnTouchListener(new OnTouchListener() {

    @Override

public boolean onTouch(View view, MotionEvent event) {

final int action = MotionEventCompat.getActionMasked(event);

        switch (action) {
        case MotionEvent.ACTION_UP:
        break;
        case MotionEvent.ACTION_DOWN:

        rotateX = event.getRawX() - rotateImage.getWidth() / 2;
        rotateY = event.getRawY() - rotateImage.getHeight() / 2;


        break;

        case MotionEvent.ACTION_MOVE:

        float angle = (float) Math.toDegrees(Math.atan2(event.getRawY() - rotateY, event.getRawX() - rotateX));

        if (angle < 0){
        angle += 360;
        }

        mBinding.getRoot().setRotation(angle);


        }

        return true;
        }
        });
rotateImage.setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(视图、运动事件){
final int action=MotionEventCompat.getActionMasked(事件);
开关(动作){
case MotionEvent.ACTION\u UP:
打破
case MotionEvent.ACTION\u DOWN:
rotateX=event.getRawX()-rotateImage.getWidth()/2;
rotateY=event.getRawY()-rotateImage.getHeight()/2;
打破
case MotionEvent.ACTION\u移动:
浮点角度=(float)Math.toDegrees(Math.atan2(event.getRawY()-rotateY,event.getRawX()-rotateX));
如果(角度<0){
角度+=360;
}
mBinding.getRoot().setRotation(角度);
}
返回true;
}
});

请指教。

我认为这个图书馆可以帮助你。

我认为这个图书馆对你有很大帮助。请看一看。很好的参考资料!!!谢谢发现了与答案类似的问题。这里有一个图书馆,可以满足你的需要。