2015-07-11 67 views
0

這個問題一直困在我的腦海裏,而且我想知道如果我錯過了某種方法或其他東西。我試圖弄清楚我如何獲得Android Studio(IDE)中的imageview可以最大限度地解釋我的問題enter image description hereAndroid Studio:如何讓ImageView在旋轉方向上移動

+0

你能請出示你嘗試過什麼? – Ekin

+0

我誠實地不知道從哪裏開始,iGoogle使用和stackoverflowed「如何讓imageview在旋轉方向移動」和變化,但所有出現的是旋轉的東西或不會影響我的問題 – Mazino

+0

如果它可以幫助即時考慮使用一段時間循環 – Mazino

回答

0

所以我發現如何在一些鏈接的幫助下做到這一點,我制定了自己的解決方案。

首先,我計算了多少我加入/減去圖像的x和y使用其當前旋轉與一些Trig。兩者之間的比例是什麼給了朝着這個方向移動的效果。

final double rise = Math.toDegrees( Math.sin(toRadians(YOU.getRotation())) )*SPEED; 
final double run = Math.toDegrees( Math.cos(toRadians(YOU.getRotation())) )*SPEED; 

然後,我用一個定時循環,添加一組X和Y

(new Thread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 

       for (int x=0; x<600; x++) { 
        try { 
         Thread.sleep(6); 
         runOnUiThread(new Runnable() thread 
         { 

          @Override 
          public void run() { 
           YOU.setX((float) (YOU.getX() + run)); //pay attention here 
           YOU.setY((float) (YOU.getY() + rise));//pay attention here 

          } 
         }); 
        } catch (InterruptedException e) { 
         // ooops 
        } 
       } 
      } 
     })).start(); 

    } 

注意我是如何使用與一羣其他代碼迴路,應該注意的是,這個心不是neccesary,但我用它來滿足我的特定需求。你可以把一個while循環,而不是一個for循環如果u希望,但是這部分

YOU.setX((float) (YOU.getX() + run)); 
YOU.setY((float) (YOU.getY() + rise)); 

是指添加/減去你的X和Y的代碼。

而且,在riserun聲明的變量SPEED爲0.02(這裏沒有顯示),因爲我通過一個循環,使它看起來更平滑添加x和y。數字越大,走得越遠(每增加一次),但它不會影響角度前進的準確性。儘管我會推薦在那裏至少填寫一個填充數字。

這是我的原始代碼全部在一個地方,以防萬一你需要它。

public void moveloop(){ 



     final double rise = Math.toDegrees( Math.sin(toRadians(YOU.getRotation())) )*SPEED; 
     final double run = Math.toDegrees( Math.cos(toRadians(YOU.getRotation())) )*SPEED; 

     (new Thread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 

       for (int x=0; x<600; x++) { 
        try { 
         Thread.sleep(6); 
         runOnUiThread(new Runnable() thread 
         { 

          @Override 
          public void run() { 
           YOU.setX((float) (YOU.getX() + run)); 
           YOU.setY((float) (YOU.getY() + rise)); 

          } 
         }); 
        } catch (InterruptedException e) { 
         // ooops 
        } 
       } 
      } 
     })).start(); 

    } 

幫助鏈接:

https://math.stackexchange.com/questions/142073/calculate-new-graph-point-with-coordinate-and-angle

Run loop every second java

相關問題