我正在制作一个小游戏,目前它的工作方式有点被动(它只在用户按下按钮时运行并执行操作)。
但我想在它上面添加动画,所以我有这种层,其中底层是带有按钮和文本的普通视图,在它上面我有一种表面视图,运行带有线程的画布动画。
我还希望制作这两个单独的 java 文件,因为我知道每个活动一次代表一个视图,我可以如何制作我的底视图,调用在他之上添加表面视图并让他将自己更新为他应该,而底部视图仍然是被动的?
我正在制作一个小游戏,目前它的工作方式有点被动(它只在用户按下按钮时运行并执行操作)。
但我想在它上面添加动画,所以我有这种层,其中底层是带有按钮和文本的普通视图,在它上面我有一种表面视图,运行带有线程的画布动画。
我还希望制作这两个单独的 java 文件,因为我知道每个活动一次代表一个视图,我可以如何制作我的底视图,调用在他之上添加表面视图并让他将自己更新为他应该,而底部视图仍然是被动的?
一个 Activity 代表一个 View 是对的,但这并不意味着您不能堆叠它们。您可以使用 aweight_sum
为 1 的 LinearLayout,添加权重为 0.8 的 SurfaceView,添加权重为 0.2 的 BottomView。这将允许您单独处理它们
Activity 不是 View,而是包含 View 的集合。您需要的是一个单一的活动,但将布局分成两个部分。然后,您可以说有一个包含 SurfaceView 的 LinearLayout 和下面的另一个布局容器,其中包含您的按钮和文本。然后,您应该能够独立于其下方的容器为 SurfaceView 设置动画,这似乎是您想要做的。
例如,类似的东西;
<LinearLayout android:id="@+id/parent">
<SurfaceView android:id="@+id/surface">
</SurfaceView>
<LinearLayout android:id="@+id/controls">
<!-- Buttons and text -->
</LinearLayout>
</LinearLayout>
然后在 Activity 的 onCreate() 方法中,您将:
setContentView(R.layout.main_layout);
surfaceView = findViewById(R.id.surfaceView);
// Now you should be able to animate the surfaceView independent to the rest of the elements in the activity
surfaceView = findViewById(R.id.controls);
// Rest of initialization code.