2013-01-16 81 views
0

我需要開發一個Android應用程序,並且我是這個環境的入門者。實際上,我們需要將Objective-C爲iPhone編寫的現有應用程序移植到Android。目前我們的目標是四款設備:三星S2,S3,Note和Note 2.該應用程序完全由按鈕和背景中的自定義圖像組成。根據我在iOS開發方面的經驗,我們爲非視網膜和視網膜設備設計了320x480和640x960背景,並且系統選擇了正確的背景,只要我們給出適當的@ 2x後綴。我想了解Android處理這種情況的方式。我已閱讀[Support Multiple Screens](支持多屏幕)(http://developer.android.com/guide/practices/screens_support.html)文檔,但我仍對一些事情感到困惑。Android中的背景圖像:每個獨立設備的獨立圖像?

據瞭解,大小和密度類別分別命名爲small,normal,large和xlarge以及ldpi,mdpi,hdpi,xhdpi。我們需要生成適當的位圖資源,並將它們放置在正確的「drawable-X-Y」文件夾下。這看起來像iOS中的@ 2x符號的高級版本。但我不完全知道我們應該如何準備背景圖片。例如,如果我計算正確,Note1和Note2的分辨率分別爲449x718dp和431x767dp,因此它們都屬於正常大小類別。如果我們爲Note1準備背景圖像,Note2的屏幕比例將不會相同,並且背景圖像將不得不調整大小。因此,該系統不能處理尺寸和像素密度相同的不同尺寸的設備。所以,我沒有得到的是這個系統如何使我們能夠在相同大小密度類別下爲相似設備重複使用相同的背景圖像。我們是否應該準備單獨的背景圖像,比如Note1和Note2?如果是這樣,這個分類的含義是什麼,我錯過了什麼?

+0

在Web開發中,開發人員最終意識到用戶可以以任意大小運行他們的瀏覽器,因此Web開發人員可以避免使用全屏幕背景,或者使用平鋪或其他各種技術。 Android的工作方式大致相同。事實上,除了iOS(也許還有少數其他有限的環境)之外,所有現代的桌面,移動和Web開發都假定應用的UI可以是任意大小的。 – CommonsWare

+0

@CommonsWare是的,你可能是對的,但不幸的是我沒有參與這個項目的UI設計階段,我現在沒有選擇改變它。 –

回答

1

我們的目標現在四個設備:三星S2,S3,注意和注2

除非你控制應用的分佈,並能以某種方式限制它到這些設備上運行,那麼最好的是那些樣本設備。例如,如果您計劃通過Play商店分發您的應用,則您的應用將以許多其他屏幕尺寸,密度和分辨率結束。雖然您可以通過清單中的<compatible-screens>元素限制大小/密度組合,但仍會有一系列分辨率。

因此,我沒有得到的是這個系統如何讓我們在相同大小密度類別下的相似設備上重複使用相同的背景圖像。我們是否應該準備單獨的背景圖像,比如Note1和Note2?

在那裏你可以限制你的應用程序的這四種設備的分佈,如果你想使用android.os.Build嗅探設備上,並選擇基於設備的型號不同的圖像的情況下,歡迎您做所以。

如果您將應用程序分發給更廣泛的受衆,您的應用程序可以在任意設備上運行,那麼您就沒有實際的方法來確定可能使用的所有可能的解決方案。因此,您無法爲每種可能的解決方案創建自定義圖像。在這種情況下,您需要重新思考應用程序的方法,從數百萬其他桌面和Web應用程序開發人員用於處理任意分辨率的技術中學習。

0

最好使用dp作爲您的控件尺寸,併爲Android應用程序使用9補丁。 Android SDK無法處理這種詳細的分類。 hdpi/mdpi large/xlarge屏幕在一定程度上可以提供幫助,但您的情況我認爲沒有簡單的方法。如果您絕對需要爲每個設備分別創建圖像,則可以考慮執行如下佈局:s2_layout_actvity.xml,s3_layout_activity.xml,並在每個設備中使用相應的圖像。在調用setContentView之前,檢測你的設備。