匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 9 年前

Android程式開發

現在 Android 手機有很多款式,像Desire、Wildfire等等。如果設計一個程式畫面在 Desire 剛剛好,但是在 Wildfire 就會擠不下。想請問高手這樣的情形在程式中或 Manifest 中該如何設定?

有查到在 Manifest 中加入

<supports-screens

android:resizeable="true"

android:smallScreens="true"

android:normalScreens="true"

android:largeScreens="true"

android:anyDensity="true"/>

但是還是沒效果,我該如何做呢?

謝謝

已更新項目:

我是用Java寫的。

所以沒有用一種 layout 再加上其他程式碼設定或方法就可以適用不同 screen size 嗎?

1 個解答

評分
  • 其威
    Lv 7
    9 年前
    最佳解答

    你應該針對不同的螢幕尺寸提供不同的 layout 檔,並且在指定大小的時候使用 dip(Device Independent Pixel)。

    請參考:http://developer.android.com/guide/practices/scree...

    如果沒有辦法準備那麼多各種實體設備,也可以建立多個不同 screen size 的 AVD(Android Virtual Device)來測試不同螢幕狀況下的畫面。

    2011-09-11 22:50:08 補充:

    另外,你問錯版了,應該至少去 Java 版問 = =

    還是說... 你用 NDK 寫程式??

    2011-09-11 22:52:25 補充:

    另外,誠心建議你...

    寫 Android 程式之前,官方的 dev-guide 跟 resource 最好先統統唸過一遍。

    Dev Guide: http://developer.android.com/guide/index.html

    Resources: http://developer.android.com/resources/index.html

    2011-09-11 23:11:13 補充:

    你當然可以在程式中處理不同 screen size 的 layout,但是這會比分開做不同 layout xml 麻煩。

    例如你可以看一下內建的 Music Player,在 landscape 與 portrait 的時候他 layout 安排是不一樣的。

    在 landscape 的時候歌曲資訊與控制列(上一首、播放/暫停、下一首)是在 album cover 的右手邊,但是在 portrait 的時候是在下面。

    2011-09-11 23:11:36 補充:

    Android Market 也是類似的概念,landscape 的時候程式的圖示跟名稱在左邊、詳細資訊與評價那些東西在右邊,但是 portrait 的時候就變成圖示跟名稱在上面、其他東西在下面。

    2011-09-11 23:15:55 補充:

    我說的「內建的 Music Player」指的是 com.android.music 這東西...

    http://www.google.com.tw/codesearch#cZwlSNS7aEw/pa...

    2011-09-11 23:19:15 補充:

    Android 提供 LayoutManager 讓你可以用 xml 設計 layout、在 runtime inflate 它,就是為了將介面與控制邏輯分開,是一種 MVC 的 model。

    你不應該在 Controller 那邊考慮 View 要怎麼呈現。

    2011-09-11 23:19:31 補充:

    通常在了解一個東西不夠透徹之前就想要偷懶,都反而會事倍功半..........

    2011-09-11 23:22:08 補充:

    如果你不了解 MVC,可以先參考 Wikipedia:http://zh.wikipedia.org/wiki/MVC,再考慮要不要買一本 Design Pattern...

    2011-09-11 23:35:13 補充:

    而且,android 在 configuration change 的時候,會 destroy 整個 UI 再重新載入對應的 layout 檔。

    所謂「configuration change」是指例如螢幕旋轉(orientation change)、或是連接上 car dock 之類的時候。

    如果你想在程式中處理 layout,就必須自己 handle 這些東西...

    具體的行為是要寫 onConfiurationChanged()...

    2011-09-11 23:37:10 補充:

    本來是只要將跟 configuration 無關的東西丟給 onRetainNonConfigurationInstance(),在 onCreate() 的時候 getLastNonConfigurationInstance() 就好的事情,變成要處理整個 layout...

    你說呢?

還有問題?馬上發問,尋求解答。