2010-11-14 49 views
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();

我得到的固定值,但是從我從裝置預期的分辨率不同(I設定爲480x800設備和我得到320x533)

,最後如果我嘗試使用視圖尺寸由劃分以創建刻度矩陣圖像的尺寸,結果,在屏幕上,是一個圖像比屏幕小得多...

我的問題是: 我應該問什麼問題,從哪個對象,以便在視圖內我可以繪製資源位圖它佔據了整個屏幕?

+0

它可能會幫助你,如果你用'Android'標記這個 – 2010-11-14 17:21:51

回答

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" /> 

然後,如果你需要改變它在運行時,所有您需要做的是改變的繪製。

+4

雖然我不會使用fitXY,除非它只是一個漸變或縱橫比無關緊要的東西(即使這樣,我可能不會這樣做) 。如果您想按比例縮放以填充屏幕,請使用centerCrop。 – kcoppock 2010-11-15 16:26:51

+0

好的提示!我不知道那件事。 – SlowSeer 2010-11-15 16:35:31