6


3

SurfaceViewでAndroidレイアウトをオーバーレイする

Googleが提供するLunar Landerサンプルに似たSurfaceViewを使用して、シンプルなAndroidゲームを設計しています。 ハイスコ​​ア、メッセージ、メニューなどのさまざまなものが画面にポップアップ表示され、表面ビューがまだバックグラウンドにあるようにします。

問題は、「ポップアップ」に画像、テキストボックスなどの多くのデザイン要素を含めることです。 XMLでレイアウトを作成して必要なポップアップをデザインし、それを個々の要素をコードで1つずつ作成してすべてキャンバスにペイントするのではなく、表面ビュー上に1つのオブジェクトとして表示する方法はありますか?

画面の横からポップアップをアニメートしたいので、すべてのオブジェクトがお互いの関係を認識できるようにXMLでレイアウトを設計し、そのレイアウトを1つのオブジェクトとしてアニメートするとよいでしょう。

それは非常に単純なものとして私を襲いますが、私はそれを達成する方法を見つけることができないようです。

2 回答


6


コードまたはXMLレイアウトでSurfaceViewの上に要素をオーバーレイできます。


そしてあなたの活動で:

TextView myText = new TextView(this);
myText.setText("Something");
addContentView(myText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

ただし、パフォーマンスの問題については知りません。


3


これを行う簡単な方法は、ポップアップインターフェイスを別のアクティビティとして作成することです。 次に、マニフェストファイルで、Dialogテーマなどの透明な背景テーマを指定します。

APIデモのCustomDialog、Translucent、TranslucientBlurのサンプルをご覧ください。 彼らはそのような活動を作成します。 基礎となる活動が表面にあるという事実は何も変えてはいけません。