Android的单位px,pt,dp,sp总结和获取屏幕分辨率
pt: point,是一個標準的長度單位,1pt=1/72英寸,一般pt都會做字體的單位來使用
dp(dip): density dependent pixels(密度獨立像素). 不同設備有不同的密度,不同的顯示效果,這個和設備硬件有關。和px相比,它在不同密度的屏幕上顯示的比例保持一致
密度Density:
Android中的密度就是屏幕每英寸包含的像素數目,單位是dpi(dots per inch).比如實體手機屏幕的寬是2英寸長是3英寸,
如果它的分辨率是320*480像素,那么每英寸包含的像素點就是320/2=160dpi(橫向),480/3=160dpi,那么這個屏幕的密度就是160dpi,
如果它的分辨率是640*960像素,那么這個屏幕的密度就是320dpi。
dp和px轉換:
Android規定,在160dpi的屏幕上,1dp=1px,在320dpi的屏幕上,1dp=2px
計算公式:px = dp * (dpi / 160),說明1dp代表了多少個px。以160dpi為基準,密度是160dpi的多少倍就乘以dp就是px值
比如:在160dpi上,組件設置的width=200dp,那么它的實際px值就是200*(160/160)=200px,在320dpi的密度上,實際px值就是200*(320/160)=400px
sp:可伸縮像素,解決文字大小適配問題。
獲取屏幕分辨率:
在一個Activity的onCreate方法中,寫入如下代碼:
DisplayMetrics metric = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric);int width = metric.widthPixels; // 屏幕寬度(像素)int height = metric.heightPixels; // 屏幕高度(像素)float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240) 注:構造函數DisplayMetrics 不需要傳遞任何參數;獲得WindowManager 之后, getDefaultDisplay() 方法將取得的默認的顯示信息,返回的是一個Display 對象,此對象的getMetrics(Metrics metrics)方法把分辨率信息傳到 DisplayMetrics 對象中。
通過 DisplayMetrics.toString()方法可以獲取到 DisplayMetrics的大部分信息,以下是模擬器上不同分辨率所有對應的信息:
QVGA : {density=0.75, width=240, height=320, scaledDensity=0.75, xdpi=120.0, ydpi=120.0} HVGA : {density=1.0, width=320, height=480, scaledDensity=1.0, xdpi=160.0, ydpi=160.0} WVGA : {density=1.5, width=480, height=800, scaledDensity=1.5, xdpi=240.0, ydpi=240.0} 其中,density為顯示的邏輯分辨率;width及height就為屏幕分辨率(為絕對寬度與高度),與fields中的widthPixels及 heightPixels一致;scaleDensity與density一致;xdpi及ydpi為x方向與y方向的像素密度。橫向和縱向的這個值都是相同的,原因是大部分手機屏幕使用正方形的像素點。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.disolaymetrics"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="22"android:targetSdkVersion="22" /><!-- 讀手機狀態權限 --><uses-permission android:name="android.permission.READ_PHONE_STATE"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
總結
以上是生活随笔為你收集整理的Android的单位px,pt,dp,sp总结和获取屏幕分辨率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java集合中的排序API分析
- 下一篇: 总结一哈JDK和Tomcat的环境变量配