私は同様の問題に直面しました.クライアントは、オーバーレイの吹き出しで説明されているボタンを除いて、画面全体を白くする必要があるアプリケーションのウォークスルーを望んでいました.
幸いなことに、あなたのレイアウトは、私が作業しなければならなかったレイアウトほど複雑ではありません:)
これで、透明効果を 2 つの方法で取得できます。背景を白にしてすべてのビューの setAlpha() メソッドを呼び出す方法と、半透明の白いオーバーレイを作成する方法です。
オーバーレイを使用する場合は、オーバーレイを介して不透明なボタンを表示する方法を見つける必要があります。これは少し複雑になる可能性があります。最初のオプションを使用する場合は、不透明なビューで setAlpha(1) を表示するだけです。
setAlpha() メソッドは api バージョン 11+ からのみ使用できるため、それ以前のバージョンをターゲットにする場合は、もう少し複雑な方法で行う必要がある場合があります。
ハニカム前のビューにアルファを設定する例:
ボタンのレイアウト (好きなように作成してください。ループできるように類似させてください):
<LinearLayout
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:tag="image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/tile"/>
<TextView
android:tag="text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:text="button1"/>
</LinearLayout>
プログラムで、ボタンを透明にしたい場合:
LinearLayout l = (LinearLayout) findViewById(R.id.button1);
((ImageView)l.findViewWithTag("image")).setAlpha(0x7F);
((TextView)l.findViewWithTag("text")).setTextColor(0x7F000000);
透明効果を作成する方法を決定したら、オーバーレイ テキスト/バブルを表示する方法を決定する必要があります。これをレイアウト全体の上にある別のレイヤーに配置して、新しいビューの影響を受けないようにすることをお勧めします。
これを実現する 1 つの方法は、ルート レイアウト要素を FrameLayout に変更し、これを作成/表示することです。例えば:
<FrameLayout background="#FFFF"> <!-- white background, just in case -->
<LinearLayout>
<!-- the rest of your layout -->
</LinearLayout>
<LinearLayout visibility="gone"> <!-- this will be your overlay view -->
<ImageView /> <!-- the arrow/ring -->
<TextView /> <!-- the description -->
</LinearLayout>
</FrameLayout>
イントロダクションが表示される場合、非表示のオーバーレイ ビューの位置を説明するテーブル アイテムの位置に設定し、テキストを適切な文字列/リソースに変更してビューを表示します。
紹介が終わったら、すべてのボタンのアルファ値をリセットし、オーバーレイの可視性を再び非表示に設定します。