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