94

ICSを初めてロードしたときや、ESファイルエクスプローラーやApexランチャーなどのアプリで表示されるようなヘルプオーバーレイを作成したいと思っています(他にもありますが、今は考えられません)。これは、一方のビューがもう一方のビューの上にある相対的なレイアウトですか?そのようなことをするためのサンプルコードを見つけることができませんでした。誰かがこれがどのように行われるか知っているか、何かアイデアがありますか?

ESファイルエクスプローラー ESファイルエクスプローラー

4

4 に答える 4

85

通常は を呼び出すとしますsetContentView(R.layout.main)が、初回実行時にはこのオーバーレイが必要になるとします。

ステップ #1: FrameLayoutJava コードで を作成し、それを に渡しsetContentView()ます。

ステップ #2: を使用LayoutInflaterして膨らませR.layout.mainますFrameLayout

ステップ #3: を使用LayoutInflaterして、オーバーレイを に膨張させFrameLayoutます。

ステップ #4: ユーザーがボタン (またはその他のもの) をタップしてオーバーレイを閉じると、 を呼び出しremoveView()て からオーバーレイを削除しFrameLayoutます。

オーバーレイは の後の子であるためFrameLayout、 のコンテンツの上に浮かびR.layout.mainます。

于 2012-04-18T19:59:34.357 に答える
4

あなたはそれをかなり早く行うことができます。たとえば、ヘルプ情報に対応するアルファ付きの画像を配置する LinearLayout と、オーバーレイのように何を描画するかを追加します。アクティビティの xml で、このレイアウトを RelativeLayout に配置した後、Gone 可視性を使用してアクティビティをレイアウトします。ヘルプ情報を描画したい場合は、この可視性を可視に設定するだけです。

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-04-18T19:59:00.640 に答える
1

現在のアクティビティの上にオーバーレイ レイアウトをプログラムで表示する方法については、私の別の回答を参照してください。アクティビティの layout.xml は、オーバーレイ スキンについて何も知る必要はありません。オーバーレイを半透明に配置したり、画面の一部のみをカバーしたり、1 つ以上のテキストビューとボタンをその上に配置したりできます... プログラムでボタンをオーバーレイする方法は?

  • res/layout/paused.xml RelativeLayout テンプレートを作成するか、トップレベルのレイアウトを使用します
  • オーバーレイ スキンを表示する関数を作成する
  • 重要なのは、layout.xml へのハンドルを取得し、LayoutInflater クラスを使用して xml を解析してオブジェクトを表示し、オーバーレイ ビューを現在のレイアウト構造に追加することです。
  • 私の例では、タイマーを使用してオーバーレイ オブジェクトをビュー構造から完全に削除することで破棄しています。これはおそらく、痕跡を残さずに取り除くためにも必要なことです。

私の目標は、メイン アクティビティがオーバーレイ スキンを認識せず、オーバーレイが行き来し、多くの異なるオーバーレイがあり、それでもオーバーレイ 1.xml テキスト ファイルをテンプレートとして使用でき、コンテンツをプログラムで更新する必要があることでした。私は、CommonsWare が私の投稿で実際のプログラム コードを示していることを教えてくれたのとほぼ同じことを行います。

免責事項:OP「ご意見ありがとうございます。これが私が描いた方法です。以下の回答にクレジットを与える必要があります」コメントは私の回答ではなく、CommonsWareの回答を意味します。Stackoverflow は投稿の順序を変更しました。

于 2013-01-12T19:03:09.273 に答える