2015-07-11 205 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

相关问题