0

我的问题是这样的:我使用 android 模拟器,针对 android 2.2。我创建了一个自定义视图,我想处理我的应用程序的背景,在这个视图中我只想显示一个图像,但我希望它填满整个屏幕。

我从我的“活动”初始化视图,如下所示:BackgroundView bw = new BackgroundView(this);

问题:在我的硬盘上,我使用的资源图像是 500x375 像素。调用后:

位图 m_resourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.landscape_1); int nWidth = m_resourceBitmap.getWidth(); int nHeight = m_resourceBitmap.getHeight();

返回的 nWidth 和 nHeight 取决于我放置资源的位置,如果我将它放在“drawable-mdpi”中,我会得到原始尺寸,否则我会得到其他尺寸。

另一方面,如果我通过 this.getWidth(); 询问视图的宽度和高度;this.getHeight();

我得到固定值,但与设备的预期分辨率不同(我设置了 480x800 设备,得到 320x533)

最后,如果我尝试使用视图尺寸除以图像尺寸来创建比例矩阵,那么屏幕上的结果是比屏幕小得多的图像......

我的问题是:我应该问什么问题以及从哪些对象中可以在 View 中绘制资源位图以使其占据整个屏幕?

4

1 回答 1

9

您不能在布局 XML 文件中完成所有操作吗?(这是我用于菜单背景图像的示例)

<ImageView android:id="@+id/menuBackground"
        android:src="@drawable/imageResource"
        android:adjustViewBounds="true"
        android:gravity="center_vertical"
        android:scaleType="fitXY"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_x="0dp" 
        android:layout_y="0dp" />

然后,如果您需要在运行时更改它,您所要做的就是更改可绘制对象。

于 2010-11-14T17:33:39.247 回答