Android-重新调整图像大小以匹配屏幕高度

时间:2012-05-25 20:25:23

标签: android image resize background-image relativelayout

在我的应用程序中,对于相对布局的背景,我有一个非常大的网格壁纸(比任何手机/桌面屏幕都大)。所以,我想知道而不是让android重新调整它并使它看起来很糟糕,我可以自己调整大小。我想要做的是调整图像的大小(垂直和水平,以使其看起来不错),直到图像和屏幕的高度匹配。

谢谢,感谢所有帮助 - Lijap

3 个答案:

答案 0 :(得分:2)

解决方案就是Google为此投入了大量精力。

基本上,您应为每个目标尺寸/布局创建不同的尺寸。

这在Google Dev Guide documents for Supporting Multiple Screens

中有广泛的解释(比我能给出的要好得多)

从该页面开始:

  

屏幕尺寸

     

实际物理尺寸,以屏幕对角线测量。   为简单起见,Android将所有实际屏幕尺寸分为四种通用尺寸:小尺寸,普通尺寸,大尺寸和超大尺寸。

     

屏幕密度

     

屏幕物理区域内的像素数量;通常称为dpi(每英寸点数)。

     

例如,与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域内具有更少的像素。   为简单起见,Android将所有实际屏幕密度分为四种通用密度:低,中,高和超高。

     

<强>取向

     

从用户的角度看屏幕的方向。这可以是横向或纵向,这意味着屏幕的宽高比分别为宽或高。请注意,默认情况下,不仅不同的设备在不同的方向上运行,但在用户旋转设备时,方向可能会在运行时发生变化。

     

解决

     

屏幕上的物理像素总数。添加对多个屏幕的支持时,应用程序无法直接使用分辨率;应用程序应仅关注屏幕尺寸和密度,如通用尺寸和密度组所指定的那样。

     

与密度无关的像素(dp)

     

在定义UI布局时应使用的虚拟像素单元,以与密度无关的方式表达布局尺寸或位置。   与密度无关的像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理dp单元的任何缩放。 dp单位到屏幕像素的转换很简单:px = dp *(dpi / 160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。在定义应用程序的UI时,应始终使用dp单位,以确保在不同密度的屏幕上正确显示UI。

这样,您的用户将查看与其设备大小相匹配的位图。

如果您需要帮助理解该文档,或者如果这不能正确回答您的问题,请告诉我。

答案 1 :(得分:0)

Pheonixblade9的答案是正确的,但是如果你决定自己重新调整大小,那么你可以实现onSizeChanged() method of the ImageView class。但请注意,onSizeChanged()方法来自Super-Class,View。

答案 2 :(得分:0)

如果图像太大(特别是如果图像大于任何分辨率),则可能会出现OOM(内存不足)错误。

在这种情况下,你必须保持内存效率,谷歌已经发布了一些关于这个问题的教程。

请参阅:http://developer.android.com/training/displaying-bitmaps/index.html