【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi
為什么80%的碼農都做不了架構師?>>> ??
Android的碎片化設備狀況,使得其API必須在不同的屏幕中選取合適的算法并展示,而在API級別上,的確也是有類似的定義,當然,我也終于明白,這是Android的顯示效果始終跟不上蘋果的原因
蘋果的封閉統一了其標準,在4s之前,根本沒必要有存在這個函數,即使是到了5,整個界面根本在像素級別上沒有什么變化,只是增加了一行的icon而已。
關于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
首先是幾個基本概念:
1.屏幕尺寸Screen size
即顯示屏幕的實際大小,按照屏幕的對角線進行測量。
為簡單起見,Android把所有的屏幕大小分為四種尺寸:小,普通,大,超大(分別對應:small, normal, large, and extra large).
應用程序可以為這四種尺寸分別提供不同的自定義屏幕布局-平臺將根據屏幕實際尺寸選擇對應布局進行渲染,這種選擇對于程序側是透明的。
2.屏幕長寬比Aspect ratio
長寬比是屏幕的物理寬度與物理高度的比例關系。應用程序可以通過使用限定的資源來為指定的長寬比提供屏幕布局資源。
3.屏幕分辨率Resolution
在屏幕上顯示的物理像素總和。需要注意的是:盡管分辨率通常用寬x高表示,但分辨率并不意味著具體的屏幕長寬比。
在Andorid系統中,應用程序不直接使用分辨率。
4.密度Density
根據像素分辨率,在屏幕指定物理寬高范圍內能顯示的像素數量。
在同樣的寬高區域,低密度的顯示屏能顯示的像素較少,而高密度的顯示屏則能顯示更多的像素。
屏幕密度非常重要,因為其它條件不變的情況下,一共寬高固定的UI組件(比如一個按鈕)在在低密度的顯示屏上顯得很大, 而在高密度顯示屏上看起來就很小。
為簡單起見,Android把所有的屏幕分辨率也分為四種尺寸:小,普通,大,超大(分別對應:small, normal, large, and extra large).
應用程序可以為這四種尺寸分別提供不同的資源-平臺將透明的對資源進行縮放以適配指定的屏幕分辨率。
5.設備獨立像素Density-independent pixel (dp)
應用程序可以用來定義UI組件的虛擬像素單元,通過密度無關的方式來描述布局尺寸和位置。
一個設備獨立像素相當于一個160 dpi屏幕上的物理像素。
在程序運行時,系統根據屏幕的實際密度透明的處理任何需要縮放的設備獨立像素單元,設備獨立像素轉換成屏幕實際像素的換算很簡單:pixels = dps * (density / 160).
例如在240 dpi的屏幕上,1個設備獨立像素等于1.5物理像素.為確保UI組件在不同的屏幕都能合適的展示,強烈建議使用設備獨立像素單元來定義你的應用程序UI。
四種屏幕尺寸分類:: small, normal, large, and xlarge
四種密度分類: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是: xhdpi是從?Android?2.2 (API Level 8)才開始增加的分類.
xlarge是從Android 2.3 (API Level 9)才開始增加的分類.
DPI是“dot per inch”的縮寫,每英寸像素數。
一般情況下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
參考:http://developer.android.com/images/screens_support/screens-ranges.png
兩種獲取屏幕分辨率信息的方法:
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
//這里得到的像素值是設備獨立像素dp
//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 這樣獲得的參數信息不正確,不要使用這種方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。這個得到的寬和高是空的。
如果需要為Android pad定制資源文件,則res目錄下的目錄可能為:
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-nodpi
drawable-nodpi-1024×600
drawable-nodpi-1280×800
drawable-nodpi-800×480
values
values-ldpi
values-mdpi
values-hdpi
values-xhdpi
values-nodpi
values-nodpi-1024×600
values-nodpi-1280×800
values-nodpi-800×480
參考:
http://developer.android.com/guide/practices/screens_support.html
轉載于:https://my.oschina.net/ranko/blog/115411
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP中问号?和冒号: 的作用
- 下一篇: 合理的嵌入式开发学习路线