1

現在、背景と前景の画像を持つ FrameLayout があります。前景の画像は、アルファを使用して透過性を持たせ、下の背景を透かして見ることができます。

前景イメージは、スパイグラス効果のように、黒い画面の透明な円で構成されているため、元のビットマップと同じ縦横比を維持する必要があります。解像度の互換性を探しています。

残念ながら、私はこれを達成することができず、前景は常に円が引き伸ばされていることを示しています。

これはXMLコードの一部です。

<FrameLayout
    android:id="@+id/layout_parent"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:foreground="@drawable/foreground"
    android:foregroundGravity="center|fill_horizontal"
>

また、1 つは 4:3 の比率で、もう 1 つは 16:9 の比率の 2 つの異なる画像を提供する問題を解決しようとします

/drawable-long/foreground.png (16:9 aspect)

/drawable-notlong/foreground.png (4:3 aspect)

まだ成功していません。

この効果を得る方法について何か考えはありますか?

御時間ありがとうございます。

4

2 に答える 2

4

FrameLayout でこの属性を変更します。

android:foregroundGravity="center"

これにより、フォアグラウンド ドローアブルが FrameLayout の中央に配置され、サイズは変更されません。

"center|fill_horizontal"それを中央に配置し、その幅を FrameLayout の幅いっぱいに広げますが、これは明らかにあなたが望むものではありません

于 2012-08-14T21:58:31.733 に答える
2

前景または背景のスケール タイプを変更できるとは思えません。私がお勧めするのは、次のいずれかです。

  1. 背景として機能する追加要素ImageViewを に配置し、および属性を使用して画像とその拡大縮小を処理します。FrameLayoutsrcscaleType

  2. これは単純な黒の背景に透明な円があるだけなので、これを 9 パッチに変換して、円の周りに均等に引き延ばすことができます。円は拡大縮小されませんが、黒い領域が拡大してビューを埋めます。

円も同様にスケーリングする必要がある場合、1 番が個人的な推奨事項です。

于 2012-08-14T21:51:28.677 に答える