2012-09-05 72 views
1

我爲Android做了一個應用程序,而且我試圖讓它在每個可能的設備上都能正常工作。爲此,我創建了具有不同密度(ldpi,mdpi,hdpi,xhdpi)的不同佈局(小,普通,大,xlarge),但是當我加載範圍爲layout-normal-xhdpi的模擬器時,應用程序不會開始併發出退出異常(強制關閉)。對於所有其他佈局,它完美地工作。如何支持所有屏幕?

它應該是什麼?

我使用的是minSDK = "8",但我也嘗試使用更高的API,但仍然無法正常工作。我還測試了4級以下的APIS,並且它完美地工作(這些API的問題不支持所有分辨率)。

+0

多屏幕設計佈局http://stackoverflow.com/q/8428096/1012284 –

+0

http://stackoverflow.com/questions/5582864/samsung-galaxy-tab-emulator-occupy-full-monitor-size/ 5583030#5583030 – R3D3vil

+0

關於這個問題,在developer.android.com有大量的文檔 –

回答

0

以下是你的日誌一些選擇線路,告訴你這是怎麼回事:

09-05 15:10:34.941: E/dalvikvm-heap(453): 9523200-byte external allocation too large for this process.

和:

09-05 15:10:35.112: E/AndroidRuntime(453): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget

你的位圖是非常大的(一個特別爲〜9MB)和你內存不足。使用一些較小的位圖。

+0

Tnx!這是正確的答案! – user1649287

0

只是把這些代碼在你的清單文件:

<supports-screens android:largeScreens="true" 
android:normalScreens="true" android:smallScreens="true" 
android:anyDensity="true" /> 
+0

我全都在「真」,並且我創建了layout-small-ldpi,layout-small-hdpi,layout-normal-ldpi,layout-normal -mdpi,layout-normal-hdpi,layout-normal-xhdpi,layout-large-ldpi,layout-large-mdpi,layout-xlarge-ldpi,layout-xlarge-mdpi,layout-xlarge-hdpi .... 所有的佈局都能正常工作,但是當我使用具有屬於layout-normal-xhdpi的分辨率和密度的模擬器時,應用程序將強行關閉... – user1649287

+0

@ user1649287你logCat sayi關於它。 – pyus13

+0

09-05 15:10:3​​2.421:D/dalvikvm(453):GC_EXTERNAL_ALLOC釋放42K,53%空閒2556K/5379K,外部2730K/3266K,暫停240ms 09-05 15:10:33.112:D/dalvikvm(453 ):GC_EXTERNAL_ALLOC釋放1K,53%空閒2555K/5379K,外部6449K/8053K,暫停60ms 09-05 15:10:3​​4.231:D/dalvikvm(453):GC_EXTERNAL_ALLOC釋放<1K,53%空閒2557K/5379K,外部10167K/13886K,暫停71ms 09-05 15:10:3​​4.821:D/dalvikvm(453):GC_EXTERNAL_ALLOC釋放1K,53%空閒2555K/5379K,外部14817K/16865K,暫停45ms 您可以在http: //pastebin.com/jFmFTNsT – user1649287

1

您可以(爲支持區域和語言)提供替代資源(可繪)和佈局。請參閱Android開發人員指南,瞭解如何支持多個屏幕,特別是有關Android如何選擇here提供的資源的部分。

此外,還提供了一個解釋here,只需滾動頁面以獲得有關該主題的清晰視圖。

+0

我創建了替代佈局,但問題仍然存在。只有這種類型的分辨率(640x960,320密度或1280x720,320密度),應用程序崩潰並強行關閉。 – user1649287

+0

我認爲您的問題可能在於您提供的資源。確保所有的drawable都提供了適當的尺寸。以下是Android網站的摘錄。 ** 「警告:如果您的所有資源都使用大於當前屏幕的大小限定符,系統將不會使用它們,並且您的應用程序將在運行時崩潰(例如,如果所有佈局資源都使用xlarge限定符,但該設備是正常大小的屏幕)。「** – Gan

+0

我們在清單中指定了:anyDensity =」false「。我想如果我們把這個命令放在清單中,會自動調整drawable到文件夾「drawables」到所有其他分辨率(ldpi,mdpi,hdpi,xhdpi)的大小。然後我們必須把這個命令放在manifest中:anyDensity =「true」並創建必要的文件夾(drawable-ldpi,drawable-mdpi,drawable-hdpi和drawable-xhdpi)? – user1649287