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_marginLeft0, layout_marginTop0 に設定layout_gravityしてから、画像 B を に設定しcenterます。このアプローチは、さまざまなデバイスでの実行に関して、もう少し堅牢です。マージンを使用して、画像 B を中央の位置からオフセットすることもできます。
この時点でアイデアが得られるはずです。layout_gravity余白と組み合わせて、必要に応じて画像を配置できます。
いくつかの注意事項:
1) これは物事を進める上であまり効率的な方法ではありません。大きなレイアウトの 2 つの画像だけであれば、大したことはありません。ただし、レイアウトでこの手法を何度も実行すると、レンダリングのパフォーマンスが低下します。その場合は、代わりにカスタム ビューを作成することを検討してください。
layout_gravity2)内に含まれる項目にを明示的に設定する必要がありFrameLayoutます。そうしないと、子ビューの属性と属性FrameLayoutが無視されます。layout_marginToplayout_marginLeft
最後に、これと同じトリックを で行うことができます。RelativeLayoutその属性を使用して、画像を相互に配置します。のようFrameLayoutに、最後にレイアウトに追加されたビューが他のビューの上に表示されます。