游戏开发 - 如何?

时间:2018-02-15 16:13:08

标签: java android

我正在创建一个游戏,我在屏幕顶部分配了三个(球)图像视图,并为它们编写动画。球从顶部向下延伸到底部,但我希望屏幕顶部的球不会在动画开始时显示......有什么建议吗?

以下是相关的活动代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    tools:context="com.example.hp.colorspoof.MainActivity">

    <!-- ball imageviews -->
    <ImageView
        android:id="@+id/ball1"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="left"
        android:layout_marginLeft="40dp"
        app:srcCompat="@drawable/ball_0" />

    <ImageView
        android:id="@+id/ball2"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center_horizontal"
        app:srcCompat="@drawable/row2_2" />

    <ImageView
        android:id="@+id/ball3"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="right"
        android:layout_marginRight="40dp"
        app:srcCompat="@drawable/row3_1" />
</FrameLayout>

这是我的XML:

{{1}}

1 个答案:

答案 0 :(得分:0)

以下是您要执行的操作的简单未经测试的实现。遗憾的是,我不再拥有编程Android设置的环境,因此我无法为您测试代码,但这应该可行。

请注意,我使用了负边距,因为这是实现它的最简单方法,但它不一定是实现它的最佳方式。有关详细信息,请参阅此处:Is it a bad practice to use negative margins in Android?

使用您提供的内容提供以下XML中的更改摘要:

  1. 我提供了一个RelativeLayout来包含你的游戏区域。通常,最好在顶层包含FrameLayout,然后在其下方使用RelativeLayout或LinearLayout来包含需要操作的视图。 RelativeLayout和LinearLayout提供了相对于彼此放置视图的良好方法。还有一种叫做ConstraintLayout的新型布局,我个人并不熟悉,但您可能需要查看而不是RelativeLayout。点击此处:What are the differences between LinearLayout, RelativeLayout, and AbsoluteLayout?
  2. 我删除了android:layout_gravity语句。你不需要那些有RelativeLayout的人。
  3. 我利用android:layout_alignParentTopandroid:layout_marginTop将球放在布局顶部的正上方。
  4. 我利用android:layout_marginLeftandroid:layout_centerHorizontalandroid:layout_marginRight将球水平放置在屏幕上。
  5. 下面的XML:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFFF"
        tools:context="com.example.hp.colorspoof.MainActivity">
    
        <RelativeLayout
            android:id="@+id/play_area"
            android:layout_width="match_parent"
            android:layout_height"match_parent">
    
            <!-- ball imageviews -->
            <ImageView
                android:id="@+id/ball1"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_alignParentTop="true"
                android:layout_marginTop="-30dp"
                android:layout_marginLeft="40dp"
                app:srcCompat="@drawable/ball_0" />
    
            <ImageView
                android:id="@+id/ball2"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="-30dp"
                app:srcCompat="@drawable/row2_2" />
    
            <ImageView
                android:id="@+id/ball3"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:layout_marginTop="-30dp"
                android:layout_marginRight="40dp"
                app:srcCompat="@drawable/row3_1" />
    
        </RelativeLayout>
    
    </FrameLayout>