Android で 2D パズル ゲームを作成しており、デザインの決定についてコミュニティの意見を聞きたいと思っています。基本設計はこれです。2D グラフィックスがバックグラウンド スレッドで描画される SurfaceView があります。次に、サーフェス ビューをオーバーレイする RelativeLayout もあります。レイアウト .xml は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" >
<SurfaceView
android:id="@+id/game_surface"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<RelativeLayout
android:id="@+id/game_overlay"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
すべてのタッチ イベントは game_overlay によって受信され、必要に応じてゲーム スレッドにルーティングされます。LayoutInflater を使用してレイアウトをインフレートし、それらを game_overlay 内に配置してから、必要に応じて game_overlay をクリアします。私が物事を行う理由は、両方の長所を活かすことです。独自のカスタム ボタンをキャンバスに描画する必要はなく (リセット レベル ボタンのように)、強力な Android レイアウト機能をすべて活用できます。ただし、ゲームのレンダリングをバックグラウンドで実行し、そのスレッドを常に有効に保つことができます。
それでは、私の質問に移りましょう。以前にこのようなことを試したことがあれば、あなたの経験を聞きたいです。このようにビューを階層化するためにパフォーマンスのペナルティを支払うことを期待できますか? さらに重要なことに、そのパフォーマンス ヒットはアプリのフレーム レートに悪影響を及ぼしますか? あなたが見つけることができるこのアプローチで他の問題はありますか?