水平移动<imageview>按<按钮>

时间:2016-09-25 11:45:18

标签: java android button imageview

我正在使用Java和XML在AndroidStudio中开发一个太空入侵者(没有Libgdx,Gamemaker ......)我有一个问题...我希望你会帮助我。

首先,这是我的app design.  enter image description here

如您所见,在RelativeLayout的底部,您可以找到一个宇宙飞船和两个按钮(左侧一个,右侧另一个按钮)。按钮是不可见的。左键有&#34; control_izquierda&#34;作为id和右键,&#34; control_derecha&#34;。

当你按下左按钮时,宇宙飞船向右移动,当你按下右键时,宇宙飞船向左移动(这很有效)。

我的问题当按下其中一个按钮时,它是关于移动飞船的(当我按住按钮时,飞船应移动)。我尝试了不同的尝试方法,但我无法找到正确的解决方案。

这是我的 java代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void actualizaPosicion(View v) {
        switch (v.getId()) {
            case R.id.control_derecha:
                findViewById(R.id.nave).setX(findViewById(R.id.nave).getX() - 30);
                break;
            case R.id.control_izquierda:
                findViewById(R.id.nave).setX(findViewById(R.id.nave).getX() + 30);
                break;
        }
    }

}

当点击其中一个按钮时,我的XML调用&#34; actualizaPosicion&#34;方法。如果单击了右键或左键,然后上传了太空飞船的位置(ID为&#34; nave&#34;),这个方法会检测到,当按钮按住,飞船移动,按钮时我想要不再按,宇宙飞船就停了。

我很感激帮助。

非常感谢你!

1 个答案:

答案 0 :(得分:0)

您需要的是动画师处理动画Click here to view api docs

了解基本流程后,您只需创建具有不同值的xml文件(在您的情况下为翻译)。因此,在单击java代码的按钮中,您只需启动此动画xml文件。

//示例xml

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

//使用的示例java代码

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

希望这会有所帮助。如果它改变了什么,请告诉我。

编辑:我从评论中了解到,您正在寻找一个更复杂的解决方案,涉及创建游戏,而不仅仅是简单的动画。

所以我想与你分享一个资源,这肯定会帮助你完成这个和未来的项目。使用答案来解释游戏开发的每个方面是不可能的。

Click here for full detailed android space game tutorial