一、Android手機屏幕大小不一,有480x320, 640x360, 800x480.怎樣才能讓App自動適應不一樣的屏幕呢? drawable- hdpi、drawable- mdpi、drawable-ldpi的區別:
html
(1)drawable-hdpi裏面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854) java
(2)drawable-mdpi裏面存放中等分辨率的圖片,如HVGA (320x480) android
(3)drawable-ldpi裏面存放低分辨率的圖片,如QVGA (240x320) 測試的時候能夠設定模擬器的分辨率知道了手機屏幕手機大小的分類之後,就開始着手設計本身的程序: windows
(a) 配置manifest 文檔位置android-sdk-windows/docs/guide/topics/manifest/supports-screens-element.html,能夠查看Multiple Screens Support.的設置,在manifest 中,加入supports-screens標籤支持多種屏幕顯示:ide
1 |
2 |
< manifest xmlns:android = "http://schemas.android.com/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)建立本身的layout 系統會根據機器的分辨率來分別到這幾個文件夾裏面去找對應的圖片。 還要在res目錄下建立不一樣的layout文件夾,好比layout-640x360,layout-800x480,全部的layout文件在編譯以後都會寫入R.java裏,而系統會根據屏幕的大小本身選擇合適的layout進行使用。 在個人項目裏建立的是layout-large,(注意!這裏有個插曲,我建立好layout-large之後發現使用800.480的屏幕仍是調用默認的layout,最後才發現layout-large裏面所用的資源,必定要放入drawable-hdpi裏面) 佈局
二、重力感應設置:常規的顯示爲HVGA-P(port),即分辨率爲320x480若是使用橫屏(land)。若是模擬器還沒有啓動,能夠在Eclipse的項目Run as=>Open Run Dialog對話框中設置,若是android模擬器已經啓動後,可使用快捷鍵F12或Ctrl+F11來切換。測試
三、佈局問題:若是不想讓軟件在橫豎屏之間切換,最簡單的辦法就是在項目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation屬性,他有如下幾個參數: "unspecified" 默認值 由系統來判斷顯示方向.斷定的策略是和設備相關的,因此不一樣的設備會有不一樣的顯示方向. "landscape" 橫屏顯示(寬比高要長) "portrait" 豎屏顯示(高比寬要長) "user" 用戶當前首選的方向 "behind" 和該Activity下面的那個Activity的方向一致(在Activity堆棧中的) "sensor" 有物理的感應器來決定。若是用戶旋轉設備這屏幕會橫豎屏切換。 "nosensor" 忽略物理感應器,這樣就不會隨着用戶旋轉設備而更改了 ( "unspecified"設置除外 )。 ui
有的多是程序設置的問題,若是想要屏幕保持豎屏,只設置android:screenOrientation,程序就回自動關閉。這時候能夠經過設置android:configChanges="orientation|keyboardHidden" 來解決,activity的具體屬性,能夠參考andriod doc: /android-sdk-windows/docs/guide/topics/manifest/activity-element.html spa