2010-12-19 235 views
3

我一直在學習Android和PhoneGap的開發主要從以下兩個來源:屏幕分辨率

http://news.softpedia.com/news/How-to-Run-Android-Applications-on-Ubuntu-115152.shtml

http://wiki.phonegap.com/w/page/30862722/phonegap-android-eclipse-quickstart

我有一個三星的Galaxy Tab。

什麼令我感到困惑,不過,有:

  1. 的屏幕尺寸時我在開發中使用以達到在這裏2010年第四季度Android手機和平板電腦的數量最多?您是否推薦WVGA800用於480x800屏幕?
  2. 大多數Android應用程序如何正確調整到我的7「三星Galaxy Tab中,即使它具有高分辨率?開發人員正在做什麼來實現這一目標?我的意思是,您可以讓您的應用程序具有一種彈性和或者,谷歌是否檢測到該應用是爲更小的屏幕設計的,因此它可以處理Galaxy Tab的大小調整?我是否需要更改AndroidManifest.xml中的內容?
  3. 我使用HVGA默認值當我切換到WVGA800時,它慢了很多,爲什麼呢?

回答

8

這裏是我的答案,完全從Android開發人員spective(我與PhoneGap的沒有經驗,所以我不能說是如何影響的東西):

  1. 對於大多數我的測試中,我專注於小320x480 480x800的和。對於平板電腦,您還需要針對Galaxy Tab進行專門測試(有關在仿真器中測試的更多詳細信息,請參閱)。

  2. Android中的佈局通常設計(或應該)以支持任何屏幕尺寸。通常,視圖設置爲MATCH_PARENT(以前爲FILL_PARENT)或WRAP_CONTENT,因此它們的大小取決於它們所在的佈局或其包含的內容,而不是顯示的大小。你也可以指定「DP」(密度無關像素),它會自動爲你縮放(所以2dp在HVGA設備上是2px,而在WVGA設備上是3px)。字體應該在SP中指定,它們基本上是相同的,但也要考慮用戶的字體偏好。

    您也可以應用拉伸視圖的重量。例如,如果你有一個水平方向的LinearLayout,你可以在其中放置兩個視圖(比如說一個TextView和一個EditTextView)。您可以將這兩個參數設置爲WRAP_CONTENT以確定它們的寬度和高度,但是您可能會向EditTextView添加一個layout_weight =「1」,告訴它填充剩餘的空間。此外,您可以爲大型設備創建特定佈局,以自定義Galaxy Tab的顯示。

  3. 分辨率越高,模擬器處理的像素越多。您還會注意到Android版本之間的性能差異。

話雖這麼說,它看起來像PhoneGap的或多或少像開發一個Web應用程序,在這種情況下,你會發現Android Web Apps articles有幫助的。

編輯(因爲我的格式是越來越亂了響應的第一個評論):

沒有,有沒有什麼在AndroidManifest其他改變不是指定你支持什麼樣的:

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

對於CSS,你可以specify styles based on density或使用標準的百分比,電磁測量等

+0

優秀的,周到的答案。所以,爲了補充這一點,我需要以某種方式設置我的AndroidManifest.xml來處理DP和SP?那麼CSS樣式怎麼樣 - 我是否也需要在DP和SP中使用測量? – Volomike 2010-12-19 20:03:23

+0

我在使用更高分辨率的手機時注意到的最大問題是,在480像素的屏幕上尺寸適當的文本在720屏幕上突然變小。你知道任何簡潔的字體大小更大的屏幕? – 2013-03-25 23:06:14

1

我已經用我的以下表現我的應用程序可以在任何尺寸上運行的開始:

<supports-screens 
android:smallScreens="true"     
android:normalScreens="true"     
android:largeScreens="true"     
android:anyDensity="true" /> 
<uses-sdk android:minSdkVersion="4"></uses-sdk>