2011-03-15 198 views
3

我目前被困在理解文檔可能存在的問題。屏幕尺寸和佈局

我一直在閱讀有關supporting multiple screens的文檔,並且我在HTC DesireHTC Legend之間存在一些與layoyt區別的問題。

從我的理解中,通過查看開發人員文檔中的屏幕矩陣,Legend是一個「正常」屏幕,Desire是一個大屏幕。

添加布局目錄layout /,layout-small /和layout-large解決了我的小屏幕設備問題。但是現在,當試圖讓這個應用在Desire和Legend中看起來很好的時候,看起來他們都使用了正常的屏幕布局。

任何提示,解決方案或解釋?

回答

2

的HTC Desire - 其屏幕是480x800的WVGA800 - 被認爲是正常的屏幕,華電國際,而HTC傳奇 - 其屏幕爲320×480的HVGA - 被認爲是正常屏幕-mdpi(請看錶1 here)。因此,兩個設備都使用普通的屏幕布局和mdpi圖形,但由於Desire具有hdpi屏幕,因此Android會擴大圖形(通常結果是它們看起來模糊)。爲了使佈局在Desire上看起來很好,您應該提供hdpi圖形並將它們放在名爲drawable-hdpi的文件夾中。

+0

這解決了我的問題 - 爲特定設備添加額外的可繪製設計使設計工作。 – Repox 2011-03-15 11:43:27

0

在佈局中,我使用佈局權重來指定尺寸。這將在很大程度上幫助在各種屏幕設備上運行應用程序。

檢查關於這裏layout_weights,
http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

+0

我不確定這是如何回答我的問題 - 我想知道爲什麼,根據他們使用相同佈局的兩個設備的文檔和規格,儘管我指定了不同的佈局。這必須有一個解釋可以幫助解決問題。 – Repox 2011-03-15 11:25:41

0

嘗試在普通佈局中使用wrap_content,fill_parent或dp單元。 無論如何,你正在做的幾個佈局是一個單調乏味,但也許更好的選擇。 在您的清單

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

設置此並獲得使用屏幕的尺寸與

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
height = displaymetrics.heightPixels; 
width = displaymetrics.widthPixels; 
Log.e("FirstImage", "Width = "+width+"Height = "+height); 

一旦你的屏幕,我想你知道如何給它分配一個特定的預定義的大小(由你)佈局。

我希望這會有所幫助,如果您仍然有任何疑問,請在下面留言,我們將會看到如何解決它!