0

Androidでは、2つの画像をオーバーレイしてアニメーション化する方法を知っています。問題は、最初の画像の特定の場所にある2番目の画像をどのようにオーバーレイするかです。

例として、最初の画像は電源スイッチを備えたアプライアンスの画像であり、2番目の画像はアニメーション化されたときに点灯する電源LEDです。

電源スイッチを覆うように、オーバーレイで電源LEDの位置を指定する方法を教えてください。

4

1 に答える 1

2

できることの 1 つは、両方の画像を 内に配置し、両方FrameLayoutの幅/高さを に設定することwrap_contentです。に最後に追加したFrameLayoutものが一番上になります。次に、いくつかの方法のいずれかで、2 つの画像を個別に配置できます。

1)layout_gravity両方のアイテムの をtop|leftに設定し、次にlayout_marginToplayout_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に、最後にレイアウトに追加されたビューが他のビューの上に表示されます。

于 2012-07-05T23:34:47.427 に答える