如何保持前景图像的宽高比?

时间:2012-08-14 21:45:35

标签: java android foreground

我目前有一个带背景和前景图像的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,每个图像在一个不同的可绘制文件夹中,和< strong> notlong 限定词。

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

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

仍然没有成功。

你知道如何获得这种效果吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

我不相信你可以改变前景或背景的比例类型。我建议的是:

  1. ImageView中添加额外FrameLayout作为背景,并使用srcscaleType属性处理图片及其缩放方式

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

  3. 如果圈子也需要缩放,那么1号是我的个人推荐。

答案 1 :(得分:2)

在FrameLayout中更改此属性:

android:foregroundGravity="center"

这会将前景drawable放在FrameLayout的中心,而不是改变它的大小。

"center|fill_horizontal"会将其置于中心并拉伸其宽度以填充FrameLayout宽度,这显然不是您想要的。