【问题标题】:Calculate image size based on Screen size in android根据android中的屏幕尺寸计算图像尺寸
【发布时间】:2012-11-11 04:49:20
【问题描述】:

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

身高:

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

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

宽度也一样:

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

当屏幕尺寸增加或减少时,这是计算图像尺寸的方法吗?我需要将动态图像准确地放置在主背景图像的矩形区域(棕色区域)上。

简而言之,我会得到图像 x,y position & height,width for 360X504.. 现在我需要计算 x,y & height,width for 320x480

【问题讨论】:

  • 您想在保持纵横比的同时调整大小,请参见此处:stackoverflow.com/questions/1558461/…
  • 对于 Android,我们需要关注密度因素。我的猜测是这个问题是由于没有考虑密度和所有..这个链接对我真的有用吗? @gordy
  • @Venky:你想要做什么,而 Android 不会自动为不同的屏幕尺寸和密度做些什么?我不完全理解你的问题。顺便说一句,5'x7' 是 5 英尺 x 7 英尺,如果你的意思是英寸,那么它应该是 5"x7"。
  • 我想我可能遗漏了一些东西。你为什么要关心实际尺寸?为什么不能只使用像素?如果我正在解决这个问题,我会创建一个带有背景图像的自定义视图和一个 setImage() 方法来添加您下载的图像。在 omMeasure() 中,以像素为单位获取视图的大小,并计算要放置的图像的顶部和左侧,作为视图大小的百分比。我错过了什么?
  • @Squonk 你说得对,它是 5"..

标签: android dynamic image-processing


【解决方案1】:

为什么不在 /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(); 

要获取显示大小,并且由于您现在知道显示信息,您可以通过名称(small.jpg、smaller.jpg)选择要为哪个 /drawable 元素充气,并使用小 case/switch 语句来处理此类屏幕中的奇数屏幕尺寸。这将让它一直工作并正确自动调整大小。

这会让人头疼,因为系统已经知道 dpi 和屏幕类别(“large”、“x-large”等),系统已经为您完成了艰苦的工作!

【讨论】:

  • OP 正在从服务器下载图像,因此不适用 /res/drawables 的不同密度文件夹。
【解决方案2】:

如果您可以预先定义布局中的位置,那么您可能可以根据配置创建不同的布局

  • ldpi
  • mdpi

并设置ImageViewscaleType 属性。

以后每当您从服务器获取图像时,只需将其设置为视图,它将自动管理缩放,包括设备 dpi。

【讨论】:

  • 事情是图像是动态填充的。我将得到 360X504 的图像 x、y 位置和高度、宽度。现在我需要计算 320x480 的 x、y 和高度、宽度
猜你喜欢
  • 2011-06-15
  • 1970-01-01
  • 2013-02-05
  • 2013-07-17
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
相关资源
最近更新 更多