1、Android手機(jī)屏幕大小不一,有480x320, 640x360, 800x480.怎樣才能讓App自動適應(yīng)不同的屏幕呢? drawable- hdpi、drawable- mdpi、drawable-ldpi的區(qū)別:
(1)drawable-hdpi里面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的圖片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的圖片,如QVGA (240x320) 測試的時候可以設(shè)定模擬器的分辨率知道了手機(jī)屏幕手機(jī)大小的分類以后,就開始著手設(shè)計(jì)自己的程序:
(a) 配置manifest 文檔位置android-sdk-windows/docs/guide/topics/manifest/supports-screens-element.html,可以查看Multiple Screens Support.的設(shè)置,在manifest 中,加入supports-screens標(biāo)簽支持多種屏幕顯示:
1 | |
2 | <manifest xmlns:android="http://schemas./apk/res/android"> |
3 | <supports-screens android:largescreens="true" |
4 | android:normalscreens="true" |
5 | android:smallscreens="true" |
6 | android:resizable="true" |
7 | android:anydensity="true"> |
8 | </supports-screens> |
9 | </manifest> |
(b)創(chuàng)建自己的layout 系統(tǒng)會根據(jù)機(jī)器的分辨率來分別到這幾個文件夾里面去找對應(yīng)的圖片。 還要在res目錄下創(chuàng)建不同的layout文件夾,比如layout-640x360,layout-800x480,所有的layout文件在編譯之后都會寫入R.java里,而系統(tǒng)會根據(jù)屏幕的大小自己選擇合適的layout進(jìn)行使用。 在我的項(xiàng)目里創(chuàng)建的是layout-large,(注意!這里有個插曲,我創(chuàng)建好layout-large以后發(fā)現(xiàn)使用800.480的屏幕還是調(diào)用默認(rèn)的layout,最后才發(fā)現(xiàn)layout-large里面所用的資源,一定要放入drawable-hdpi里面)
2、重力感應(yīng)設(shè)置:常規(guī)的顯示為HVGA-P(port),即分辨率為320x480如果使用橫屏(land)。如果模擬器尚未啟動,可以在Eclipse的項(xiàng)目Run as=>Open Run Dialog對話框中設(shè)置,如果android模擬器已經(jīng)啟動后,可以使用快捷鍵F12或Ctrl+F11來切換。
3、布局問題:如果不想讓軟件在橫豎屏之間切換,最簡單的辦法就是在項(xiàng)目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation屬性,他有以下幾個參數(shù): "unspecified" 默認(rèn)值 由系統(tǒng)來判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會有不同的顯示方向. "landscape" 橫屏顯示(寬比高要長) "portrait" 豎屏顯示(高比寬要長) "user" 用戶當(dāng)前首選的方向 "behind" 和該Activity下面的那個Activity的方向一致(在Activity堆棧中的) "sensor" 有物理的感應(yīng)器來決定。如果用戶旋轉(zhuǎn)設(shè)備這屏幕會橫豎屏切換。 "nosensor" 忽略物理感應(yīng)器,這樣就不會隨著用戶旋轉(zhuǎn)設(shè)備而更改了 ( "unspecified"設(shè)置除外 )。
有的可能是程序設(shè)置的問題,如果想要屏幕保持豎屏,只設(shè)置android:screenOrientation,程序就回自動關(guān)閉。這時候可以通過設(shè)置android:configChanges="orientation|keyboardHidden" 來解決,activity的具體屬性,可以參考andriod doc: /android-sdk-windows/docs/guide/topics/manifest/activity-element.html





