2012-11-22 103 views
0

也許我想問一些明顯的問題,但我找不到解決方案,所以我有一個imageview至極是一個弩,我希望它射擊到我在屏幕上觸摸的地方,我使用postRotate根據觸摸位置的功能旋轉它,問題是每次觸摸它都會將新角度添加到舊的角度,依此類推。有一種方法可以獲得ImageView的實際角度?獲取實際角度postrotate

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

回答

0

沒關係,我媒體鏈接找到了解決辦法,再加上我在我的問題錯過信息(所有的代碼是ontouch事件的內部)。 解決的辦法是在ontouch事件之外聲明一個靜態變量,然後我保持每次在該變量中旋轉的角度,並且在旋轉的事件開始時減去靜態變量。不知道我是否很清楚(我很睏倦:P)。