android螢幕分類與螢幕相關引數定義

2021-06-22 03:29:19 字數 2512 閱讀 1295

android裝置執行在各種不同的螢幕中,這些螢幕有著不同的screen sizes(螢幕大小)和screen densities(螢幕密度)。screen sizes表示螢幕的實際物理大小,比如5寸手機,7寸平板,8寸平板。而screen densities表示螢幕的畫素密度,比如同樣5寸的手機,有720p的,有1080p的。screen sizes和screen densities從兩個維度表示了螢幕的屬性,他們互不影響。

螢幕的真實物理尺寸,以螢幕的對角線測量,一般以inch(寸)為單位,比如5寸手機,7寸平板。如下圖所示:

根據不同的螢幕大小,可以把螢幕大小分為下面幾種型別:

這種分類方式是以第一部android手機g1為基準劃分的,g1屬於normal分類。隨著android手機螢幕的尺寸大小越來越豐富,這種分類方式就顯得簡單粗暴,無法滿足分類的精確度(比如5寸手機和7寸平板同屬於large分類)。所以在android3.2以後就沒有使用這種分類方式了,新的分類方式通過可用螢幕寬度來定義,在工程的資源檔案中(如layout)使用,下面是一些例子:

這些分類的定義在後面會詳細講解,現在大家先有個概念。

在講screen densities前有幾個概念需要理解:px,ppi,dpi,resolution。

px就是大家經常說的畫素(pixel),畫素是影象顯示的基本單位,pixel由picture和element兩個單詞組合而成,有影象元素的意思,每個這樣的資訊元素是乙個抽象的取樣,經常以乙個點或者方塊表示。

ppi(pixels per inch)表示影象中每英吋的畫素數,ppi會影響螢幕輸出的質量,高的ppi在每英吋下包含的畫素數多,顯示效果更好。對於一張100 x 100畫素的,100ppi的輸出顯示的大小為1" x 1"(1"表示1寸),在10ppi的輸出顯示的大小為10" x 10"。也就是說,同一張在不同ppi下顯示的大小不一樣,ppi越大,顯得越小。

dpi(dots per inch)跟ppi是比較容易混淆的兩個概念,dpi表示螢幕每英吋物理顯示點的個數,物理顯示點是螢幕的最小顯示單元。假如影象輸出與螢幕的顯示點一一對應,即乙個pixel在乙個dot上顯示,那麼dpi的值等於ppi。但如果用乙個1200dpi的螢幕全屏輸出乙個300ppi的影象,那這時每個pixel由16個dots組成。(

dpi與ppi的關係)

resolution表示螢幕解析度,以畫素為單位表示,如螢幕解析度為1920 x 1080,表示螢幕x,y方向分別可以顯示1920和1080個畫素點。解析度在應用實現多屏適配的時候不起直接作用,多屏適配只與screen sizes和screen densities相關。

對以上的幾個概念有了初步認識後,下面我們來看screen densities的分類,在android中,screen densities是根據dpi來進行分類的,如下:

為了簡單,android根據dpi的值對screen densities進行了分類,每種分類包含了乙個區域的dpi值,如上圖所示。這種分類方式也是以第一部android手機g1為基準劃分的,g1的dpi為160dpi,屬於mdpi的分類。

下面ppi的計算公式,ppi是pixels per inch的意思,裝置的ppi用螢幕對角線中每inch的pixel數來表示,

比如nexus5手機,解析度為1920 x 1080,螢幕大小為4.95寸,那麼ppi的計算如下:

那螢幕的dpi如何計算了,如果是按照定義的話,公式跟ppi的計算公式是一樣的,只需把畫素數換成dot的數量,但是我們並不知道dot的數量是多少。不過,我們可以通過程式獲取裝置的dpi值,**如下:

displaymetrics dm = getresources().getdisplaymetrics();

int dpi = dm.densitydpi;

通過上面**獲得的dpi=480,也就是說dpi不等於ppi,如果乙個pixel用乙個dot顯示,按道理是應該相等的,但為什麼會不等呢?這個我也還沒搞清楚。不管怎樣,要獲取螢幕的dpi,不能用計算ppi的公式去計算獲得,要從**中去獲取。

android裝置的螢幕的差異通過兩個維度來劃分,screen sizes 和 screen densities,為了簡單,android對不同的 screen sizes 和 screen densities做了歸類。它們兩者互不影響,乙個表示螢幕的真實物理大小,乙個表示螢幕的畫素密度,這兩者的不同組合構成了各種各樣的裝置螢幕。在對android應用做多屏適配時,它們是主要考慮的因素。

Android 解螢幕鎖與點亮螢幕

最近在做乙個鬧鐘的專案,當鬧鐘響起的時候需要用到自動解鎖和點亮螢幕,因此記錄一下解螢幕鎖與點亮螢幕的 keyguardmanagerkm keyguardmanager getsystemservice context.keyguard service 得到鍵盤鎖管理器物件 keyguardlock...

Android 解螢幕鎖與點亮螢幕

當android手機 應該是所有的手機都這樣 收到簡訊或者 時,會自動點亮螢幕,解開螢幕鎖,以方便使用者即時操作,下面用 來實現這一功能 keyguardmanager km keyguardmanager getsystemservice context.keyguard service 得到鍵盤...

android螢幕適配

1 配置android應用程式適配在不同的手機上,需要在androidmanifest.xml檔案的manifest標籤中新增子元素 1 2 3 4 5 6 7 8 9 10 manifestxmlns android supports screens android smallscreens tr...