當前位置:首頁 » 安卓系統 » android獲取屏幕密度

android獲取屏幕密度

發布時間: 2022-06-11 13:52:43

『壹』 android 獲取屏幕寬高與解析度寬高是一回事嗎

下面的代碼即可獲取屏幕的尺寸: 在一個Activity的onCreate方法中,編寫以下代碼: DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 寬度(PX) int height = metric.heightPixels; // 高度(PX) float density = metric.density; // 密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; // 密度DPI(120 / 160 / 240) 需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。 所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens節點,如下: 這樣當前的Android程序就支持了多種解析度,那麼就可以得到正確的物理尺寸了。

『貳』 Android開發 怎樣獲取屏幕的寬高是多少厘米

我們需要獲取Android手機或Pad的屏幕的物理尺寸,以便於界面的設計或是其他功能的實現。下面就介紹講一講如何獲取屏幕的物理尺寸
下面的代碼即可獲取屏幕的尺寸。
在一個Activity的onCreate方法中,寫入如下代碼:

[java] view plain print?
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 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)

但是,需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。比如說,一部240x320像素的低密度手機,如果運行上述代碼,獲取到的屏幕尺寸是320x427。因此,研究之後發現,若沒有設定多解析度支持的話,Android系統會將240x320的低密度(120)尺寸轉換為中等密度(160)對應的尺寸,這樣的話就大大影響了程序的編碼。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens節點,具體的內容如下:
[html] view plain print?
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" />

<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" /> 這樣的話,當前的Android程序就支持了多種解析度,那麼就可以得到正確的物理尺寸了。

[java] view plain print?
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;
public class TextCanvasActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(new MyView(this));

//定義DisplayMetrics 對象
setContentView(R.layout.main);
DisplayMetrics dm = new DisplayMetrics();
//取得窗口屬性
getWindowManager().getDefaultDisplay().getMetrics(dm);

//窗口的寬度
int screenWidth = dm.widthPixels;

//窗口高度
int screenHeight = dm.heightPixels;
TextView textView = (TextView)findViewById(R.id.tv1);
textView.setText("屏幕寬度: " + screenWidth + "\n屏幕高度: " + screenHeight);
}
}

『叄』 android context.getResources().getDisplayMetrics().density 是什麼意思啊

android context.getResources().getDisplayMetrics()這是獲取手機屏幕參數,後面的density就是屏幕的密度,類似解析度,但不是。看一下這個http://blog.csdn.net/feng88724/article/details/6599821

『肆』 怎樣獲取Android手機屏幕的大小

要獲取手機屏幕大小,其實太簡單,只要用尺量取屏幕對角尺寸(單位:mm)。然後用這個尺寸除以25.4,就得到英寸了。譬如:127mm/25.4=5.0 英寸。

『伍』 android如何使用dip

我們在頁面布局的時候,經常會設置容器的長度,但是到底該使用哪個作為長度的單位而懊惱。
在Android中支持的描述大小區域的類型有以下幾種。
px(pixels)——像素:不同的設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。
dip(device independent pixels)——設備獨立像素:這個和設備硬體有關,一般哦我們為了支持WCGA、HVGA和QVGA推薦使用這個,不依賴於像素。等同於dp。
sp(scaled pixels—best for text size)——帶比例的像素。
pt(points)——磅:1pt = 1/72英寸
in(inches)——英寸
mm(millimeters)——毫米
到底px和dip有什麼區別呢?
dip != px
主要是針對不同設備而言的
在Density是160的設備上,比如用AVDManager創建的默認模擬器,dip和px是一樣的
但是如果同樣的代碼,換到不同Density的設備上,比如換到一個Density是240的設備上,dip和px體現出來的大小就不一樣了
px不管在什麼樣的設備上都是那樣長,但是dip會根據設備變化

WQVGA屏density=120;QVGA屏density=120;HVGA屏density=160;WVGA屏density=240;

density值表示每英寸有多少個顯示點,與解析度是兩個概念。

當屏幕density=240時使用hdpi標簽的資源
當屏幕density=160時,使用mdpi標簽的資源
當屏幕density=120時,使用ldpi標簽的資源。
不加任何標簽的資源是各種解析度情況下共用的。
布局時盡量使用單位dip,少使用px

換算公式為 pixs = dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
如何獲得設備的屏幕解析度和屏幕密度:
如解析度為480*800,密度為240的設備
DisplayMetrics dm =getResources().getDisplayMetrics();
dm.densityDpi=240
dm.widthPixels=480
dm.heightPixels=800

『陸』 如何獲取android:anyDensity值

android:anyDensity的意思是支持任意密度,這個值只是一個布爾值設置。是android自己匹配的。
android中,可以獲取密度,根據密度自己如果有需要可以做特殊處理:
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)

『柒』 如何獲取android模擬器的高度和寬度

// 獲取屏幕寬高(方法1)
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕寬(像素,如:480px)
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p)
Log.e(TAG + " getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 獲取屏幕密度(方法2)
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
screenWidth = dm.widthPixels; // 屏幕寬(像素,如:480px)
screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px)
Log.e(TAG + " DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 獲取屏幕密度(方法3)
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
int screenWidthDip = dm.widthPixels; // 屏幕寬(dip,如:320dip)
int screenHeightDip = dm.heightPixels; // 屏幕寬(dip,如:533dip)
Log.e(TAG + " DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);
screenWidth = (int)(dm.widthPixels * density + 0.5f); // 屏幕寬(px,如:480px)
screenHeight = (int)(dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px)
Log.e(TAG + " DisplayMetrics(222)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);

『捌』 在 android 中,在屏幕密度為160時,1pt 大概等於多少sp

在 Android 中, 1pt 大概等於 2.22sp以上供參考,
與解析度無關的度量單位可以解決這一問題。Android支持下列所有單位。
px(像素):屏幕上的點。
in(英寸):長度單位。
mm(毫米):長度單位。
pt(磅):1/72英寸。
dp(與密度無關的像素):一種基於屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px。
dip:與dp相同,多用於android/ophone示例中。
sp(與刻度無關的像素):與dp類似,但是可以根據用戶的字體大小首選項進行縮放。
解析度:整個屏是多少點,比如800x480,它是對於軟體來說的顯示單位,以px為單位的點。 density(密度)值表示每英寸有多少個顯示點,與解析度是兩個概念。apk的資源包中,

當屏幕density=240時使用hdpi標簽的資源
當屏幕density=160時,使用mdpi標簽的資源
當屏幕density=120時,使用ldpi標簽的資源。
一般android設置長度和寬度多用dip,設置字體大小多用sp. 在屏幕密度為160,1dp=1px=1dip, 1pt = 160/72 sp 1pt = 1/72 英寸.當屏幕密度為240時,1dp=1dip=1.5px.

『玖』 如何調整屏幕密度

1、確定手機的顯示density和解析度
desity翻譯成中文的意思是密度,在安卓系統中,desity是一個重要的顯示參數。如果density設置不當,如低解析度用了高density,會使得字體和其他一些UI顯示得特別小,甚至影響App兼容。要確定手機的density很簡單,使用RE文件管理器,開啟system目錄下的build.prop,找到「ro.sif.lcd_density=」的參數,後面的數字就是當前的density。
軟體名稱: RE文件管理器(RootExplorer)
軟體版本: 3.3.2
軟體大小: 2.38MB
軟體授權: 免費
適用平台: Android
下載地址: 一鍵下載 | 普通下載
找到build.prop文件,點擊編輯
這一行就是目前的系統density,需要做修改
確定屏幕解析度就更簡單了,自行查詢廠商官方數據即可。
2、根據解析度修改density
前面說到,如果density不對,會造成很多問題,所以修改解析度前,我們把density變更到對應的數值。以筆者的設備為例。筆者的設備默認解析度是1080p(1920x1080),density為480。如果要把解析度修改到720p(1280x720),那麼就按照下面的方法計算出需要修改的density數值。
需要修改成的density數值=480/(1080/720)=320
1080p的橫向、縱向解析度是720p的1.5倍,所以density需要除以1.5。如果你是2K解析度(2560x1440),想要修改成為1080p,那麼同理,計算公式如下:
需要修改的density數值=原density數值/(1440/1080)
使用RE文件管理器,編輯build.prop。將「ro.sif.lcd_density=」的參數改寫成為需要修改的數值,保存。
3、修改顯示解析度
修改density後,就可以接著修改顯示解析度了,這一步需要用到電腦,下面以Windows PC為例。首先需要安裝安卓adb開發包,下載後,按照壓縮包里的說明安裝。
軟體名稱: adb工具包
軟體版本: 1.0.32
軟體大小: 608KB
軟體授權: 免費
適用平台: Win2000 WinXP Win2003 Vista Win8 Win7

熱點內容
javafor循環嵌套if 發布:2025-08-18 23:28:21 瀏覽:297
西裝配領演算法 發布:2025-08-18 23:26:38 瀏覽:499
ecshopsql漏洞 發布:2025-08-18 23:17:01 瀏覽:798
mac臨時文件夾 發布:2025-08-18 23:14:55 瀏覽:765
阿里雲搭建傳奇伺服器 發布:2025-08-18 23:14:06 瀏覽:453
硬體加密卡 發布:2025-08-18 23:08:17 瀏覽:987
農信交易密碼指的是什麼密碼 發布:2025-08-18 23:03:20 瀏覽:585
數組存儲空間 發布:2025-08-18 23:01:50 瀏覽:748
如解壓游戲 發布:2025-08-18 22:57:02 瀏覽:576
如何復制頁游密碼 發布:2025-08-18 22:49:13 瀏覽:387