2012-06-14 41 views
1

屏配件圖片我有一個佈局,看起來像這樣:安卓:與相同的密度,但不同大小

<LinearLayout> 
    <ImageView> 
    android:width="wrap_content" 
    android:height:"wrap_content" 
     ... 
    </ImageView> 

    <ImageView> 
    android:width="wrap_content" 
    android:height:"wrap_content" 
     ... 
    </ImageView> 

    <ImageView> 
    android:width="wrap_content" 
    android:height:"wrap_content" 
     ... 
    </ImageView> 

    <ImageView> 
    android:width="wrap_content" 
    android:height:"wrap_content" 
     ... 
    </ImageView> 
</LinearLayout> 

圖像的尺寸使得它們的填充540x960,275ppi屏幕上的畫面。但是當我在模擬器上運行我的應用程序時,最後一張圖像被壓扁了。

在閱讀Supporting Multiple Screens文檔後,我瞭解到,在dp中指定圖像尺寸而不是「wrap_content」應該覆蓋不同的密度屏幕。

但是,不同大小的屏幕呢?例如,如果我有兩個具有相同像素密度的不同大小的屏幕,我可以有一個條件,其中我的圖像適合其中一個屏幕,但不適用於其他屏幕,對不對?有兩種不同的佈局是唯一的解決方案嗎?例如,兩個不同大小(但相同密度)的屏幕可能有100和200個垂直像素可用,並且圖像大小爲150dps,因此它不適合第一個屏幕。我對嗎?

在此先感謝

+0

_dp_中的圖像大小與_wrap_content_ –

+0

相同 - 我不明白,這裏有什麼關係?我可以根據自己的需要設置任意大小的dp,但我認爲在我的問題中仍會遇到問題。 – Mayank

回答

2

幾乎任何它試圖以填補組位整個窗口而不願爲裁剪,縮放或留下未覆蓋區域的Android應用是註定要失敗的。有了這麼多不同的長寬比和屏幕尺寸,就不可能神奇般地適應一組固定長寬比和尺寸的內容。即使您提供了另一種處理不同尺寸屏幕的佈局,但並不能真正解決問題,因爲毫無疑問,屏幕尺寸與您所涉及的兩種屏幕尺寸不同的第三種設備在那裏。

請考慮使用一組圖像,其中包含可以在不失真度的情況下伸展或裁剪的部分。這可能只是一種純色,漸變,重複模式或其他可能的東西。或者,如果合適,您可以只允許滾動。所有這些都取決於你的內容以及你想要達到的目標。

+0

謝謝。我的應用程序是一個遊戲,滾動不是一個選項。我的主要遊戲面板是一組正方形,所以我將不得不以編程方式對其進行縮放,以使方塊不會變形。 但是,像按鈕等資產,有沒有辦法強制所有的位圖適合在屏幕上,或將不得不以編程方式完成? – Mayank

+0

當然。你的按鈕等不會填滿整個屏幕。只需將它們放置在相對於邊緣或相對於遊戲區域邊界的位置。 'RelativeLayout'可能在這裏很有用。再次,很難給你更多的更多細節。 – kabuko

1

請注意android:scaleType屬性ImageView。默認情況下,系統使用來自ImageView.ScaleType的值FIT_CENTER來縮放圖像。在這種情況下,系統會保持圖像的原始高寬比,並確保它完全符合設備的一側,無論是寬度還是高度。

編輯:

對不起,犯了很大的錯誤。圖像完全符合ImageView其中一方。

相關問題