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

问题描述:

我目前有一个带有背景和前景图像的FrameLayout。前景图像具有使用透明度的透明度,以便透视并观看下面的背景。如何保持前景图像的宽高比?

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

不幸的是,我无法做到这一点的,而前景显示其总圈拉伸。

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

我也试图解决我的问题提供两个diferent图像,一个具有4:3的比例,而另一个具有16:9的比例,每一个与所述notlong限定符不同的可绘制的文件夹。

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

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

仍然没有成功。

你有如何获得这种效果的任何想法?

谢谢你的时间。

我不相信你可以改变无论是前台或后台的规模类型。我会建议是要么:

  1. 将在您的FrameLayout额外ImageView作为你的背景,并使用srcscaleType属性来处理图像,以及如何扩展。

  2. 因为它是一个简单的黑色背景,只是一个透明圈,你可以转换到这9补丁,确保均匀地伸展它绕了一圈。圆圈不会缩放,但黑色区域将延伸以填充视图。

如果圆圈也需要缩放,我个人建议使用1号。

+0

好像我无法使用ImageView作为全屏幕的前景,我并不十分关注背景。我会尝试9补丁的方式,并告诉它如何去。 – 2012-08-14 22:54:22

+1

为什么你不能做第一个?只需将它作为FrameLayout中的最后一项放置,它就会出现在所有其他视图的顶部。 – kcoppock 2012-08-14 23:06:32

+1

使用新的ImageView作为FrameLayout的最后一项是它如何解决。非常感谢您的帮助。我很感激。 – 2012-08-14 23:23:43

更改此属性在您的FrameLayout:

android:foregroundGravity="center" 

这将放置在的FrameLayout中心的前景绘制,不改变它的大小。

"center|fill_horizontal"将它放在*,伸展其宽度填充FrameLayout宽度,这显然不是你想要的。

+0

问题在于我对所有可能的分辨率都有相同的位图,只使用* center *限定符会在较大分辨率屏幕的中心显示小尺寸的前景图像。我希望图像适合屏幕宽度和相同的宽高比。 – 2012-08-14 22:42:41

+0

然后,如果前景图像是一个圆圈(并且假设它是一个可绘制的方块),请尝试'center | fill_horizo​​ntal | fill_vertical'。 – iTurki 2012-08-14 22:49:07

+0

作为一个方形drawable使填充水平和垂直伸展正方形和其中的圆圈以匹配屏幕比例。不幸的是,这个圆形失去了它的形状。 – 2012-08-14 22:59:53