2011-09-17 85 views
4

我必須爲平板電腦和手機編寫應用程序。這兩個應用程序具有相同的功能,但它們具有絕對不同的GUI。手機和平板電腦上的不同GUI,但同樣的應用程序

例如,手機在主屏幕上有2個按鈕,但平板電腦將有5個,因爲我們想使用我們有的空間。我知道,我能夠定義不同的佈局,取決於dpi,但我應該如何處理Activiies中的佈局?我認爲,使用if(sdkVersion> = 11)bla..bla ...不會通過孔代碼和孔項目工作!這是我必須使用多個應用程序支持的情況嗎?

readed文章: http://developer.android.com/guide/practices/screens_support.html

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

http://developer.android.com/guide/market/publishing/multiple-apks.html

我不`噸明白我應該如何處理這個問題......請如果你能幫助,THX

回答

5

把你的平板電腦佈局在res/layout-large/。把你的手機佈局放在res/layout/。將它們命名相同。您的活動將根據運行的設備加載正確的活動。當您撥打findViewById()來檢索額外的按鈕,並看到您收到null時,請忽略它們。

您可能需要更多的地方像佈局res/layout-large-land/(山水平板電腦),res/layout-xlarge/(如果你想「比在5-9" 的東西片不同來處理10+範圍內),res/layout-small/(如果你想處理< 3「屏幕)等等。

+0

Hello CommonsWare! 感謝您的評論,但」當您調用findViewById()來檢索額外的按鈕,並看到您返回null時,忽略它們。「是我想要的因爲我們打算開始一個大型項目,並且有很多你認識的活動,並且總是做一個if(findViewById(R.id.btn7)== null)會使得代碼變得不那麼容易。尋找一個優雅的解決方案:) – Karoly

+1

@Kolyoly:「並且總是d如果(findViewById(R.id.btn7)== null)使得代碼難以閱讀,那麼容易「 - 什麼」總是「?使用稱爲「數據成員」的那些花哨的Java事物之一來容納小部件或「boolean」。或者重新組織您的用戶界面以利用片段,因此在每個活動使用一個片段的手機中,您的主要活動會加載一個可以顯示兩個片段的佈局。 – CommonsWare

+0

,但我看到freakments自帶API級別11.對於平板電腦,好吧,但如果我們想要在手機上運行應用程序(2.1,2.2.2.3)和talbet,我該如何使用fregments – Karoly

相關問題