Androidでは、2つの画像をオーバーレイしてアニメーション化する方法を知っています。問題は、最初の画像の特定の場所にある2番目の画像をどのようにオーバーレイするかです。
例として、最初の画像は電源スイッチを備えたアプライアンスの画像であり、2番目の画像はアニメーション化されたときに点灯する電源LEDです。
電源スイッチを覆うように、オーバーレイで電源LEDの位置を指定する方法を教えてください。
Androidでは、2つの画像をオーバーレイしてアニメーション化する方法を知っています。問題は、最初の画像の特定の場所にある2番目の画像をどのようにオーバーレイするかです。
例として、最初の画像は電源スイッチを備えたアプライアンスの画像であり、2番目の画像はアニメーション化されたときに点灯する電源LEDです。
電源スイッチを覆うように、オーバーレイで電源LEDの位置を指定する方法を教えてください。
できることの 1 つは、両方の画像を 内に配置し、両方FrameLayout
の幅/高さを に設定することwrap_content
です。に最後に追加したFrameLayout
ものが一番上になります。次に、いくつかの方法のいずれかで、2 つの画像を個別に配置できます。
1)layout_gravity
両方のアイテムの をtop|left
に設定し、次にlayout_marginTop
とlayout_marginLeft
の左上隅を基準にして 2 つの画像を配置するように設定できFrameLayout
ます。
2) 画像 A の上に画像 B を中央に配置したい場合は、画像 A をlayout_gravity top|left
, layout_marginLeft
0, layout_marginTop
0 に設定layout_gravity
してから、画像 B を に設定しcenter
ます。このアプローチは、さまざまなデバイスでの実行に関して、もう少し堅牢です。マージンを使用して、画像 B を中央の位置からオフセットすることもできます。
この時点でアイデアが得られるはずです。layout_gravity
余白と組み合わせて、必要に応じて画像を配置できます。
いくつかの注意事項:
1) これは物事を進める上であまり効率的な方法ではありません。大きなレイアウトの 2 つの画像だけであれば、大したことはありません。ただし、レイアウトでこの手法を何度も実行すると、レンダリングのパフォーマンスが低下します。その場合は、代わりにカスタム ビューを作成することを検討してください。
layout_gravity
2)内に含まれる項目にを明示的に設定する必要がありFrameLayout
ます。そうしないと、子ビューの属性と属性FrameLayout
が無視されます。layout_marginTop
layout_marginLeft
最後に、これと同じトリックを で行うことができます。RelativeLayout
その属性を使用して、画像を相互に配置します。のようFrameLayout
に、最後にレイアウトに追加されたビューが他のビューの上に表示されます。