1

我目前有一个带有背景和前景图像的 FrameLayout。前景图像使用 alpha 具有透明度,以便看穿并观看下面的背景。

前景图像需要保持与原始位图相同的纵横比,因为它由黑屏中的透明圆圈组成,很像望远镜效果。我正在寻找任何分辨率兼容性。

不幸的是,我无法做到这一点,并且前景总是显示它的圆圈被拉伸。

这是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"
>

我还试图解决我的问题,提供两个不同的图像,一个具有 4:3 的比例,另一个具有 16:9 的比例,每个图像都位于具有longnotlong限定符的不同可绘制文件夹中。

/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在您的背景中放置一个额外的FrameLayout作为您的背景,并使用srcscaleType属性来处理图像及其缩放方式。

  2. 由于它是一个简单的黑色背景,只有一个透明的圆圈,您可以将其转换为 9-patch,确保围绕圆圈均匀拉伸。圆圈不会缩放,但黑色区域会延伸以填充视图。

如果圈子也需要扩展,第 1 项是我个人的建议。

于 2012-08-14T21:51:28.677 回答