日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android的单位px,pt,dp,sp总结和获取屏幕分辨率

發布時間:2025/3/20 Android 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android的单位px,pt,dp,sp总结和获取屏幕分辨率 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
px: pixels(像素). 是屏幕中可以顯示的最小單位元素,px是設備密度有關的,不同設備顯示效果不同。因為由于不同的設備密度不同,密度就是單位英寸的像素不同,在不同的手機上顯示的大小就不同

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方向的像素密度。橫向和縱向的這個值都是相同的,原因是大部分手機屏幕使用正方形的像素點。


package com.example.disolaymetrics;import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Display; import android.view.Menu; import android.view.MenuItem; import android.view.WindowManager; import android.widget.TextView;public class MainActivity extends Activity {TextView mWidthPx,mHeightPx,mScreen,mWidthDpi,mHeightDpi,mDensity,mDensityDPI;TextView mScreenWidth,mScreenHeight;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();//實例化DisplayMetrics對象DisplayMetrics mDisplaymetics=new DisplayMetrics();//WindowManager獲得默認Display對象Display mDispaly=getWindowManager().getDefaultDisplay();//默認Display對象把值傳入DisplayMetrics對象中mDispaly.getMetrics(mDisplaymetics);mWidthPx.setText("寬像素(px):"+mDisplaymetics.widthPixels);mHeightPx.setText("高像素(px):"+mDisplaymetics.heightPixels);mScreen.setText("屏幕分辨率:"+mDisplaymetics.widthPixels+"*"+mDisplaymetics.heightPixels);mWidthDpi.setText("寬Dpi(dpi):"+(int) mDisplaymetics.xdpi);mHeightDpi.setText("高Dpi(dpi):"+(int) mDisplaymetics.ydpi);mDensity.setText("屏幕邏輯密度(屏幕密度/160):"+(int) mDisplaymetics.density);mDensityDPI.setText("屏幕密度(dpi):"+mDisplaymetics.densityDpi); }public void initViews() {mWidthPx=(TextView) findViewById(R.id.textView1);mHeightPx=(TextView) findViewById(R.id.textView2);mScreen=(TextView) findViewById(R.id.textView3);mWidthDpi=(TextView) findViewById(R.id.textView4);mHeightDpi=(TextView) findViewById(R.id.textView5);mDensity=(TextView) findViewById(R.id.textView6);mDensityDPI=(TextView) findViewById(R.id.textView7); }} 注意要加權限!!!!!!
<?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总结和获取屏幕分辨率的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。