美文网首页
View.setRotation导致内部坐标系旋转导致问题解决方

View.setRotation导致内部坐标系旋转导致问题解决方

作者: kongzue | 来源:发表于2019-10-18 15:26 被阅读0次

    问题描述

    使用方法 view.setRotation(float rotation) 方法旋转 view 导致其内部坐标系也发生旋转,再之后执行 其自身的 touchEvent 拖拽移动时出现极其鬼畜乱飘的问题,经查证,是 touchEvent中的 event.getX() 与 event.getY() 返回了旋转后坐标系的坐标导致,解决方案基本确定了采用转换坐标到旋转前的坐标系的解决方案。

    解决方案

    核心代码:

    private float[] coordinateTransformation(float[] xy, int r) {
        float[] result = new float[2];
        float x1 = xy[0];
        float y1 = xy[1];
        
        result[0] = (int) ((x1) * Math.cos(Math.PI / 180.0 * r) - (y1) * Math.sin(Math.PI / 180.0 * r));
        result[1] = (int) ((x1) * Math.sin(Math.PI / 180.0 * r) + (y1) * Math.cos(Math.PI / 180.0 * r));
        
        return result;
    }
    

    参数:(int[event.getX(),event.getY()] , rotation)
    int[event.getX(),event.getY()]:旋转后的错误坐标;
    rotation:旋转度数。

    返回,原坐标系x,y集合。

    解决完成。

    相关文章

      网友评论

          本文标题:View.setRotation导致内部坐标系旋转导致问题解决方

          本文链接:https://www.haomeiwen.com/subject/izgimctx.html