2012-11-11 79 views
2

我想根据屏幕尺寸计算图像高度&宽度..我从后端获取5'x 7'尺寸的图像,以便将像素乘以72 i有360 X 504尺寸的图像。对于360 X 504,我的动态透明矩形区域将出现在(1.223')x(1.179')处,即88.05 x 84.88。现在对于屏幕的尺寸为320×480,我想计算我动态矩形区域的高度&宽度。对于此我使用以下计算:基于Android屏幕尺寸计算图像大小

对于高度:

新的高度=(84.88/504)* 480 = 80.83

其中84.88 - 矩形图像的高度,504 - 屏幕大小的高度,480 - 新屏幕大小的高度。

的宽度

一样:

新的宽度=(88.05/360)* 320 = 78.26

这是计算图像大小的方式,当屏幕尺寸的增大或减小,我需要把我的动态?图像正好在主背景图像的矩形区域(褐色区域)。

请让我知道是否需要任何进一步的细节。

在短:

我将获得的图像x,y位置&高度,宽度为360X504。现在我需要计算X,Y &高度,宽度小320x480

enter image description here

+0

你想同时保持纵横比来调整,在这里看到: http://stackoverflow.com/questions/1558461/maintain-the-aspect-ratio-of-an-image – gordy

+0

在Android中的情​​况下,我们需要专注于密度因子。我的猜测是,这个问题是由于没有考虑密度和所有..这个链接对我来说真的很有用吗? @gordy – Venky

+0

@Venky:你想要做什么,Android不会自动为不同的屏幕尺寸和密度做什么?我不完全理解你的问题。顺便说一句,5'x7'是5英尺x7英尺,如果你是英寸那么它应该是5“x7”。 – Squonk

回答

2

为什么不将它们预先配置在/ drawables/ldpi中?

这样,当你想膨胀按钮,它会自动发生。

您还可以使用:

API3 +

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

API1 +(虽然现在在新的API不建议使用)

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 

抢显示器尺寸既然你现在知道的显示信息,你可以用一个小的case/switch语句来选择你想要通过名称(small.jpg,smaller.jpg)膨胀的哪个/可绘制元素,以处理该分类中的奇怪屏幕大小屏幕。这会使其始终工作并正确自动调整大小。

由于系统已经知道dpi和屏幕类(“大”,“X大”等),所以这会带来一些头痛,系统为您做了很多工作!

+0

OP正在从服务器上下载图片,所以使用'/ res/drawables'不同密度的文件夹不适用。 – Squonk

1

如果你可以预先定义在布局中的位置,那么你大概可以箱子不同的布局,每个配置

  • LDPI
  • MDPI

,并设置scaleType财产的ImageView

然后,无论何时从服务器获取图像时,只需将其设置为视图,它就会自动管理包含设备dpi的缩放比例。

+1

Thing是图像动态填充..我将得到图像x,y位置和高度,宽度为360X504 ..现在我需要计算x,y和高度,宽度为320x480 – Venky