获取postRotate的实际角度

时间:2012-11-22 18:35:43

标签: android

也许我会问一些明显的东西,但是我找不到解决方案,所以我有一个imageview,它是一个弩,我希望它拍摄到我在屏幕上触摸的地方,我使用postRotate旋转它触摸的地方的功能,问题是每次触摸它都会为旧的角度增加新的角度,依此类推。有一种方法可以获得ImageView的实际角度吗?

    int scrWidth  = getWindowManager().getDefaultDisplay().getWidth();
        int scrHeight = getWindowManager().getDefaultDisplay().getHeight();

        float x=event.getX();//capturamos x e y
        float y=event.getY();
        float i=0;


        if(y<(scrHeight/2)){
            float yf=(scrHeight/2)-y;//obtenemos la y respecto a la mitad de la pantalla 
            double alfa=Math.toDegrees(Math.atan2(yf, x));//encontramos el angulo para las x e y encontradas
            float beta= (float) alfa; //convertimos a float para rotar
            beta=beta+i;                
            matrix.postRotate(-beta, ballesta.getWidth()/2,ballesta.getHeight()/2); //primer valor angulo, segundo y tercero punto de ancla de la imagen
            ballesta.setImageMatrix(matrix);                
        }
        if(y>(scrHeight/2)){
            float yf=y-(scrHeight/2);//obtenemos la y respecto a la mitad de la pantalla
            double alfa=Math.toDegrees(Math.atan2(yf, x));//encontramos el angulo para las x e y encontradas
            float beta= (float) alfa; //convertimos a float para rotar
            beta=beta+i;
            matrix.postRotate(beta, ballesta.getWidth()/2,ballesta.getHeight()/2);
            ballesta.setImageMatrix(matrix);
        }

1 个答案:

答案 0 :(得分:0)

没关系,我已经找到了解决方案,而且我在我的问题中错过了信息(所有代码都在ontouch事件中)。 解决方案是在ontouch事件之外声明一个静态变量,然后我保持每次在该变量中旋转的角度,并且在事件开始时我旋转减去静态变量。不确定我是否非常清楚(我很困?P)。