本人,初級程式猿一枚。本著攻城獅的精神,最近研究了下 android 螢幕適配的問題 ,這裡做下總結。
一、為了解決螢幕適配的問題,一般採用以下幾種辦法:
1.使用dp布局,盡量少使用px,文書處理的話用sp
2.如果使用切圖的話,要注意存放切圖的位置,hdpi,mdpi,xhdpi,xxhdpi。還有selector等檔案如果有用到切圖的時候也注意存放位置昂~~~~
3.自定義view
4.多使用match_parent和weight屬性。
5.使用百分比 布局。
6. 在不同的dimen中設定不同的值
7.scrollview和listview(recyclerview)也是不錯的選擇
8.其實我也不知道寫什麼,呵呵,那麼這個就寫做乙個有情懷的android攻城獅,不要為了適配而適配,要站在使用者的角度去思考問題,怎麼流暢,怎麼好用,然後去選擇方式去適配。
二、首先解釋下3個概念:
2.dip或dp(與密度無關的畫素)。這個和裝置硬體有關,為了支援wvga、hvga和qvga 5進製空間推薦使用這個。一種基於螢幕密度的抽象單位。設定一些view的寬高可以用這個,一般情況下,在不同解析度,都不會有縮放的感覺。如果用px的話,320px佔滿hvga的寬度,到wvga上就只能佔一半不到的螢幕了,那一定不是你想要的。
3.sp(與刻度無關的畫素)放大畫素– 主要處理字型的大小。
dp與px換算公式:
pixs =dips * (densitydpi/160).
dips=(pixs*160)/densitydpi
dp與px轉換的方法:
public static int dip2px(context context, float dipvalue)
public static int px2dip(context context, float pxvalue)
三、個人的一些總結
android中提供了三個存放的資料夾,分別為hdpi,mdpi,ldpi,google文件上說,andriod系統會根據手機螢幕的大小及螢幕密度去選擇不同資料夾下的資源,以此來實現在不同大小不同螢幕解析度下適配的問題。
當螢幕density=240時,使用hdpi 標籤的資源 當螢幕density=160時,使用mdpi標籤的資源 當螢幕density=120時,使用ldpi標籤的資源。
各個資料夾的使用順序:在乙個低解析度的手機上,android就會選擇ldpi資料夾下的,但是如果沒有在ldpi的資料夾下找見相關的資源檔案,android系統會首先從hdpi資料夾中選擇檔案,然後對資源進行縮放處理,顯示在螢幕上;如果hdpi資料夾下也沒有的話,會在預設的drawable資料夾中尋找。
總之,為了適屏,android會在高解析度資料夾下讀取,縮小,從低解析度資料夾下讀取,進行放大處理後 再適屏。
四、百分比適屏
這個不用說了,適屏肯定好用。根據本人寫h5的經驗,web的大小可以隨意改變,適屏用的就是百分比。所以這個用在android 肯定好用多了 ,o(∩_∩)o~
五、設定dimen
<?xml version="1.0" encoding="utf-8"?>
120dip
220dip
<?xml version="1.0" encoding="utf-8"?>
80dip
六、manifest的配置
要在工程的androidmanifest.xml檔案中,加入supports-screens節點,具體的內容如下:
這樣的話,當前的android程式就支援了多種解析度,那麼就可以得到正確的物理尺寸了
android螢幕適配
1 配置android應用程式適配在不同的手機上,需要在androidmanifest.xml檔案的manifest標籤中新增子元素 1 2 3 4 5 6 7 8 9 10 manifestxmlns android supports screens android smallscreens tr...
Android螢幕適配
在sdk中的幫助文件中。develpe training best practices supporting multiple screens 這裡有多屏適配的介紹。現做簡單記錄。screen size small 至少 426dp x 320dp normal 至少 470dp x 320dp l...
android螢幕適配
ui在不同的螢幕畫素或大小中顯示效果可能會不同 1 建議使用盡量使用線性布局和相對布局,基本上不會產生螢幕大小不適應的問題 2 設定控制項寬高的時候使用單位dip dp 是根據當前裝置大小比例計算出來的 3 文字設定盡量使用sp單位 4 盡量不使用px設定大小 畫素px和dip相互轉換工具,實現兩種...