在我的应用程序中,对于相对布局的背景,我有一个非常大的网状壁纸(比任何手机/桌面屏幕都大)。所以,我想知道不是让 android 调整它的大小并让它看起来很糟糕,我可以自己调整它的大小。我想要做的是调整图像的大小(垂直和水平,以保持它看起来不错),直到图像和屏幕的高度匹配。
谢谢,感谢所有帮助-Lijap
在我的应用程序中,对于相对布局的背景,我有一个非常大的网状壁纸(比任何手机/桌面屏幕都大)。所以,我想知道不是让 android 调整它的大小并让它看起来很糟糕,我可以自己调整它的大小。我想要做的是调整图像的大小(垂直和水平,以保持它看起来不错),直到图像和屏幕的高度匹配。
谢谢,感谢所有帮助-Lijap
解决这个问题的方法是谷歌付出了很大的努力。
本质上,您应该为每个目标尺寸/布局创建不同的尺寸。
这在支持多个屏幕的 Google 开发指南文档中有广泛的解释(比我能给出的要好得多)
从该页面:
屏幕尺寸
实际物理尺寸,以屏幕的对角线测量。为简单起见,Android 将所有实际屏幕尺寸分为四种通用尺寸:小、普通、大和特大。
屏幕密度
屏幕物理区域内的像素数量;通常称为 dpi(每英寸点数)。
例如,与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域内的像素较少。为简单起见,Android 将所有实际屏幕密度分为四种广义密度:低、中、高和超高。
方向
从用户的角度来看屏幕的方向。这是横向或纵向,这意味着屏幕的纵横比分别是宽的或高的。请注意,不仅不同的设备在默认情况下以不同的方向运行,而且当用户旋转设备时,方向可能会在运行时发生变化。
解析度
屏幕上的物理像素总数。添加对多屏幕的支持时,应用程序不能直接使用分辨率;应用程序应该只关心屏幕尺寸和密度,由通用尺寸和密度组指定。
与密度无关的像素 (dp)
定义 UI 布局时应使用的虚拟像素单位,以与密度无关的方式表示布局尺寸或位置。与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统会根据使用中屏幕的实际密度,根据需要透明地处理 dp 单位的任何缩放。dp 单位到屏幕像素的转换很简单:px = dp * (dpi / 160)。例如,在 240 dpi 的屏幕上,1 dp 等于 1.5 个物理像素。在定义应用程序的 UI 时,您应该始终使用 dp 单位,以确保您的 UI 在不同密度的屏幕上正确显示。
这样,您的用户将看到与其设备尺寸相匹配的位图。
如果您需要帮助理解该文档,或者这不能正确回答您的问题,请告诉我。
如果图像太大(特别是如果它比任何分辨率都大),您可能会收到 OOM(内存不足)错误。
在这种情况下,你必须提高内存效率,谷歌已经发布了一些关于这个问题的教程。
见:http: //developer.android.com/training/displaying-bitmaps/index.html
Pheonixblade9 的回答是正确的,但是如果您决定自己重新调整大小,那么您可以实现ImageView 类的 onSizeChanged() 方法。但是请注意,onSizeChanged()
方法来自超类视图。