ICSを初めてロードしたときや、ESファイルエクスプローラーやApexランチャーなどのアプリで表示されるようなヘルプオーバーレイを作成したいと思っています(他にもありますが、今は考えられません)。これは、一方のビューがもう一方のビューの上にある相対的なレイアウトですか?そのようなことをするためのサンプルコードを見つけることができませんでした。誰かがこれがどのように行われるか知っているか、何かアイデアがありますか?
ICSを初めてロードしたときや、ESファイルエクスプローラーやApexランチャーなどのアプリで表示されるようなヘルプオーバーレイを作成したいと思っています(他にもありますが、今は考えられません)。これは、一方のビューがもう一方のビューの上にある相対的なレイアウトですか?そのようなことをするためのサンプルコードを見つけることができませんでした。誰かがこれがどのように行われるか知っているか、何かアイデアがありますか?
通常は を呼び出すとしますsetContentView(R.layout.main)
が、初回実行時にはこのオーバーレイが必要になるとします。
ステップ #1: FrameLayout
Java コードで を作成し、それを に渡しsetContentView()
ます。
ステップ #2: を使用LayoutInflater
して膨らませR.layout.main
ますFrameLayout
。
ステップ #3: を使用LayoutInflater
して、オーバーレイを に膨張させFrameLayout
ます。
ステップ #4: ユーザーがボタン (またはその他のもの) をタップしてオーバーレイを閉じると、 を呼び出しremoveView()
て からオーバーレイを削除しFrameLayout
ます。
オーバーレイは の後の子であるためFrameLayout
、 のコンテンツの上に浮かびR.layout.main
ます。
あなたはそれをかなり早く行うことができます。たとえば、ヘルプ情報に対応するアルファ付きの画像を配置する LinearLayout と、オーバーレイのように何を描画するかを追加します。アクティビティの xml で、このレイアウトを RelativeLayout に配置した後、Gone 可視性を使用してアクティビティをレイアウトします。ヘルプ情報を描画したい場合は、この可視性を可視に設定するだけです。
ご不明な点がございましたら、お気軽にお問い合わせください。
現在のアクティビティの上にオーバーレイ レイアウトをプログラムで表示する方法については、私の別の回答を参照してください。アクティビティの layout.xml は、オーバーレイ スキンについて何も知る必要はありません。オーバーレイを半透明に配置したり、画面の一部のみをカバーしたり、1 つ以上のテキストビューとボタンをその上に配置したりできます... プログラムでボタンをオーバーレイする方法は?
私の目標は、メイン アクティビティがオーバーレイ スキンを認識せず、オーバーレイが行き来し、多くの異なるオーバーレイがあり、それでもオーバーレイ 1.xml テキスト ファイルをテンプレートとして使用でき、コンテンツをプログラムで更新する必要があることでした。私は、CommonsWare が私の投稿で実際のプログラム コードを示していることを教えてくれたのとほぼ同じことを行います。
免責事項:OP「ご意見ありがとうございます。これが私が描いた方法です。以下の回答にクレジットを与える必要があります」コメントは私の回答ではなく、CommonsWareの回答を意味します。Stackoverflow は投稿の順序を変更しました。