Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio:如何让ImageView沿旋转方向移动_Java_Math_Android Studio - Fatal编程技术网

Java Android Studio:如何让ImageView沿旋转方向移动

Java Android Studio:如何让ImageView沿旋转方向移动,java,math,android-studio,Java,Math,Android Studio,这个问题已经在我脑海中停留了一段时间,我想知道我是否错过了一个方法或什么。我试图弄清楚如何在Android Studio(IDE)中让imageview沿着其旋转方向移动,虽然这张图片可能最好地解释了我的问题,但我通过一些链接找到了解决方法,并制定了自己的解决方案 首先,我使用图像的当前旋转和一些三角计算图像的x和y的加/减量。两者之间的比率是产生沿该方向移动效果的因素 final double rise = Math.toDegrees( Math.sin(toRadians(YOU.get

这个问题已经在我脑海中停留了一段时间,我想知道我是否错过了一个方法或什么。我试图弄清楚如何在Android Studio(IDE)中让imageview沿着其旋转方向移动,虽然这张图片可能最好地解释了我的问题,但我通过一些链接找到了解决方法,并制定了自己的解决方案

首先,我使用图像的当前旋转和一些三角计算图像的x和y的加/减量。两者之间的比率是产生沿该方向移动效果的因素

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

    }
是加/减x和y的代码

另外,在
rise
run
的声明中,变量
SPEED
被设置为0.02(此处未显示),因为我通过一个循环添加了x和y,使它看起来更平滑。这里的数字越大,它走得越远(每次u加),但它不影响角度向前的准确性。尽管我建议至少在那里放一个填充号码

这是我的原始代码,放在一个地方,以备您需要

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

    }
public void moveloop(){
最终双上升=Math.toDegrees(Math.sin(toRadians(YOU.getRotation()))*速度;
最后一次双跑=Math.toDegrees(Math.cos(toRadians(YOU.getRotation()))*速度;
(新线程(新可运行()
{
@凌驾
公开募捐
{

对于(int x=0;xCan你能展示一下你试过什么吗?我真的不知道从哪里开始,我在谷歌上搜索了一下,然后堆满了“如何让图像视图沿旋转方向移动”但所有这些都是关于旋转或不回答我的问题如果这有帮助我想使用while循环这可能会有帮助,我建议检查那里提供的链接。你链接到我的问题几乎是同一个问题,但如果你仔细看,他们不会得出有限的答案/结论:/
 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(); 

    }