2010-04-01 45 views
30

我正在創建一個啓動畫面,它會在我的Android應用程序加載時顯示。我想以正確的尺寸創建它,以便Android不會自動縮放它以適應屏幕。 (這是一張位圖圖片,一張油畫的照片,所以我不能把它變成九塊補丁。)我的Android啓動屏幕應該是什麼樣的分辨率?

但是至少有三種重要的屏幕尺寸我關心:320x480,480x854(Droid )和480x800(Nexus One)。

我讀過關於supporting multiple screen sizes的文檔,但我仍然沒有看到我應該如何爲Droid/Nexus配置不同的啓動畫面(就Android而言,它們都是「hdpi」資源),並且我不知道我的啓動屏幕究竟有多大。 (Droid N1中OS標題欄/菜單有多高?)

我應該製作這些圖像的尺寸是多少,以及如何讓Android在給定的屏幕上使用正確的尺寸?

+0

爲什麼不創建一個300x300(或左右)的圖像並居中? – zildjohn01 2010-04-01 15:40:12

+0

您瞭解我的想法。我很想看到這個問題的答案。 – Felix 2010-04-01 15:45:34

+0

這是一個位圖圖像。居中它看起來很奇怪。 – 2010-08-26 21:36:42

回答

32

你不必擔心絕對屏幕尺寸或狀態欄或任何東西—這就是爲什麼我們有九個補丁的圖像。

我所做的是讓每個分辨率爲—的圖像看起來不錯,它基本上是透明背景上的徽標,底部有一些文字。

然後,我在頂部和側邊切掉了很多空間,在圖像上做了九條邊框,在左邊,右邊和頂邊附近放置了一個像素。這樣可以使圖像在側面和頂部均勻展開以填充屏幕。


編輯,響應以下丹的評論:

是的,有一種方法來確定哪些圖形應該用於其明確的屏幕尺寸,但它是deprecated

正如有drawable-hdpi-ldpi資源預選賽,它也可以使用drawable-HHHxWWW —更大的像素尺寸來第一次。

例如drawable-800x480drawable-854x480

+0

就我而言,我的形象不是一個標誌;它是一幅位圖肖像(這是一幅油畫的照片)。將這幅畫轉換爲九幅圖像不是一種選擇。 – 2010-08-23 22:43:22

+0

如果是這樣的圖像,我想你不會想要伸展它。所以我會將它縮放到每個密度最常見的分辨率,並允許它有一個透明的(或其他)邊界,其中有更多的可用屏幕空間。 – 2010-08-23 23:38:34

+0

添加邊框看起來很奇怪。相反,我想定義兩個資源:一個用於480x800,另一個用於480x854。那可能嗎? – 2010-08-26 20:16:02

6

好的,首先:您可以通過android.os.Build找到設備型號,然後使用它來確定要顯示哪個圖像。

其次,我個人不會打擾。佈局應該在dip中完成,因爲我相信每個android屏幕都是320x480 dip,並且android通過我的經驗很好地保持設備之間的寬高比。就我所遇到的情況而言,設置爲填充父級的480x800飛濺在N1和機器人上都非常可靠。

+0

你不需要看'Build'來找出屏幕分辨率或密度。設備之間的寬高比也可以變化很大。這就是爲什麼有「長」和「不長」的資源屬性。無論如何,這些都不重要,因爲我們有'drawable-xdpi'文件夾和9個補丁的圖像:) – 2010-04-01 18:09:12

+0

回到支持多屏幕文檔,你有一個非常好的觀點。 「長」和「不長」是我完全錯過的問題。您能否在極端情況下張貼您的九補丁解決方案的一些屏幕,以便我能夠了解這種方法如何適用於圖片等飛濺? – jqpubliq 2010-04-01 18:39:23

+1

你說「非常可靠」,但是當你使用像我的位圖圖像(油畫照片)時,在480x800與480x854之間出現明顯的失真。我想定義兩個資源,一個用於480x800,另一個用於480x854。那可能嗎? – 2010-08-26 20:18:35

1

我實現的另一個解決方案是將縮放類型爲「centerCrop」的ImageView填充到屏幕上(寬度和高度均爲「MATCH_PARENT」)。這樣,圖像不會被拉伸,而會沿着邊緣被裁剪。儘量不要把重要的內容(標誌和類似的東西)放在邊緣附近。如果它是一張照片,我希望邊緣是「可消耗的」並且可以裁剪掉。